I found a private key which seems to be in the putty private key format.

The key has the following header:

Subject: <sensitive>
Comment: <sensitive>

When opened in the putty keygen tool it prompts for a password which it does not do for other files so I assume some sort of validation is done on the PPK file. The same behavior with a PPK file that I generated using putty keygen.

I tried the PHRASENDRESCHER tool to guess private key passwords but this tool gives no output in case of an invalid/unknown file format. I tried generating my own PPK with a weak password and it did not crack that private key. So I assume the tool does not understand this type of private key.

Since putty keygen has no CLI, it is not possible to guess the password automatically. Does anyone have cracking tool that is able to guess the password (brute-force and/or word list) for PPK files?

  • I'm half-inclined to mark this as off-topic because it is a request to break the security of a specific system. But as to your point about puttygen having no CLI, that's not entirely true. I've used it from POSIX machines to convert keys for Windows users on occasion. packages.debian.org/stretch/putty-tools
    – nbering
    Aug 6, 2018 at 14:59
  • LVH had words related to this topic (but focused on OpenSSH) recently here: latacora.singles/2018/08/03/the-default-openssh.html And a longer time ago someone picked apart the Putty source to see about their specific key encryption. TL;DR it's crackable with some work: security.stackexchange.com/questions/71341/… Aug 6, 2018 at 20:12
  • That is NOT Putty's own format (PPK) although it is one of several puttygen can import and export. In addition to the Unix port of puttygen being commandliney, the source is very easily available. Aug 7, 2018 at 0:57

1 Answer 1


Based on the comment from nbering, I created a script that uses puttygen on Kali:

apt install putty-tools

The script is very basic but tries all words from a wordlist specified as the first argument. If the correct passphrase is found, it will prompt for user input, asking for a new passphrase to use to encrypt the private key.


echo "Wordlist: $1"
echo "PPK file: $2"
echo "New PPK file: $3"
while read -r line
    echo $line > old_pass.txt
    error=$((puttygen $2 -P -o $3 --old-passphrase old_pass.txt ) 2>&1)

    if [[ ! $error = *"wrong passphrase"* ]]; then
        echo "Passphrase: $line $error"
done < $1

Hope this is helpful to someone. As always, only use with approval of the target.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .