Underc0de

Programación Scripting => Python => Mensaje iniciado por: khyv123 en Julio 22, 2011, 02:42:52 PM

Título: [Python] Verificación de tarjetas de crédito (16 caracteres) + CCV2
Publicado por: khyv123 en Julio 22, 2011, 02:42:52 PM
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)


Código (python) [Seleccionar]

# ******************************************
#     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)
Título: Re:[Python] Verificación de tarjetas de crédito (16 caracteres) + CCV2
Publicado por: [C]orrupted[B]yte en Julio 22, 2011, 02:55:02 PM
Es un algoritmo demaciado sencillo =) aunque no me lo sabia, aun se sigue usando CCV2?
Título: Re:[Python] Verificación de tarjetas de crédito (16 caracteres) + CCV2
Publicado por: JaAViEr en Julio 22, 2011, 05:45:54 PM
Recuerdo haber hecho esto en Batch, el algoritmo a veces lo hice a mano
jajaja

Saludos.
Título: Re: [Python] Verificación de tarjetas de crédito (16 caracteres) + CCV2
Publicado por: JafethZ27 en Febrero 24, 2022, 11:41:47 AM
Podrías comunicarte conmigo +522821607265