package privatekey import ( "bytes" "crypto/x509" _ "embed" "errors" "golang.org/x/crypto/ssh" ) //go:embed "list.txt" var rawCrackList []byte var passphrases [][]byte func init() { passphrases = bytes.Split(rawCrackList, []byte("\n")) } var ( ErrUncrackable = errors.New("unable to crack encryption") ) func Crack(in []byte) (any, string, error) { for _, passphrase := range passphrases { parsed, err := ssh.ParseRawPrivateKeyWithPassphrase(in, passphrase) if err != nil { if errors.Is(err, x509.IncorrectPasswordError) { continue } else { return nil, "", err } } return parsed, string(passphrase), nil } return nil, "", ErrUncrackable }