#!/usr/bin/perl # $carddata = `/home/mann/seatsale/readcard 1000`; # exits when card stops moving $carddata = `/home/mann/seatsale/readcard_with_parity_check 1000`; # exits when card stops moving # print $carddata; chomp $carddata; # $commandstring = "echo \'$carddata\' >> cards.txt"; # print $commandstring; # system($commandstring); # $commandstring2 = "tail -1 cards.txt"; # system($commandstring2); #echo "hello^world" | sed s/"\^"/\ / $carddata =~ s/\^/\ /; $carddata =~ s/\^/\ /; $carddata =~ s/\^/\ /; $carddata =~ s/\^/\ /; $carddata =~ s/\^/\ /; $carddata =~ s/\$/\ /; $carddata =~ s/\$/\ /; $carddata =~ s/\$/\ /; $carddata =~ s/\$/\ /; $carddata =~ s/\$/\ /; $carddata =~ s/\//\ /; $carddata =~ s/\//\ /; $carddata =~ s/\//\ /; $carddata =~ s/\//\ /; $carddata =~ s/\//\ /; $carddata =~ s/,//; $carddata =~ s/,//; $carddata =~ s/,//; $carddata =~ s/,//; $carddata =~ s/,//; $carddata =~ s/,//; $carddata =~ s/,//; ###print $carddata . "\n"; # $carddatatruncated = $carddata; $carddata =~ m/(.*)\s*/; $carddatatruncated = $1; $carddata =~ m/B(\d)/; # match B and a number ### print $1 ."\n"; # for debugging, prints the returned value of above line $cardtype = $1; # if failing to match 3 letters or more, in a row # (assuming at least first or last name is >= 3 letters) $carddata =~ m/([a-zA-Z]{3})/; # match 3 of them; () stores in variable # print $1; # print length($1); if (length($1)>=3) { if ($cardtype == 3) { $carddata =~ s/B(\d* ?\d* ?\d*) //; # ? matches 0 or 1 of the prev char $cardnumber = $1; print "American Express: "; print $cardnumber . "\n"; $carddata =~ s/(\w*) //; $cardlastname = $1; print "Last Name: "; print $cardlastname . "\n"; $carddata =~ s/(\w*) //; $cardfirstname = $1; print "First Name: "; print $cardfirstname . "\n"; $carddata =~ s/.* //; $carddata =~ s/(\d\d)(\d\d)//; $endyear = $1; $endmonth = $2; #print "Expiry Date: "; #print $endmonth . "/" . $endyear ."\n"; $carddata =~ s/(\d\d)(\d\d)//; # replace and match any 2 digits $startyear = $1; #sed operator takes first () into $1 and 2nd () to $2.. $startmonth = $2; #print "Start Date: "; #print $startmonth . "/" . $startyear ."\n"; print $startmonth."/".$startyear." THRU ".$endyear."/".$endmonth."\n"; $carddata =~ s/(\d*)//; # sed out everything past last string of numbers $secret = $1; print "PIN or Secret Number: "; print $secret . "\n"; } if ($cardtype == 4) { $carddata =~ s/B(\d{16}) //; $cardnumber = $1; print "Visa: "; print $cardnumber . "\n"; $carddata =~ s/(\w*) //; $cardlastname = $1; print "Last Name: "; print $cardlastname . "\n"; $carddata =~ s/(\w*) //; $cardfirstname = $1; print "First Name: "; print $cardfirstname . "\n"; $carddata =~ s/.* //; $carddata =~ s/(\d\d)(\d\d)//; $year = $1; $month = $2; print "Expiry Date: "; print $month . "/" . $year ."\n"; $carddata =~ s/(\d*)//; $secret = $1; print "Secret Number: "; print $secret . "\n"; #print $carddata . "\n"; } if ($cardtype == 5) { $carddata =~ s/B(\d{16}) //; $cardnumber = $1; print "Mastercard: "; print $cardnumber . "\n"; $carddata =~ s/(\w*) //; $cardlastname = $1; print "Last Name: "; print $cardlastname . "\n"; $carddata =~ s/(\w*) //; $cardfirstname = $1; print "First Name: "; print $cardfirstname . "\n"; #$carddata =~ m/(\w\.)/; #print $1 . "\n"; #parse out extra space or title... might want to put back title? $carddata =~ s/.* //; $carddata =~ s/(\d\d)(\d\d)//; $year = $1; $month = $2; print "Expiry Date: "; print $month . "/" . $year ."\n"; $carddata =~ s/(\d*)//; $secret = $1; print "Secret Number: "; print $secret . "\n"; #print $carddata . "\n"; } } print "Identifier: ".$carddatatruncated."\n"; chomp $carddatatruncated; system("echo $carddatatruncated >> logfile.txt");