Frank Dittrich
2013-01-24 15:20:58 UTC
I think ssh and/or ssh-ng formats need at least some documentation, but
preferably even some code changes.
To understand the differences between ssh and ssh-ng formats, I did
https://github.com/search?p=6&q=path%3A.ssh%2Fid_rsa
(Here is where I got the idea: http://blog.fefe.de/?ts=affff7e4)
Then I picked the first file:
https://raw.github.com/shennjia/think/250386366e8dadc7591c1e1f3475fb3374008783/.ssh/id_rsa
Then I did:
$ ./ssh2john id_rsa > ssh-test
and
$ ./sshng2john.py id_rsa > sshng-test
(BTW: I had to install python-crypto on Fedora 18 to make the script work.)
$ ./john ssh-test --incremental
Loaded 1 password hash (SSH RSA/DSA [32/64])
guesses: 0 time: 0:00:00:13 0.00% c/s: 7871 trying: suppichi
guesses: 0 time: 0:00:00:29 0.00% c/s: 8101 trying: baby47
Session aborted
$ ./john sshng-test --incremental
Loaded 1 password hash (ssh-ng SSH RSA / DSA [32/64])
guesses: 0 time: 0:00:00:14 0.00% c/s: 105098 trying: jc6475
guesses: 0 time: 0:00:00:27 0.00% c/s: 108047 trying: ccsdbn
Session aborted
Apparently, both formats are able to crack the same input file after
converting it using the right tool.
But ssh-ng is much faster.
Why does ssh-ng have the "False positives possible" flag set?
If ssh can avoid false positives, ssh-ng should be able to avoid false
positives as well, no?
This:
$ ls -l ssh*test
-rw-rw-r--. 1 fd fd 2425 Jan 24 15:51 sshng-test
-rw-rw-r--. 1 fd fd 3505 Jan 24 15:51 ssh-test
doesn't look like ssh2john is extracting less information from the
keyfile than sshng2john is.
So, shouldn't ssh-ng be able to "understand" and convert $ssh2$ hashes?
What about ssh understanding the $sshng$ hashes?
Why do we even need two different tags?
Why different format names?
Can't ssh-ng report "SSH RSA / DSA" instead of "ssh-ng SSH RSA / DSA"?
This would allow to pick the fastest of several benchmarks for
performance comparison in relbench.
(Of course, the format name should only be changed if both formats
understand the same canonical hash representation and if ssh-ng doesn't
produce false positives.)
What am I missing here?
Frank
preferably even some code changes.
To understand the differences between ssh and ssh-ng formats, I did
https://github.com/search?p=6&q=path%3A.ssh%2Fid_rsa
(Here is where I got the idea: http://blog.fefe.de/?ts=affff7e4)
Then I picked the first file:
https://raw.github.com/shennjia/think/250386366e8dadc7591c1e1f3475fb3374008783/.ssh/id_rsa
Then I did:
$ ./ssh2john id_rsa > ssh-test
and
$ ./sshng2john.py id_rsa > sshng-test
(BTW: I had to install python-crypto on Fedora 18 to make the script work.)
$ ./john ssh-test --incremental
Loaded 1 password hash (SSH RSA/DSA [32/64])
guesses: 0 time: 0:00:00:13 0.00% c/s: 7871 trying: suppichi
guesses: 0 time: 0:00:00:29 0.00% c/s: 8101 trying: baby47
Session aborted
$ ./john sshng-test --incremental
Loaded 1 password hash (ssh-ng SSH RSA / DSA [32/64])
guesses: 0 time: 0:00:00:14 0.00% c/s: 105098 trying: jc6475
guesses: 0 time: 0:00:00:27 0.00% c/s: 108047 trying: ccsdbn
Session aborted
Apparently, both formats are able to crack the same input file after
converting it using the right tool.
But ssh-ng is much faster.
Why does ssh-ng have the "False positives possible" flag set?
If ssh can avoid false positives, ssh-ng should be able to avoid false
positives as well, no?
This:
$ ls -l ssh*test
-rw-rw-r--. 1 fd fd 2425 Jan 24 15:51 sshng-test
-rw-rw-r--. 1 fd fd 3505 Jan 24 15:51 ssh-test
doesn't look like ssh2john is extracting less information from the
keyfile than sshng2john is.
So, shouldn't ssh-ng be able to "understand" and convert $ssh2$ hashes?
What about ssh understanding the $sshng$ hashes?
Why do we even need two different tags?
Why different format names?
Can't ssh-ng report "SSH RSA / DSA" instead of "ssh-ng SSH RSA / DSA"?
This would allow to pick the fastest of several benchmarks for
performance comparison in relbench.
(Of course, the format name should only be changed if both formats
understand the same canonical hash representation and if ssh-ng doesn't
produce false positives.)
What am I missing here?
Frank