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.
- // ini adalah target Hash MD5 kita
- // sementara dibatasi maximal 10 karakter dan alphabet lower
- define('HASH', 'ab56b4d92b40713acc5af89985d4b786');
- /// ini ke bawah jangan diubah
- define('HASH_ALGO', 'md5');
- define('PASSWORD_MAX_LENGTH', 10);
- $charset = 'abcdefghijklmnopqrstuvwxyz';
- $charset_length = strlen($charset);
- function check($password) {
- if (hash(HASH_ALGO, $password) == HASH) {
- echo 'Penguraian hash berhasil,
password: '.$password."rn http://gecko.web.id"; - exit;
- }
- }
- function recurse($width, $position, $base_string) {
- global $charset, $charset_length;
- for ($i = 0; $i < $charset_length; ++$i) {
- if ($position < $width - 1) {
- recurse($width, $position + 1, $base_string . $charset[$i]);
- }
- check($base_string . $charset[$i]);
- }
- }
- echo 'hash target: '.HASH."rn";
- recurse(PASSWORD_MAX_LENGTH, 0, '');
- echo "Proses selesai tapi password tidak ditemukanrn";
- ?>
Tidak ada komentar:
Posting Komentar