#!/usr/bin/perl sub x0 { my ($str, $key) = @_; my $enc_str = ''; for my $char (split //, $str){ my $decode = chop $key; $enc_str .= chr(ord($char) ^ ord($decode)); $key = $decode . $key; } $enc_str =~ s/(.)/sprintf("%x",ord($1))/eg; return $enc_str; } $flag="GOT IT!!!"; $authenticated=0; $str2auth = $ARGV[0]; $authenticated=1; try(""); sub try { my $base = $_[0]; print "TRYING: $str2auth $base\n"; for (my $a=33; $a<=126; $a++) { my $str = $base . chr($a); $str=~s/X/XX/g; my $encoded = x0($str,$str2auth); #print "enc_str = $encoded\n"; $encoded =~ tr/!-~/P-~!-O/; #print "enc_str (trailed) = $encoded\n"; my $dd=""; for(my $i=0;$i<=length($encoded);$i++){ $dd.=hex(ord(substr($encoded,$i,1))+$str2auth); } #print " dd = $dd\n"; for(my $i=0;$i<=$str2auth;$i++){ my $pos=hex(chr(ord(substr($encoded,$i,1)+$str2auth))); $dd=~s/2/$pos/g; } $must = " 78874 87897 98658 87896865978788648788 65859865898659687897"; if ((substr($dd, 25, 1) ne "") && (substr($dd, 25, 1) ne "7")) { next; } if ((substr($dd, 26, 1) ne "") && (substr($dd, 26, 1) ne "8")) { next; } if ((substr($dd, 27, 1) ne "") && (substr($dd, 27, 1) ne "8")) { next; } if ((substr($dd, 28, 1) ne "") && (substr($dd, 28, 1) ne "7")) { next; } if ((substr($dd, 29, 1) ne "") && (substr($dd, 29, 1) ne "4")) { next; } if ((substr($dd, 35, 1) ne "") && (substr($dd, 35, 1) ne "8")) { next; } if ((substr($dd, 36, 1) ne "") && (substr($dd, 36, 1) ne "7")) { next; } if ((substr($dd, 37, 1) ne "") && (substr($dd, 37, 1) ne "8")) { next; } if ((substr($dd, 38, 1) ne "") && (substr($dd, 38, 1) ne "9")) { next; } if ((substr($dd, 39, 1) ne "") && (substr($dd, 39, 1) ne "7")) { next; } if ((substr($dd, 45, 1) ne "") && (substr($dd, 45, 1) ne "9")) { next; } if ((substr($dd, 46, 1) ne "") && (substr($dd, 46, 1) ne "8")) { next; } if ((substr($dd, 47, 1) ne "") && (substr($dd, 47, 1) ne "6")) { next; } if ((substr($dd, 48, 1) ne "") && (substr($dd, 48, 1) ne "5")) { next; } if ((substr($dd, 49, 1) ne "") && (substr($dd, 49, 1) ne "8")) { next; } if ((substr($dd, 52, 1) ne "") && (substr($dd, 52, 1) ne "8")) { next; } if ((substr($dd, 53, 1) ne "") && (substr($dd, 53, 1) ne "7")) { next; } if ((substr($dd, 54, 1) ne "") && (substr($dd, 54, 1) ne "8")) { next; } if ((substr($dd, 55, 1) ne "") && (substr($dd, 55, 1) ne "9")) { next; } if ((substr($dd, 56, 1) ne "") && (substr($dd, 56, 1) ne "6")) { next; } if ((substr($dd, 57, 1) ne "") && (substr($dd, 57, 1) ne "8")) { next; } if ((substr($dd, 58, 1) ne "") && (substr($dd, 58, 1) ne "6")) { next; } if ((substr($dd, 59, 1) ne "") && (substr($dd, 59, 1) ne "5")) { next; } if ((substr($dd, 60, 1) ne "") && (substr($dd, 60, 1) ne "9")) { next; } if ((substr($dd, 61, 1) ne "") && (substr($dd, 61, 1) ne "7")) { next; } if ((substr($dd, 62, 1) ne "") && (substr($dd, 62, 1) ne "8")) { next; } if ((substr($dd, 63, 1) ne "") && (substr($dd, 63, 1) ne "7")) { next; } if ((substr($dd, 64, 1) ne "") && (substr($dd, 64, 1) ne "8")) { next; } if ((substr($dd, 65, 1) ne "") && (substr($dd, 65, 1) ne "8")) { next; } if ((substr($dd, 66, 1) ne "") && (substr($dd, 66, 1) ne "6")) { next; } if ((substr($dd, 67, 1) ne "") && (substr($dd, 67, 1) ne "4")) { next; } if ((substr($dd, 68, 1) ne "") && (substr($dd, 68, 1) ne "8")) { next; } if ((substr($dd, 69, 1) ne "") && (substr($dd, 69, 1) ne "7")) { next; } if ((substr($dd, 70, 1) ne "") && (substr($dd, 70, 1) ne "8")) { next; } if ((substr($dd, 71, 1) ne "") && (substr($dd, 71, 1) ne "8")) { next; } if ((substr($dd, 80, 1) ne "") && (substr($dd, 80, 1) ne "6")) { next; } if ((substr($dd, 81, 1) ne "") && (substr($dd, 81, 1) ne "5")) { next; } if ((substr($dd, 82, 1) ne "") && (substr($dd, 82, 1) ne "8")) { next; } if ((substr($dd, 83, 1) ne "") && (substr($dd, 83, 1) ne "5")) { next; } if ((substr($dd, 84, 1) ne "") && (substr($dd, 84, 1) ne "9")) { next; } if ((substr($dd, 85, 1) ne "") && (substr($dd, 85, 1) ne "8")) { next; } if ((substr($dd, 86, 1) ne "") && (substr($dd, 86, 1) ne "6")) { next; } if ((substr($dd, 87, 1) ne "") && (substr($dd, 87, 1) ne "5")) { next; } if ((substr($dd, 88, 1) ne "") && (substr($dd, 88, 1) ne "8")) { next; } if ((substr($dd, 89, 1) ne "") && (substr($dd, 89, 1) ne "9")) { next; } if ((substr($dd, 90, 1) ne "") && (substr($dd, 90, 1) ne "8")) { next; } if ((substr($dd, 91, 1) ne "") && (substr($dd, 91, 1) ne "6")) { next; } if ((substr($dd, 92, 1) ne "") && (substr($dd, 92, 1) ne "5")) { next; } if ((substr($dd, 93, 1) ne "") && (substr($dd, 93, 1) ne "9")) { next; } if ((substr($dd, 94, 1) ne "") && (substr($dd, 94, 1) ne "6")) { next; } if ((substr($dd, 95, 1) ne "") && (substr($dd, 95, 1) ne "8")) { next; } if ((substr($dd, 96, 1) ne "") && (substr($dd, 96, 1) ne "7")) { next; } if ((substr($dd, 97, 1) ne "") && (substr($dd, 97, 1) ne "8")) { next; } if ((substr($dd, 98, 1) ne "") && (substr($dd, 98, 1) ne "9")) { next; } if ((substr($dd, 99, 1) ne "") && (substr($dd, 99, 1) ne "7")) { next; } print "MUST = $must\n"; print " dd = $dd\n"; #print "MUST = $must\n"; #print " dd = " . substr($dd,25,5).substr($dd,35,5).substr($dd,45,5).substr($dd,52,20).substr($dd,80,20) . "\n"; if(substr($dd,25,5).substr($dd,35,5).substr($dd,45,5).substr($dd,52,20).substr($dd,80,20) eq '7887487897986588789686597878864878865859865898659687897'){ print "WON: $str2auth\n"; print "WON: $str\n"; print $flag."\r\n"; exit; } try($str); } }