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