[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: php

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: php
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:

- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta