Manual
do
Maker
.
com
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 algoritimo 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.
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.
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.
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:
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!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.