Some way to 'increment from a wordlist'
#1
Hi there,

For a password I am looking to handle a few things I know;

-Axcrypt hash
-The password consists of words, formed in a sentence.
-The password may or may not have spaces in between these words.
-I do not know the exact words but i can make a list of aprox. 30 words that have been used.
-I do not know how many words, but I know for sure there have not been more than 7.
-Sentences may or may not start with first letter in Capital.

Until now I have never encountered a problem but this seems to be a question I cannot solve.

Is there anybody who could come up with a way to do this? Basically I am looking for something to:

I make a wordlist, then the code goes for some sort of increment from that wordlist. Combined with a rule to capitalize or not for the first word etc. I just cant find out if it is possible to do something like this?

Any help would be greatly appreciated!
Reply
#2
You can use princeprocessor for this. It can handle everything but the space between the words. Toggling the case of the first character can be done with a hashcat rule.
Reply
#3
you could pre-generate the word list or just use -a 1 hash.txt dict1.txt dict2.txt

-a 1 also works with 3 combinations of works if dict1.txt hash already 2 words combined and you combine it one more time with dict2.txt (s.t. 2+1 = 3).

The problem is that it grows exponentially, so the more words you combine the total number of password candidates grows much faster (because everything needs to be combined again with everything).

You could try to remove the single combinations of 2 same words combined within the same password (which could be invalid in your case), but you could also choose to ignore it (and allow e.g. AppleOrangeApple even though Apple is used twice).

rule based attacks are explained here: https://hashcat.net/wiki/doku.php?id=rule_based_attack
you could have 2 rules, e.g. one is just ":" and one is T0 to toggle the first char (uppercase it if it is guarantteed to be lowercase).

a simple (perl,python,php whatever) script to generate the combinations with both could also be handy, but most of the time -a 1 is faster, because less I/O (disk bottleneck and PCI bottleneck). You could just generate one part of -a 1 with your custom script (dict1.txt for instance), or just use combinator.bin/combinator3.bin or just hashcat --stdout to generate the 2 parts.
Reply
#4
(08-30-2019, 09:36 PM)undeath Wrote: You can use princeprocessor for this. It can handle everything but the space between the words. Toggling the case of the first character can be done with a hashcat rule.


This looks interesting, not sure how I have missed this. Will look into it now.

I could just make 'space' a word in a wordlist so that princeprocessor can handle that as well right? I don't have many words anyway so that wouldn't matter too much.
Reply
#5
Yes, you could simply append a space to every word in your wordlist for that case. Just remember to add a rule in hashcat that deletes the trailing space of the last word.
Reply
#6
(08-30-2019, 09:41 PM)philsmd Wrote: you could pre-generate the word list or just use -a 1 hash.txt dict1.txt dict2.txt

-a 1 also works with 3 combinations of works if dict1.txt hash already 2 words combined and you combine it one more time with dict2.txt (s.t. 2+1 = 3).

The problem is that it grows exponentially, so the more words you combine the total number of password candidates grows much faster (because everything needs to be combined again with everything).

You could try to remove the single combinations of 2 same words combined within the same password (which could be invalid in your case), but you could also choose to ignore it (and allow e.g. AppleOrangeApple even though Apple is used twice).

rule based attacks are explained here: https://hashcat.net/wiki/doku.php?id=rule_based_attack
you could have 2 rules, e.g. one is just ":" and one is T0 to toggle the first char (uppercase it if it is guarantteed to be lowercase).

a simple (perl,python,php whatever)  script to generate the combinations with both could also be handy, but most of the time -a 1 is faster, because less I/O (disk bottleneck and PCI bottleneck). You could just generate one part of -a 1 with your custom script (dict1.txt for instance), or just use combinator.bin/combinator3.bin or just hashcat --stdout to generate the 2 parts.

Thanks for the insight! I have already tried this. The problem I ran in to here was that this does not alllow me to increment.Also if I include spaces in the wordlist the wordlist grows way too big to handle quite quickly.

I have been using hashcat for quite a while and I know my way around (at least the basic stuff and rules etc) but this just seems to be very complicated while the idea itself is very simple. Frustrates me so much. Either that or I am very stupid and overlooking something.

I will look into princeprocessor for now and update on how that works for me.
Reply
#7
So at the moment I am getting somewhere, I can see this is the right path with princeprocessor.

I have some rules working fine, but I need to add some kind of rule that would allow me to not have the same word twice in a row. Anybody here with an idea on how to do that? Or maybe with another way instead of making a rule for this. I have other rules working fine I just cant figure out or find a way to make this specific thing happen.


(even better would be a way to add a space after every word (except the last one) in the sequence princeprocessor creates.)

For example at the moment I get like " xxx xxx xxxx" where x are words and blanks are spaces(doesnt translate well on the site but i put multiple blanks in a row). I would like that to go into format of: "x x x x x", if this is clear enough. Any help again would be really nice! Smile
Reply