Potfile format - to hex or not to hex
#1
Are there any utilities to convert passwords in a pot file to all hex or all plaintext?

For example, if I have a potfile and it has mixed entries for found passwords and some look like $HEX[hexcharactershere], is there a way to convert those to their plain-text equivalent?

Related to that, would converting from hex to ascii be problematic if some CR/LF/NUL characters are present?
See here: https://hashcat.net/forum/thread-2483.html

Similarly, is there a way to convert all plaintext entries from a potfile to all $HEX[] format?

For hex to ascii conversion, this will do in a pinch (not tested):
From https://hashcat.net/forum/thread-3522.html
perl -ne 'if ($_ =~ m/\$HEX\[([A-Fa-f0-9]+)\]/) {print pack("H*", $1), "\n"}'

But what about ascii to hex?

I will probably write something if this doesn't exist.

*Edited*

Cheers to royce and undeath for making all of the following scripts possible:

Scripts that you will find in this post:
convert_plaintext_2_hex.pl - converts plaintext password files to their equivalent values in hex
convert_hex_2_plaintext.pl - converts passwords in $HEX format to their equivalent in plaintext.
convert_potfile_plain_2_hex.pl - leaves all hashes intact in a potfile and converts all found passwords to $HEX format
convert_potfile_hex_2_plain.pl - leaves all hashes intact in a potfile and converts all found passwords to plaintext format


convert_plaintext_2_hex.pl
Code:
#!/usr/bin/env perl use utf8; while (<>) {  if ($_ =~ m/\$HEX\[([A-Fa-f0-9]+)\]/) {      print $_;  } else {      if ($_ =~ m/(.*)/) {          print unpack("H*", $1) . "\n"      }  } }

Use convert_plaintext_2_hex.pl like this:

cat passwords.txt | convert_plain_2_hex.pl > passwords_hex_format.txt
or an example with an unsalted md5 potfile (adjust bytes with cut as necessary depending on hash type)
cat md5_found.pot | cut -b 1-33 --complement | convert_plaintext_2_hex.pl > md5_pot_passwords_in_hex.txt


convert_hex_2_plaintext.pl
Code:
#!/usr/bin/env perl while (<>) {   if ($_ =~ m/\$HEX\[([A-Fa-f0-9]+)\]/) {       print pack("H*", $1), "\n"   } else {       print $_;   } }

Use convert_hex_2_plaintext.pl like this:

cat passwords.txt | convert_hex_2_plain.pl > passwords_plaintext_format.txt
or an example with an unsalted md5 potfile (adjust bytes with cut as necessary depending on hash type)
cat md5_found.pot | cut -b 1-33 --complement | convert_hex_2_plaintext.pl > md5_pot_passwords_in_plaintext.txt


convert_potfile_plain_2_hex.pl
Code:
#!/usr/bin/env perl use utf8; while (<>) {   if ($_ =~ m/(.*):\$HEX\[([A-Fa-f0-9]+)\]/) {       print $_;   } else {       if ($_ =~ m/(.*?):(.*)/) {           print $1 . ':$HEX[' . unpack("H*", $2) . ']' . "\n"       }   } }

Use convert_potfile_plain_2_hex.pl like this:
cat found_passwords.pot | convert_potfile_plain_2_hex.pl > potfile_hashes_and_plaintext_passwords.txt


convert_potfile_hex_2_plain.pl
Code:
#!/usr/bin/env perl use utf8; while (<>) {    if ($_ =~ m/(.*):\$HEX\[([A-Fa-f0-9]+)\]/) {        print $1 . ':' . pack("H*", $2), "\n"    } else {        print $_;    } }

Use convert_potfile_hex_2_plain.pl like this:
cat found_passwords.pot | convert_potfile_hex_2_plain.pl > potfile_hashes_and_HEX_passwords.txt

In addition to the above, there are utilities available from insidepro.  Those are available at: http://www.insidepro.com/download/HM.zip


Messages In This Thread
Potfile format - to hex or not to hex - by devilsadvocate - 03-15-2017, 09:29 AM