March 7th 2009 01:28 pm

MD5 decoder dengan algoritma BruteForce

Diliat dari judulnya, ni pasti ada hubungannya ma keamanan, hehehe yupz, mungkin temen2 semua udah ga asing dengan MD5, sebuah algoritma untuk enkripsi data yang didesain tahun 1991 oleh Ronald Rivest. untuk lebih jelasnya tentang MD5, mending ke sini aja deh, hehehe :D

Kemarin tu aku iseng-iseng kepikiran, “bisa ga sih, algoritma MD5 ini dibobol?”. trus akhirnya aku nyari macem2 cara, & sepertinya yang mungkin itu dengan Brute Force. wah, “brute force” apa lagi ni??

Jadi brute force tu sebuah cara untuk membobol sebuah sistem keamanan, dengan melakukan percobaan terhadap semua sandi yang dimungkinkan, atau gampangnya “di cobain satu2″, hehehe :D misal dari a,b,c,…,aa,ab,ac…,ba,bb,bc…. gitu terus sampe bosen, hahaha

Oke, disini aku coba pake brute force untuk membobol MD5, jadi algoritmanya gini:

1. Program menerima input String yang sudah di MD5.

2. Generate String a,b,c,…,aa,ab,ac…

3. Tiap String yang di generate itu, kita enkripsi dengan MD5.

4. Cocokkan hasil enkripsi dengan input dari user.

5. Jika cocok, maka stop & tampilkan, jika tidak, lanjut ke String berikutnya.

kita langsung ke syntaxnya aja deh… ni aku buat pake java…

BruteForce.java

import java.security.*;
import java.math.*;

/**
 *
 * @author brainware
 */
