Código que verifica tarjetas de credito American Express, VISA, MasterCard y Discover de 16 caracteres y obtiene el código cvv2.
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:
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)
# ******************************************
# 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:
- http://en.wikipedia.org/wiki/Card_security_code (http://en.wikipedia.org/wiki/Card_security_code)
- www.soulblack.com.ar/repo/papers/algoritmo_cvv2.pdf (http://www.soulblack.com.ar/repo/papers/algoritmo_cvv2.pdf)
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.
Podrías comunicarte conmigo +522821607265