Validador de cartão de crédito com Omega2

Começo o artigo esclarecendo que existem geradores de números de cartão de crédito e esse programa que escrevi para validar é normalmente utilizado para garantir no mínimo a entrada correta dos números antes de fazer o envio dos dados online.

Na época tive que criar esse código para fazer validação prévia de cartões de crédito e escrevi em C. Depois de um tempo, publiquei o código em Python no VivaOLinux. Agora estou aproveitando o algorítmo para fazer essa brincadeira no Onion Omega2, com entrada a partir de um teclado e exibição no display OLED do módulo de expansão.

Atualizar o sistema




Precisamos estar na última versão do sistema. Mesmo que esse artigo seja lido no futuro, só há benefícios em manter o sistema atualizado, então, faça-o.

ssh root@192.168.1.3
oupgrade -force

Troque pelo IP correspondente ao do seu Omega. Se não fez ainda o primeiro setup, sugiro que clique no menu MIPS e veja os artigos anteriores relacionados ao Omega. Depois disso, você deve conseguir ver os módulos carregados para HID:

Validador de cartão de crédito

Instalar o suporte ao display e o Python

Agora vamos instalar as dependências para esse projeto:

opkg update
opkg install python-light python-codecs pyOledExp ca-bundle

Feito isso, já podemos escrever o nosso programa no desktop/notebook e transferí-lo por ssh:

from OmegaExpansion import oledExp as oe
from time import sleep
oe.setVerbosity(0)

stat = oe.driverInit()

if stat:
    print "Driver nao inicializado. Ouch..."
    exit()

oe.write("Credit card validator")
oe.setCursor(2,0)

total = 0
oe.write("Enter numbers only: ")
oe.setCursor(3,0)

while True:
    numbers = ''
    total = 0
    numbers = raw_input()
    oe.write(numbers)
    if not len(numbers) == 16:
        oe.clear()
        oe.setCursor(0,0)
        oe.write("Invalid length")
        exit()

    for i in range(0,16,2):
        acum=int(numbers[i])*2
        if (acum > 9):
            acum=acum-9
    
        total=total+acum
    
    for i in range(1,17,2):
        total=total+int(numbers[i])
    
    if ((total%10) != 0 or total > 150):
        oe.setCursor(6, 6)
        oe.write("Calling 911...")
    else:
        oe.setCursor(5, 3)
        oe.write("Wow. Good card.")
    
    oe.setCursor(7,0)
    msg = "Clear in "
    for i in range(8,-1,-1):
        counter = i+1
        msg     += "%s" % counter 
        oe.write(msg)
        msg = "Clear in "
        sleep(1)
    
    oe.clear()
    oe.setCursor(0,0)
    oe.write("Credit card validator")
    oe.setCursor(2,0)
    oe.write("Enter numbers only: ")

E enviamos para o Omega:

scp creditCard.py root@192.168.1.3:~/

Lembrando mais uma vez, troque o IP pelo IP do seu Omega.

Executando o programa

Agora por ssh, digite:

python creditCard.py

E após o carregamento do texto na tela, entre com um número de cartão inválido e com um válido para testar. Um número de teste que casa com o algorítmo é o 1231.2312.3123.1234. Entre apenas com os números para fazer a validação, porque eu não fiz um código elaborado para tratar todas as excessões. Veja o video:

Onde comprar

Não é fácil achar esse tesourinho, mas por sorte você encontra tanto a dock Arduino como A Omega nesse link da UsinaInfo, não perca a oportunidade de brincar com uma MIPS!

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!