Menggunakan hashlib Python untuk Mengetahui Algoritma Password

Salah satu yang perlu diperiksa dalam pekerjaan penetration testing adalah password.

Pada tulisan sederhana kali ini akan dijelaskan bagaimana menggunakan hashlib untuk mengetahui tipe password. hashlib merupakan pustaka bahasa pemrograman python.

Bagaimana cara mengetahui algoritma suatu password? Cara paling sederhana adalah dengan melihat panjang hash password tersebut.

zara~ % ipython
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import hashlib
In [2]: passwd = '1234'
In [3]: hashlib.md5(passwd)
Out[3]: 
In [4]: a = hashlib.md5(passwd)
In [5]: a.hexdigest()
Out[5]: '81dc9bdb52d04dc20036dbd8313ed055'
In [6]: len(a.hexdigest())
Out[6]: 32

Jika panjang hash password 32 karakter, bisa ditebak algoritma password adalah MD5. Dan jika masih ada aplikasi yang menggunakan algoritma password MD5, bisa dikatakan aplikasi ini sudah perlu mengganti algoritma password-nya karena kelemahan algoritma MD5.

Silakan baca tulisan di ilmuhacking.com yang menjelaskan kelemahan algoritma MD5. Tulisan ini ditulis pada tahun 2009!.

Sekarang mari kita coba untuk algoritma lain yaitu: SHA1, SHA256, dan SHA512.

In [7]: hashlib.sha1(passwd)
Out[7]: 
In [8]: b = hashlib.sha1(passwd)
In [9]: b.hexdigest()
Out[9]: '7110eda4d09e062aa5e4a390b0a572ac0d2c0220'
In [10]: len(b.hexdigest())
Out[10]: 40
In [11]: c = hashlib.sha256(passwd)
In [12]: len(c.hexdigest())
Out[12]: 64
In [13]: c.hexdigest()
Out[13]: '03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4'
In [14]: d = hashlib.sha512(passwd)
In [15]: d.hexdigest()
Out[15]: 'd404559f602eab6fd602ac7680dacbfaadd13630335e951f097af3900e9de176b6db28512f2e000b9d04fba5133e8b1c6e8df59db3a8ab9d60be4b97cc9e81db'
In [16]: len(d.hexdigest())
Out[16]: 128

Bagaimana dengan algoritma SHA3 Keccak? Nanti ya disimpan untuk tulisan berikutnya.