Saya memiliki kata sandi yang berfungsi dan dapat melihat hash (/etc/passwd). Bagaimana cara menemukan algoritme hashing yang digunakan untuk hash kata sandi, tanpa mencoba algoritme yang berbeda secara manual hingga saya menemukan kecocokan?
Jawaban yang Diterima:
Ini didokumentasikan di crypt(3)
halaman manual, yang dapat Anda temukan melalui shadow(5)
halaman manual, atau passwd(5)
's. Tautan tersebut sesuai untuk sistem berbasis Linux modern; deskripsinya ada :
Jika garam adalah string karakter yang dimulai dengan karakter “$id $”
diikuti string opsional diakhiri dengan “$”, maka hasilnya
berbentuk:$id$salt$encrypted
id mengidentifikasi metode enkripsi yang digunakan sebagai ganti DES dan ini kemudian
menentukan bagaimana string sandi lainnya diinterpretasikan.
Nilai id berikut didukung:ID | Method ───────────────────────────────────────────────────────── 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
Blowfish, juga dikenal sebagai bcrypt
, juga diidentifikasi dengan awalan 2
, 2b
, 2x
, dan 2y
(lihat dokumentasi PassLib).
Jadi jika kata sandi hash disimpan dalam format di atas, Anda dapat menemukan algoritme yang digunakan dengan melihat id; jika tidak, itu adalah crypt
algoritme DES default (dengan hash 13 karakter), atau crypt
"besar" DES (diperpanjang untuk mendukung sandi 128 karakter, dengan hash hingga panjang 178 karakter), atau DES diperpanjang BSDI (dengan _
awalan diikuti dengan hash 19 karakter).
Beberapa distribusi menggunakan libxcrypt yang mendukung dan mendokumentasikan beberapa metode lainnya:
y
:yescryptgy
:gost-yescrypt7
:enkripsisha1
:sha1cryptmd5
:SunMD5
Platform lain mendukung algoritme lain, jadi periksa crypt
halaman manual di sana. Misalnya, crypt(3)
dari OpenBSD hanya mendukung Blowfish, yang diidentifikasi menggunakan id “2b”.