14 Oktober 2009

mencoba mengurai/ decrypt/ crack md5 hash

Md5 sehari-hari kita gunakan untuk mengenskrip data sebelum kita simpan ke dalam database. Namun kenyataannya md5 ini memiliki kelemahan. Enskripsi satu arah yang diciptakan tahun 1991 ini sebenarnya sejak tahun 1996 sudah dianjurkan untuk tidak digunakan lagi. Sebagai pengganti bisa menggunakan seperti WHIRLPOOL, SHA-1, SHA-2, SHA-3 atau RIPEMD-160.
Banyak yang bilang kalo md5 adalah one way enscription atau hash yang tidak dapat direverse. Namun kenyataannya dapat kita coba dengan script di bawah ini. Memang masuk akal bila kita harus hati-hati dalam pemakain md5 hash ini. Di script di bawah ini saya mampu mengurai 5 digit lower karakter tak kurang dari 3 detik. Menakutkan bukan. Kalo di situs-situs lain sepertinya mereka memakai database. Semacam dictionary attack. Tapi di script di bawah ini menggunakan bruteforce attack. Kalo based PHP aja segini cepatnya gimana kalo ditulis di C++ atau pascal pasti lebih cepet lagi.. Ngeri. Kapan-kapan kita bahas lagi keamanan hash password.
  1.   
  2. // ini adalah target Hash MD5 kita  
  3. // sementara dibatasi maximal 10 karakter dan alphabet  lower  
  4.   
  5. define('HASH''ab56b4d92b40713acc5af89985d4b786');  
  6.   
  7. /// ini ke bawah jangan diubah  
  8.   
  9. define('HASH_ALGO''md5');  
  10. define('PASSWORD_MAX_LENGTH', 10);  
  11. $charset = 'abcdefghijklmnopqrstuvwxyz';  
  12.   
  13. $charset_length = strlen($charset);  
  14. function check($password) {     
  15.     if (hash(HASH_ALGO, $password) == HASH) {  
  16.     echo 'Penguraian hash berhasil,
    password: '
    .$password."rn http://gecko.web.id";  
  17.     exit;  
  18.     }  
  19. }  
  20.    
  21. function recurse($width$position$base_string) {  
  22.     global $charset$charset_length;  
  23.     for ($i = 0; $i < $charset_length; ++$i) {  
  24.     if ($position  < $width - 1) {  
  25.     recurse($width$position + 1, $base_string . $charset[$i]);  
  26.     }  
  27.     check($base_string . $charset[$i]);  
  28.     }  
  29. }  
  30.    
  31. echo 'hash target: '.HASH."rn";  
  32. recurse(PASSWORD_MAX_LENGTH, 0, '');  
  33.    
  34. echo "Proses selesai tapi password tidak ditemukanrn";  
  35.   
  36. ?>  
Maaf script di atas sedikit error setelah deploy ke syntax hiliter. Untuk script aslinya download aja ke link di bawah ini.


Tidak ada komentar:

Posting Komentar

About Me

Foto saya
Dalam hati terucap doa Ingin segera bertemu Begitu ada kesempatan Tak ku lewatkan begitu saja Langkahku semakin cepat Sungguh ku ingin segera bertemu Dengan kekasihku yang adalah kamu Tak ku hiraukan meski malam begitu pekat Sekian lama berpisah Membuatku begitu rindu padamu Setiap malam berharap sendiri Ingin segera bertemu Kalau saja waktu itu sayapku tak patah Pasti ku kan terbang menuju kehangatan pelukanmu