
Ask HN: Generate All Permutations of a Passphrase? - GlassOwAter
I cannot remember the exact typing of my old laptop&#x27;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.<p>It&#x27;s something like this:<p>SimplePhraseOfMine  with the possibility of upper&#x2F;lowercase and s=5 o=0 e=3<p>I&#x27;ve tried writing all variations by hand, but that is tedious and I&#x27;ve not gotten it. I tried messing around with Crunch wordlist generator, but that doesn&#x27;t seem to do exactly what I need (keep that phrase intact).<p>Is there a program to do this?
======
andrewfhart
One 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_...](https://github.com/ryepdx/pyethrecover/blob/master/password_spec.txt)
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
Thank you I'll get looking at this!

------
tgflynn
It'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
I 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
I 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
It 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
You 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.

