Make a new release soon as the previous one has Python 3 compatibility issues and known-fixed bugs
Open
@solardiz is already working on this.
Since May 18, 2025.
maintenance/cleanup
- Dominant language
- C
- Stars
- 13.6k
- Forks
- 2.6k
- PR merge metrics
- No merged PRs in 30d
Description
$ /usr/bin/env python --version
Python 3.9.1
$ ssh2john id_rsa
Traceback (most recent call last):
File "/usr/bin/ssh2john", line 193, in <module>
read_private_key(filename)
File "/usr/bin/ssh2john", line 103, in read_private_key
data = base64.decodestring(data)
AttributeError: module 'base64' has no attribute 'decodestring'
Same kind of error as for #3345.
$ grep -n decodestring /usr/bin/ssh2john
103: data = base64.decodestring(data)
It is preset in 1.9.0-jumbo-1 git tag:
https://github.com/openwall/john/blob/a16c8a76259ab870c07e5123c237b1900402d9a6/run/ssh2john.py#L103
But it's fixed in bleeding-jumbo git tag:
tag 1.9.0-jumbo is from May 14, 2019.
So releasing a new version will help fix that bug in distro packages that are mostly using python 3.9 nowadays.
System configuration
$ john --list=build-info
Version: 1.9.0-jumbo-1
Build: linux-gnu 64-bit x86_64 AVX AC MPI + OMP
SIMD: AVX, interleaving: MD4:3 MD5:3 SHA1:1 SHA256:1 SHA512:1
System-wide exec: /usr/lib/john
System-wide home: /usr/share/john
Private home: ~/.john
CPU tests: AVX
CPU fallback binary: john-non-avx
$JOHN is /usr/share/john/
Format interface version: 14
Max. number of reported tunable costs: 4
Rec file version: REC4
Charset file version: CHR3
CHARSET_MIN: 1 (0x01)
CHARSET_MAX: 255 (0xff)
CHARSET_LENGTH: 24
SALT_HASH_SIZE: 1048576
SINGLE_IDX_MAX: 2147483648
SINGLE_BUF_MAX: 4294967295
Effective limit: Number of salts vs. SingleMaxBufferSize
Max. Markov mode level: 400
Max. Markov mode password length: 30
gcc version: 10.2.0
GNU libc version: 2.32 (loaded: 2.32)
OpenCL headers version: 2.2
Crypto library: OpenSSL
OpenSSL library version: 01010108f (loaded: 01010109f)
OpenSSL 1.1.1h 22 Sep 2020 (loaded: OpenSSL 1.1.1i 8 Dec 2020)
GMP library version: 6.2.0 (loaded: 6.2.1)
File locking: fcntl()
fseek(): fseek
ftell(): ftell
fopen(): fopen
memmem(): System's
Workaround for distro packager waiting for the new release
$ sed 's/decodestring/decodebytes/' /usr/bin/ssh2john | python3.9 - id_rsa
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.