45 ms·
Ask HN: Generate All Permutations of a Passphrase?
I cannot remember the exact typing of my old laptop's passphrase. It is encrypted, after an hour of random typing I got the passphrase once and am now stuck on my Linux Mint 17 or 18 login screen, faced with the same passphrase.
It's something like this:
SimplePhraseOfMine with the possibility of upper/lowercase and s=5 o=0 e=3
I've tried writing all variations by hand, but that is tedious and I've not gotten it. I tried messing around with Crunch wordlist generator, but that doesn't seem to do exactly what I need (keep that phrase intact).
Is there a program to do this?
- tgflynn 7y agoIt's probably not difficult to generate the possible permutations but there may be a very large number. For example if there are 20 characters in the phrase upper/lower case alone gives about 1 million possibilities. Also I'm not sure how you could try them automatically unless you have sshd running on the laptop. I didn't understand the meaning of "s=5 o=0 e=3".
- GlassOwAter 7y agoI guess I figured I can look through and narrow it down by hand too. s=5 o=0 e=3 meant it looks more like SimPl3pHrase0fMine So, a few letters have the option of upper/lower/number replacement
- gus_massa 7y agoI guess you don't want to reorder the letters. Are the uppercase possible only at the beginning of each word, or it can be in LaTeXcase?
- GlassOwAter 7y agoIt will look more like LaTeXcase I want to find all variables of upper/lower case & if certain letters are swapped out for numbers something like 5imPl3PaSs0fMin3
- gus_massa 7y agoYou must count how many special letters (like e, o, s) you have, and how many normal letters (all the other) you have. In the example there are 6 special letters (two s's, one o and three e's). And there are 12 normal letters. The total number of combinations is 2^12 * 3^6 = 2,985,984 It's in the brute force range, so you can get the list if you want using the programs linked in other comments. But password verifications have usually some protection to prevent brute force, like using a slow algorithm and adding some delays between tries.
- andrewfhart 7y agoOne option: https://github.com/ryepdx/pyethrecover https://github.com/ryepdx/pyethrecover does something very similar to what you're asking for, in the context of remembering an ethereum wallet password. In your case, the password-spec file would probably contain something like: ``` [ ('S','s','5'), ('I','i'), ('M','m'), ('P','p'), ...etc ] ``` See the comments https://github.com/ryepdx/pyethrecover/blob/master/password_spec.txt https://github.com/ryepdx/pyethrecover/blob/master/password_... for details. The overall code is not complex: it should be straightforward to strip out the word generation from the wallet testing and re-purpose it for your needs.
- GlassOwAter 7y agoThank you I'll get looking at this!