Validador de cartão de débido e crédito em Perl
Publicado por Perfil removido (última atualização em 21/04/2014)
[ Hits: 47.496 ]
Antes de tudo, o objetivo daqui é sempre o conhecimento, não criei o código com intuito de ser usado para "banker" (apesar de isso acontecer), mas sim para entender como podemos validar cartões de crédito em aplicações diversas, como por exemplo sites de compras online ou software de vendas, PDVs etc...
#!/usr/bin/perl
#############################################
##                                         ##
##  http://koubacktr.wordpress.com     ##
##  http://twitter.com/kouback_tr_     ##
##                                         ##
#############################################
## Validador de cartão de créditoe  débito ##
## Verify card                             ##
## By KoubackTr 2014                       ##
#############################################
print <<a;
===========================================================
Valid Card // Validador de cartões de crédito e débito //
===========================================================
a
$card=$ARGV[0] || die "Use: validcard.pl <card number> \n";
my $cartao = length($card);
if($cartao==16){ # exigi 16 digitos no numro do cartão
# DIVIDINDO STRINGS E PEGANDO VALORES PARA ENGENHARIA
$numerocartao = "$card";
my @validade = split(//,$numerocartao);
$v1=$validade[0]*2," ";
$s1=$validade[1];
$v2=$validade[2]*2," ";
$s2=$validade[3];
$v3=$validade[4]*2," ";
$s3=$validade[5];
$v4=$validade[6]*2," ";
$s4=$validade[7];
$v5=$validade[8]*2," ";
$s5=$validade[9];
$v6=$validade[10]*2," ";
$s6=$validade[11];
$v7=$validade[12]*2," ";
$s7=$validade[13];
$v8=$validade[14]*2," ";
$s8=$validade[15];
$v9=$validade[16]*2,"";
my $n1="$v1$v2$v3$v4$v5$v6$v7$v8$v9";
my @validade2 = split(//,$n1);
    $vv0=$validade2[0];
    $vv1=$validade2[1];
    $vv2=$validade2[2];
    $vv3=$validade2[3];
    $vv4=$validade2[4];
    $vv5=$validade2[5];
        $vv6=$validade2[6];
    $vv7=$validade2[7];
    $vv8=$validade2[8];
    $vv9=$validade2[9];
    $vv10=$validade2[10];
    $vv11=$validade2[11];
    $vv12=$validade2[12];
    $vv13=$validade2[13];
    $vv14=$validade2[14];
    $vv15=$validade2[15];
    $vv16=$validade2[16];
    $vv17=$validade2[17];
    $vv18=$validade2[18];
    $vv19=$validade2[19];
############### // Somando tudo // ##############
my $d0 = $vv0 + $vv1 + $s1 + $vv2 + $s2 +$vv3 + $s3 + $vv4 + $s4 + $vv5 + $s5 + $vv6 + $s6 + $vv7 + $s7 + $vv8 + $s8 + $vv9 + $vv10 + $vv11 + $vv12 + $vv13 + $vv14 + $vv15 + $vv16 + $vv17 + $vv18 + $vv19;
##### CONDIÇÃO: se ultimo numero do resultado da soma é = 0 isso significa que é divisivel por 10
#####           se é divisiovel por 10, é válido, se não, é inválido
my $val=$d0 / 10;
my @validade3 = split(//,$d0);
    $val0=$validade3[0];
    $val1=$validade3[1];
}else{
die "\n\t\t\t[!] Numero inválido, deve conter 16 digitos.\n\n";
}
if($val1==0){
print "\n\t\t\t[+] Cartão Válido\n\n";   #Retorno válido
}else{
print "\n\t\t\t[!] Cartão Inválido\n\n"; #Retorno inválido
}
Orientação a Objetos - Criando e usando uma classe em Perl
GenHASH - Gerador de hashes SHA1, MD5 e Base64 em Perl
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (6)
Mint Xfce não mantém a conexão no wi-fi (0)
Programa fora de escala na tela do pc (36)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









