[Python] Verificación de tarjetas de crédito (16 caracteres) + CCV2

Iniciado por khyv123, Julio 22, 2011, 02:42:52 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Código que verifica tarjetas de credito American Express, VISA, MasterCard y Discover de 16 caracteres y obtiene el código cvv2.

Código: text

Sintaxis: CreditCard.py <codigo>

- <codigo> debe ser un numero de tarjeta de credito de 16 caracteres.
- Tarjetas compatibles : American Express, VISA, MasterCard y Discover.

Ejemplos:
        CreditCard.py 3735270656921892
        CreditCard.py 4759912389050064
        CreditCard.py 5413880183226195


Ejemplo de uso:

Código: text
D:\>CreditCard.py 3735270656921892

Tarjeta American Express valida (cvv2: 7624)

D:\>CreditCard.py 4759912389050064

Tarjeta VISA valida (cvv2: 356)

D:\>CreditCard.py 5413880183226195

Tarjeta MasterCard valida (cvv2: 122)


Código: python

# ******************************************
#     Autor : khyv123 
#     Fecha de creacion : 22/07/11
#     Creado para : www.underc0de.org
# ******************************************

import sys

def sintaxis():
print '\n Sintaxis: CreditCard.py <codigo>'
print '\n - <codigo> debe ser un numero de tarjeta de credito de 16 caracteres.'
print ' - Tarjetas compatibles : American Express, VISA, MasterCard y Discover.'
print '\n Ejemplos:'
print '\tCreditCard.py 3735270656921892'
print '\tCreditCard.py 4759912389050064'
print '\tCreditCard.py 5413880183226195'

def numbers(num):
return filter(lambda x:ord(x)<48 or ord(x)>57,num)=='' and len(num)==16

if len(sys.argv)==2 and numbers(sys.argv[1])==True:

dic={3:'American Express',4:'VISA',5:'MasterCard',6:'Discover'}
code=sys.argv[1]

if int(code[0]) in dic:
tipo=dic[int(code[0])]
sm=reduce(lambda x,y:x+y,map(lambda x:x%2==0 and int(code[x])*2%9 or int(code[x]),range(len(code))))
if sm%10==0 and sm<=150:
if tipo=='American Express':
cvv2=code[5]+code[7]+code[11]+(code[2]!='9' and str(int(code[2])+1) or '1')
else:
cvv2=code[7]+code[11]+(code[2]!='9' and str(int(code[2])+1) or '1')
sys.exit('\n- Tarjeta %s valida (cvv2: %s)' % (tipo,cvv2))

else:
sys.exit('\nTarjeta no valida.')
else:
sys.exit('\nTipo de tarjeta no reconocido.')
else:
sintaxis()



Si alguien quiere más  información sobre el tema puede visitar estos enlaces:

- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Es un algoritmo demaciado sencillo =) aunque no me lo sabia, aun se sigue usando CCV2?

Recuerdo haber hecho esto en Batch, el algoritmo a veces lo hice a mano
jajaja

Saludos.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login