public class BruteForce {
    char[] karakter = {
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V',
        'W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
        's','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','!','@','#','$',
        '%','^','&','*','(',')','_','+','-','=','[',']','{','}',';',':',''','"','|','',',',
        '.','<','>','?','/',' '
    };

    String kataYgDicari;
    int maxKarakter;
    boolean ketemu = false;

    public BruteForce(){

    }

    public BruteForce(String kataYgDicari,int maxKarakter) throws Exception {
        int k = 0;
        this.kataYgDicari = kataYgDicari;
        this.maxKarakter = maxKarakter;

        while (k < karakter.length && !ketemu) {
            nextString(new Character(karakter[k]).toString());
            k++;
        }

    }    

    public void cek(String huruf) throws Exception{
        System.out.println(huruf);
        if(kataYgDicari.equals(md5(huruf))){
            ketemu = true;
        }
    }

    private void nextString(String s) throws Exception {

        int i = 0;

        cek(s);

        while (i < karakter.length && !ketemu) {
            cek(s + new Character(karakter[i]).toString());

            if (new String(s + new Character(karakter[i]).toString()).length() <= maxKarakter) {
                nextString(s + new Character(karakter[i]).toString());
            }
            i++;
        }

    }

    public String md5(String kata) throws Exception{
        MessageDigest m=MessageDigest.getInstance("MD5");
        m.update(kata.getBytes(),0,kata.length());

        String md5 = (new BigInteger(1,m.digest()).toString(16));

        if (md5.length() == 31) {
            md5 = "0" + md5;
        }

        return md5;
    }
}

Nah, aku coba jelasin script yg diatas:

pertama kita punya variabel karakter untuk nyimpen semua karakter yang mungkin.

Trus di sana juga ada method(fungsi) konstruktor dengan parameter input berupa kata yang ingin di decode, & jumlah karakter. Jumlah karakter disini menunjukkan batasan untuk bruteforce kita, jadi misal kita isi 5, berarti dia hanya akan mencari hingga 5 digit sandi.

Selain itu ada juga method cek, ini digunakan untuk melakukan pengecekan apakah string yang di generate kemudian di enkripsi dengan MD5 tadi cocok dengan string yang kita cari?

Trus 2 method terakhir, yaitu method nextString, & md5 itu untuk generate bruteForcenya, & method md5 kita pake untuk enkripsi MD5.

Sekarang kita coba panggil kelas tersebut dengan kelas pemanggil ini:

TesBruteForce.java

import java.io.*;

/**
 *
 * @author brainware
 */
public class tesBruteForce {
    public static void main(String[] args) throws Exception {
        try {
            InputStreamReader is = new InputStreamReader(System.in);
            BufferedReader input = new BufferedReader(is);
            System.out.print("Masukkan string yang ingin di decode: ");
            String md5 = input.readLine();
            System.out.print("Masukkan jumlah karakter maksimum untuk brute force: ");
            int max = Integer.parseInt(input.readLine());
            BruteForce b = new BruteForce(md5, max);

        } catch (Exception e) {
            System.out.print("Ada kesalahan Masukan");
            System.exit(1);
        }

    }
}

Oke, sekarang compile 2 script diatas, trus jalankan…

sekarang kita coba script diatas jalan ato ga, pertama kita butuh sebuah string yang dah di MD5, untuk percobaan kemarin, aku coba pake:

T3$t -> 63b45f4e8262e6255090032ca6458ab6

A53 -> ecf3e2493afebcfefb0b9b86bd50ef0d

D3K$ -> 5606cc1467638fc6db403f6e6d70c572

dan semuanya berhasil :D

Coba kita inputkan string ecf3e2493afebcfefb0b9b86bd50ef0d, kemudian kita isi max karakternya 3 saja.. (biar cepet, hehehe :D )

Setelah itu, program akan mulai mengenerate semua kemungkinan string nya :D dan. . .

Jreng-jreng… jika stringnya cocok, berarti itu lah jawabnya… :D

Met mencoba! :D

Oiya, daripada susah-susah copy paste, download aja scriptnya.

http://widyananda.com/blog/wp-content/plugins/downloads-manager/img/icons/winrar.gif download: Script MD5 Decoder (1.35KB)
added: 03/07/2009
clicks: 531
description: Script MD5 Decoder di Java

Tags: , , , , , , , ,

41 Comments »

41 Responses to “MD5 decoder dengan algoritma BruteForce”

  1. Rochmad Nurul Hidayat on 07 Mar 2009 at 1:49 PM #

    wah keren
    ajarin dunks :D

  2. aryo agung on 07 Mar 2009 at 1:51 PM #

    wowwwwww

    NICE INFO GAN!!!!!!!!

  3. brainware on 07 Mar 2009 at 1:56 PM #

    hehehe, thx2, tapi inget jangan di salah gunakan yah, hehehe

    inget ETIKA… :D

  4. chooey on 07 Mar 2009 at 2:07 PM #

    Wew…
    yang php gimana kk??
    kok java sih??:(

  5. arie-gnb on 07 Mar 2009 at 2:12 PM #

    susah pak aksesnya
    gimana kalo nge track login web ajah.
    buat algoritma perulangan post ke web.
    jika masi masuk halaman login di kirim lagi kombinasi pass yang beda.

    kan jadi kompi kita ngk kerja tapi server sana n hosting kita yang kerja.

    nb: coba kalo ada celah dihalaman login yang bisa redirect trus dikirim lagi passwd yang lain…

    hehehe

    susah yah…

  6. brainware on 07 Mar 2009 at 2:20 PM #

    @arie:
    bisa juga si, tapi ni dasarnya dulu, hehehe

    inget ETIKA :p

    mo ngapain? niat jebol web yah? hehehe

  7. agx_sevensix on 07 Mar 2009 at 2:22 PM #

    tenane kihh…

    iso jebol komputere ra kih nek nggo decode..???

    hayo0o pie hayo…???

    :D

  8. dodi on 07 Mar 2009 at 3:49 PM #

    jikakakaka .. keren dah ….
    gara2x decode md5 ini ga jadi rapat di kantor gzhga…

  9. Ronny on 07 Mar 2009 at 4:04 PM #

    wew…. piye kui carane?
    ajari algoritma’ne?
    nemu neng ndi kui algoritma’ne??
    :))

  10. brainware on 07 Mar 2009 at 7:00 PM #

    @agung:
    nek nyoba mbobol 10digit password ngono ketoke iso jebol tenan, hehehe

    @dodi:
    yoooh, suk nek rapat tak focus wis, hehehe

    @roni:
    carane yo kui, pahami wae algoritmane… :D

  11. satrio on 08 Mar 2009 at 7:25 AM #

    wah keren2 :-bd
    ajarin2.

    tp bukannya klo pake brute force butuh space yg banyak ya?

    n kata pak andri klo >12 bs bertahun2 nunggunya.:D
    n kata pak andri lagi password admin fti dikasih 30 digit jadi butuh beribu2 tahun kalo pake brute force.

    iya ga sih?

  12. brainware on 08 Mar 2009 at 7:34 AM #

    hahahaha… :D ya itu dia kelemahannya… dah aku post juga di sini

  13. satrio on 08 Mar 2009 at 8:36 AM #

    oh ya itu sistem nyimpen data kemungkinan passwordnya gmn ya?

    nyimpennya dimana?
    klo simpen sementara di RAM berarti semakin besar digit passwordnya semakin besar juga butuh RAMnya?

    py kuwi?ga mudeng saya.
    suhu arip ajarin donk…hehehe. :D

  14. brainware on 08 Mar 2009 at 8:43 AM #

    hehehehe, suhu dari mana om?? aku masi belajar juga, makanya aku berharap bisa sharing2 lewat blog ini…

    yupz, di memori, jadi emang semakin besat digit passwordnya, makin besar memori yg dibutuhkan [apa lagi java berjalan diatas JVM yang berat juga..] :D

    dah aku review kok, hmmm mang banyak kelemahannya, hehehe

    hidup MD5!! lhoh kok? :p

  15. soon on 09 Mar 2009 at 9:39 PM #

    wew halooooo rip,blog anyar ni yeee keren dah …

    “Don’t store the user password on your database. No matter how many security measures you take, there is not a perfect security system. Use a hash method for the passwords, like SHA1, or MD5.
    SHA1 and MD5 aren’t secure anymore, because of projects like passcracking, we can’t trust on this hash functions for one way encryption. “(http://www.codeproject.com/KB/dotnet/GoodbyeMD5.aspx)

  16. Himawan Yudis on 03 Jun 2009 at 6:41 PM #

    bisa jadi senjata buat ta yg mematikan nih!

    okey rif kita siap tempur di java competition

    aq ma henri bawa master webservices bernama mas rahmadi

  17. brainware on 04 Jun 2009 at 11:28 AM #

    hoooh… kamu ma mas rahmadi toh?? oke… kita bersaing di java jive competition 2009, hehe :)

  18. BuLongX on 14 Jun 2009 at 3:55 PM #

    kk q dah coba tutor diatas tp masih ada yg error, yg pertama yg di bag char yg kedua di bag if :

    ”’,'”‘,’|',”,’,',

    if(kataYgDicari.equals(md5(huruf))){

    give me solutions plzzz….

  19. brainware on 14 Jun 2009 at 5:18 PM #

    he??? bagian mananya yg error?? km add ym ku aja, biar gampang aku ngasih taunya, heheh :)

  20. Kriboez on 03 Jul 2009 at 5:03 PM #

    permisi saya mau tanya bisa tolong decode ini gak ?

    MD5 :

    yang pertama

    a437fb9b6b019083822787000c8de53b

    yang kedua

    450ee42e4d07e612ee2b3b6357ecec5f

    tolong pak

    thx banget

  21. brainware on 04 Jul 2009 at 10:26 AM #

    wah, kalo itu monggo di coba sendiri mas… komputer saya ga kuat buat jebol md5 yang lebih dari 3 digit… hehehe

    copy aj source code nya… :)

  22. WAHYU on 03 Sep 2009 at 9:50 PM #

    MAS SYA PUNYA MD5 YG HARUS DI PECAHKAN AWALNYA MEMULAINYA DARI MNA MNA YA TOLONG JELSKAN DONG PAKE APLIKASI APA TRUS GIMN ACARANAY

  23. brainware on 05 Sep 2009 at 11:46 AM #

    ya coba aja pake aplikasi itu mas… tapi saya ga janji bisa mecahin, soalnya klo pake itu bakalan lama banget, hehe :D

  24. newbie on 06 Sep 2009 at 10:01 AM #

    klo decryptnya pake Cain bisa jg?
    trus ada link bwat download compiler javanya g?

  25. brainware on 06 Sep 2009 at 11:49 AM #

    cain gimana yah? hee… buat compile java ya langsung di java.com nya aja… :D

  26. cha2.. on 09 Sep 2009 at 10:50 PM #

    wah opo ki…
    ra mudeng…
    hehe

  27. brainware on 10 Sep 2009 at 5:29 AM #

    belajar dunx, biar jadi ngerti :P

  28. cha2.. on 10 Sep 2009 at 11:02 PM #

    dhurung mahir JAVA e..
    hehehe..
    nnt kl dh mahir JAVA, coba bobol2 jg ah..
    hehehe…

  29. brainware on 12 Sep 2009 at 6:28 PM #

    siiip… :)

  30. stahn on 12 Sep 2009 at 10:27 PM #

    apaan itu mas brainware??

    kepalaku pusing…

  31. brainware on 13 Sep 2009 at 11:12 AM #

    wah2, padahal kalo masalah ini, di banding dengan anda, saya ga ada apa2ny mas… hehee.. :)

  32. cha2.. on 13 Sep 2009 at 10:06 PM #

    wokeh deh…

    ^_^

  33. brainware on 14 Sep 2009 at 12:10 PM #

    siip lah… :D

  34. Yayoek on 05 Oct 2009 at 7:10 PM #

    dalam kondisi yang gmana sih bruce force di pake, misalnya kapan sebaiknya digunakan n kapan jangan digunakan…. thanks

  35. brainware on 05 Oct 2009 at 10:45 PM #

    ya klo menurutku si, saat kita dah bener2 mentok buat nebak password orang (misal).. soalnya ni bakalan lama bgt prosesnya…

    sama satu lagi, saat komputer kita sanggup melakukan bruteforce :p kan berat bgt tuh prosesnya, lama pula, hehehe :)

    CMIIW

  36. sI GokiL on 07 Oct 2009 at 7:55 AM #

    masih gak ngertiiie saia…
    ajarin dunk…:)
    hhe :)

  37. brainware on 07 Oct 2009 at 9:45 AM #

    wah2, saya juga masi belajar bro… he… :)

  38. Sofian on 07 Oct 2009 at 7:42 PM #

    Beuh.. kompy saya 10Gb harddisnya.. lemot deh.. huahuahua..

  39. brainware on 18 Oct 2009 at 10:46 AM #

    hehehehe… :)

  40. kira on 06 Jan 2010 at 8:41 AM #

    mas,apa anda memiliki md5 decoder dan bruteforcenya dalam bahasa c g. . ?apakah boleh saya minta mas ? soalnya saya mau membangung sebuah sistem paralel untuk algoritma brute force sehingga pemecahan karakter diatas 3 dapat lebih cepat. .ini untuk keperluan tugas kok mas, , ,makasi mas sebelumnya. . .saya sgt mohon bantuannya. . .

  41. brainware on 06 Jan 2010 at 7:41 PM #

    wah, maaf, aku ga punya yang bhasa c, adanya yg java itu… ^:)^

    sukses buat tugasnya! :D

Trackback URI | Comments RSS

Leave a Reply

« | »


  • Follow me!

  • Contact Me on Y!M

  • Statistics


    Locations of visitors to this page