Help with 3 word combination
#1
Hi,

I have a 3 word wpa hash in the format of "word-word-word" (including the -).  with a 3-4-5 mask/keyspace (in any order) with one of the words being in capitals.

I have 3 word lists, one for each word length, and in each file every word appears twice. Once in lower case & once in upper case

Can anyone suggest how I run the 3 word lists and add the "-" in-between?

I believe this would work for 2 words but not sure how to make it run for 3
hashcat64.exe -m 2500 -a 1 -j '$-' dict1.txt dict2.text ..........


I'm currently running Hashcat on windows

Many thanks in advance.
Reply
#2
(10-10-2019, 08:32 PM)Dawbs Wrote: Hi,

I have a 3 word wpa hash in the format of "word-word-word" (including the -).  with a 3-4-5 mask/keyspace (in any order) with one of the words being in capitals.

I have 3 word lists, one for each word length, and in each file every word appears twice. Once in lower case & once in upper case

Can anyone suggest how I run the 3 word lists and add the "-" in-between?

I believe this would work for 2 words but not sure how to make it run for 3
hashcat64.exe -m 2500 -a 1 -j '$-' dict1.txt dict2.text ..........


I'm currently running Hashcat on windows

Many thanks in advance.

Easiest way is to combine all three wordlists (append the 4s and 5s to the 3s) to get your wordlist then powershell is probably the fastest way to create the candidates
if i am reading your post right the candidates you need are:
LIST-list-list
list-LIST-list
list-list-LIST
where list is any of the 3s,4s,5s in lower and LIST is them is upper.

the best way is to use three stream readers and nested loops:
Code:
[GC]::Collect()
$In_File="";
$Out_File="";
$j=0;
$lc = 1
$line = "";
$OutputEncoding = [System.Text.UTF8Encoding]::($false);
$Clock = [System.Diagnostics.Stopwatch]::StartNew();
$sw = new-object system.IO.StreamWriter($Out_file,$OutputEncoding);

while ($lc -lt 4){
$sr1 = new-object System.IO.StreamReader($In_File);
$line1=$sr1.ReadLine();
while ($line1 -ne $null){
  $sr2 = new-object System.IO.StreamReader($In_File);
  $line2 = $sr2.ReadLine()
  while ($line2 -ne $null){
  $sr3 = new-object System.IO.StreamReader($In_File);
  $line3 = $sr3.ReadLine()
  while ($line3 -ne $null){
    switch($lc){
    1{
      $line1 = $line1.ToUpper()
    }
    2{
      $line2 = $line2.ToUpper()
    }
    3{
      $line3 = $line3.ToUpper()
    }
    }
    $wrline = "$line1-$line2-$line3"
    $sw.WriteLine($wrline);
    $j++;
    $line3=$sr3.ReadLine();
  }
  $line2=$sr2.ReadLine();
  }
  $line1=$sr1.ReadLine();
}
$lc++
}
$Clock.Stop()
$sr1.Close();
$sr1.Dispose();
$sr2.Close();
$sr2.Dispose();
$sr3.Close();
$sr3.Dispose();
$sw.flush();
$sw.Close();
$sw.Dispose();
Write-Output "total lines written: $j","Time elapsed:" $Clock.elaps

if you set $in_file to the path of the combined 3s,4s,and5s file and $out_file to a path of your choosing, $out_file will then be your wordlist for a straight dictionary attack

e.g.
hashcat64.exe -m 2500 -a 0 input.hash $out_file .......
Reply
#3
As explained here (https://gist.github.com/roycewilliams/18...45692bccc2) by Royce, I should also consider using PRINCE.

Put all your possible candidates in one wordlist and put a space in front of them.
Use prince and pipe it into hashcat.
Use the rule "delete first character, and replace all spaces by -"

This should give the following:

Code:
cat wordlist.txt
  aaa
  bbb
  ccc
  AAA
  BBB
  CCC

Code:
pp64.exe --elem-cnt-min=3 --elem-cnt-max=3 wordlist.txt | hashcat.exe --stdout -j "[ s -"
aaa-aaa-aaa
bbb-aaa-aaa
ccc-aaa-aaa
AAA-aaa-aaa
BBB-aaa-aaa
CCC-aaa-aaa
aaa-bbb-aaa
bbb-bbb-aaa
ccc-bbb-aaa
AAA-bbb-aaa
BBB-bbb-aaa
CCC-bbb-aaa
aaa-ccc-aaa
bbb-ccc-aaa
ccc-ccc-aaa
AAA-ccc-aaa
BBB-ccc-aaa
CCC-ccc-aaa
aaa-AAA-aaa
bbb-AAA-aaa
ccc-AAA-aaa
AAA-AAA-aaa
BBB-AAA-aaa
CCC-AAA-aaa
[...]
Reply