Код:
# ------------------------------------------------------------------
# xcrack.pl -- Unix/Linux Password Cracker -- V1.00
# By manicx -- 22nd Dec 98 -- email from site
# Get the latest from http://www.infowar.co.uk/manicx
# usage = perl xcrack.pl PASSWORDFILE WORDFILE
# ---------------------------------------------------
# works under Windows all *nix i can find
# ---------------------------------------------------
# Updates: Now split into subs and read entire wordfile into an
# array for extra speed plus breaks out of compare loop now on
# password crack. Also it will now check for disabled accounts and
# non-passworded accounts
# This will probably be the last version of this.
# I'll be moving to sockets now, look out on the site above.
# start xcrack.pl
#system("cls"); # This will clear the terminal/Dos screen
# Then stick this info on the screen
print ("\n \t\t-------------------------------");
print ("\n \t\t\t Xcrack V1.00");
print ("\n \t\thttp://www.infowar.co.uk/manicx");
print ("\n \t\t-------------------------------\n");
if ($#ARGV < 1) {
usage(); # Print simple statement how to use program if no arguments
exit;
}
$passlist = $ARGV[0]; # Our password File
$wordlist = $ARGV[1]; # Our word list
# ------------- Main Start ---------------------------------
getwordlist(); # getting all words into array
getpasslist(); # getting login and password
print ("\n\tFinished - ", $wordlist, " - Against - ", $passlist);
#------------------------------------------------------------
sub getpasslist{
open (PWD, $passlist) or die (" No Good Name for password File ", $passlist, "\n");
while (<PWD>)
{
($fname, $encrypted, $uid, $gid, $cos, $home, $shell) = split ( /:/);
if ($encrypted eq "\*") # Check if the account is Locked
{
print "Account :", $fname, " \t ------ Disabled\n";
next; # Skip to next read
}
if ($encrypted eq "x") # Check if the account is Locked
{
print "Account :", $fname, " \t ------ Disabled\n";
next; # Skip to next read
}
if ($encrypted eq "") # Check if the account has No Password
{
print "Account :", $fname, " \t ------ No Password\n";
next; # Skip to next read
}
enccompare(); # Call on next Sub
}
close (PWD); #closes the password file
}
#------------------------------------------------------------
sub getwordlist{
open (WRD, $wordlist) or die (" No Good Name for wordfile ", $wordlist, "\n");
while (<WRD>)
{
@tmp_array = split; # Getting the entire contents of our
push @word_array, [@tmp_array]; # word file and stuffing it in here
}
close (WRD); #closes the wordlist
}
#------------------------------------------------------------
sub enccompare{
for $password ( @word_array)
{ $encword = crypt (@$password[0], $encrypted); # encrypt our word with the same salt
if ($encword eq $encrypted) # as the encrypted password
{
print "Account :",$fname, " \t ------ \aPassword : ", @$password[0], "\n";
last; # Print the account name and password if broken then break loop
}
}
}
#------------------------------------------------------------
sub usage { print "usage = perl xcrack.pl PASSWORDFILE WORDFILE\n"; }
# End xcrack.pl # simple usage if no #ARGV's




