• Viernes 29 de Marzo de 2024, 15:44

Autor Tema:  Desencriptar md5 (script perl)  (Leído 3633 veces)

henrywallace

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: es
  • #/bin/bash!
    • Ver Perfil
Desencriptar md5 (script perl)
« en: Martes 19 de Julio de 2011, 15:54 »
0
Bueno pues ya suele pasar a veces eso de que.. pierdes una contraseña y resulta que tienes el hash en md5 y claro hay que desencriptarlo no? bueno pues aquí os dejo este codigo en perl que guardado con la extension .pl y ejecutado desde una terminal perl codigo.pl... con los parametros correctos i con el hash nos sacará la contraseña en un tiempo que depende de la potencia de nuestro pc y de la longitud de la contraseña

Código: [Seleccionar]
#!/usr/bin/perl
# MD5 Hash Bruteforce Kit
# Info[0] : Este crackeador no es de los mas rapidos pero es 100% funcional y me ha ayudado mucho
# Info[1] : Escrito bajo linux
# Info[2] : Si sabes perl puedes acabar de modificar este código para que crackee otros algoritmos o lo que quieras :)

$ver = "01";

$dbgtmr = "1"; #Intervall of showing the current speed + lastpassword in seconds.



if ($dbgtmr<=0){ die "Set dbgtmr to a value >=1 !\n";};
use Digest::MD5 qw(md5_hex);
use Time::HiRes qw(gettimeofday);

if ($ARGV[0]=~"a") {
$alpha = "abcdefghijklmnopqrstuvwxyz";}
if ($ARGV[0]=~"A") {
$alpha = $alpha. "ABCDEFGHIJKLMNOPQRSTUVWXYZ";}
if ($ARGV[0]=~"d") {
$alpha = $alpha."1234567890";}

if ($ARGV[0]=~"x") {

$alpha = $alpha. "!\"\$%&/()=?-.:\\*'-_:.;,";}

if ($alpha eq "" or $ARGV[3] eq "") {usage();};
if (length($ARGV[3]) != 32) { die "Sorry but it seems that the MD5 is not valid!\n";};

print "Selected charset for attack: '$alpha\'\n";
print "Going to Crack '$ARGV[3]'...\n";

for (my $t=$ARGV[1];$t<=$ARGV[2];$t++){
crack ($t);
}

sub usage{
print "\n\nMD5 Hash Bruteforce Kit v_$ver\n";
print "by n0mad (k1d.und\@gmail.com-bonn-rhein-sieg.de)\n";
print "http:\/\/home.inf.fh-rhein-sieg.de\/~ikarim2s\/\n\n";
print "USAGE\n";

print "./md5crack <charset> <mincount> <maxcount> <yourMD5>\n";
print " Charset can be: [aAdx]\n";
print " a = {'a','b','c',...}\n";
print " A = {'A','B','C',...}\n";
print " d = {'1','2','3',...}\n";
print " x = {'!','\"',' ',...}\n";
print "EXAMPLE FOR CRACKING A MD5 HASH\n";
print "./md5crack.pl ad 1 3 900150983cd24fb0d6963f7d28e17f72\n";
print " This example tries to crack the given MD5 with all lowercase Alphas and all digits.\n";
print " MD5 Kit only tries combinations with a length from 1 and 3 characters.\n-------\n";
print "./md5crack.pl aA 3 3 900150983cd24fb0d6963f7d28e17f72\n";
print " This example tries to crack the given MD5 with all lowercase Alphas and all uppercase Alphas.\n";
print " MD5 Kit only tries passwords which length is exactly 3 characters.\n-------\n";
print "./md5crack.pl aAdx 1 10 900150983cd24fb0d6963f7d28e17f72\n";
print " This example tries to crack the given MD5 with nearly every character.\n";
print " MD5 Kit only tries combinations with a length from 1 to 10 characters.\n";
die "Quitting...\n";

}

sub crack{
$CharSet = shift;
@RawString = ();
for (my $i =0;$i<$CharSet;$i++){ $RawString[i] = 0;}

$Start = gettimeofday();
do{
  for (my $i =0;$i<$CharSet;$i++){
   if ($RawString[$i] > length($alpha)-1){
    if ($i==$CharSet-1){
    print "Bruteforcing done with $CharSet Chars. No Results.\n";
    $cnt=0;
    return false;
   }
   $RawString[$i+1]++;
   $RawString[$i]=0;
   }
  }

###################################################

   $ret = "";
   for (my $i =0;$i<$CharSet;$i++){ $ret = $ret . substr($alpha,$RawString[$i],1);}
   $hash = md5_hex($ret);
   $cnt++;
   $Stop = gettimeofday();
   if ($Stop-$Start>$dbgtmr){
    $cnt = int($cnt/$dbgtmr);
    print "$cnt hashes\\second.\tLast Pass '$ret\'\n";
    $cnt=0;
    $Start = gettimeofday();
   }
            print "$ARGV[3] != $hash ($ret)\n";
   if ($ARGV[3] eq $hash){
    die "\n**** Password Cracked! => $ret\n";
   }

###################################################

  #checkhash($CharSet)."\n";

  $RawString[0]++;
}while($RawString[$CharSet-1]<length($alpha));
}

sub checkhash{
$CharSet = shift;
$ret = "";
for (my $i =0;$i<$CharSet;$i++){ $ret = $ret . substr($alpha,$RawString[$i],1);}
$hash = md5_hex($ret);
$cnt++;
$Stop = gettimeofday();
if ($Stop-$Start>$dbgtmr){
  $cnt = int($cnt/$dbgtmr);
  print "$cnt hashes\\second.\tLast Pass '$ret\'\n";
  $cnt=0;
  $Start = gettimeofday();
}

if ($ARGV[3] eq $hash){
  die "\n**** Password Cracked yeah! => $ret\n";
}




}
pantallazo; Aqui


tampoco recomiendo mucho poneros a crackear cualquier hash que pilleis con esto, porque va a tardar teela pero para ver como está escrito el código y intentar aprender como va está bien !  :yes: lo tenia guardado por mi disco duro, lo vi y me pareció interessante compartirlo
saludos :)
« última modificación: Martes 19 de Julio de 2011, 15:59 por henrywallace »

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re:Desencriptar md5 (script perl)
« Respuesta #1 en: Martes 23 de Agosto de 2011, 22:34 »
0
por lo menos sabes cómo funciona el script y qué está haciendo cada línea, copiar por copiar no ayuda a mucho; otra cosa una cadena MD5 nunca se desencripta
El pasado son solo recuerdos, el futuro son solo sueños