Anda di halaman 1dari 17

IMPLEMENTASI ALGORITMA BRUTE FORCE DALAM PENCOCOKAN POLA STRING

(IMPLEMENTATION OF THE BRUTE FORCE ALGORITHM : STRING PATTERN MATCHING)

1. 2. 3. 4.

Disusun Oleh : Devy Nurlina Jidni Ilman Mubarak M Arief Budiman Nurfitriany Dewi

1100178 1102083 1103961 1100330

PROGRAM STUDI ILMU KOMPUTER


FAKULTAS PENDIDIKAN MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS PENDIDIKAN INDONESIA 2013

KATA PENGANTAR
Puji syukur kami panjatkan ke hadirat Tuhan Yang Maha Esa, karena dengan pertolonganNya kami dapat menyelesaiakan karya ilmiah yang berjudul Implementasi Algoritma Brute Force dalam Pencocokan Pola String. Kami ucapkan terima kasih kepada dosen pembimbing yang telah membantu kami dalam pengerjaan makalah ini. Kami juga mengucapkan terima kasih kepada pihak lain yang tidak dapat disebutkan satu persatu dalam kontribusi yang diberikan baik secara langsung maupun tidak langsung dalam pembuatan makalah ini. Makalah ini membahas tentang implementasi/penerapan Algoritma Brute Force dalam pencocokan pola String yang banyak digunakan untuk berbagai kebutuhan. Makalah ini juga ditujukan untuk memenuhi tugas makalah Analisis dan Desain Algoritma. Makalah ini tidak luput dari berbagai kesalahan, oleh karena itu penyusun sangat harapkan kritik dan saran yang membangun untuk kesempurnaan makalah ini. Kami berharap makalah ini dapat bermanfaat dan memberikan nilai guna sebagaimana mestinya.

Bandung, 19 Februari 2013

Tim Penyusun

DAFTAR ISI

KATA PENGANTAR............................................................................................................... 2 DAFTAR ISI........................................................................................................................... 3 ABSTRAK.............................................................................................................................. 4 BAB I PENDAHULUAN ......................................................................................................... 5 1.1 1.2 1.3 Latar Belakang Masalah ...................................................................................... 5 Identifikasi Masalah ............................................................................................ 5 Tujuan Penulisan ................................................................................................. 6

BAB II PEMBAHASAN........................................................................................................... 7 2.1 Pengenalan Algoritma ............................................................................................... 7 2.2 Algoritma Brute Force ............................................................................................... 7 2.3 String ......................................................................................................................... 8 2.4 Implementasi Algoritma Brute Force dalam Pencocokan Pola String ...................... 9 2.4.1 Implementasi pada Pattern Matching Sederhana ............................................. 9 2.4.2 Implementasi pada Pattern Matching Kompleks (brute force attack password generating) ................................................................................................................ 14 BAB III PENUTUP ............................................................................................................... 16 3.1 Simpulan ................................................................................................................. 16 3.2 Saran ....................................................................................................................... 16 DAFTAR PUSTAKA ............................................................................................................. 17

ABSTRAK

Makalah ini membahas tentang pola pencocokan kumpulan karakter huruf/kata (selanjutnya disebut String) yang satu dengan String yang lainnya menggunakan Algoritma Brute Force atau biasa disebut Algoritma Naf (Nave Algorithm). Cara penyelesaian masalah pencocokan pola String dengan Algoritma Brute Force tergolong termasuk cara penyelesaian yang tidak cerdas karena memiliki cara kerja yang sederhana. Di dalam makalah ini akan dibahas tentang : 1) Pengenalan Algoritma, 2) Apa itu Algoritma Brute Force, 3) Apa itu String, 4) Pencocokan Pola String dengan Algoritma Brute Force, 5) Kompleksitas Algoritma, 6) Kesimpulan

BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Pencocokan Pola String kini semakin sering digunakan oleh para pembuat/pengembang perangkat lunak baik dalam skala kecil maupun skala besar (enterprise). Pencocokan pola string dalam hal ini bukanlah pencocokan pola dengan hanya menggunakan satu kondisi (if conditional melibatkan 2 data tetap) melainkan menggunakan perulangan (looping) dengan menggunakan semua peluang/kemungkinan yang ada untuk mendapatkan hasil yang sesuai. Di dalam (Data Base Management System) DBMS pola pencocokan ini digunakan untuk pengambilan (fetching) data (SELECT, INSERT, UPDATE). Di dalam dunia peretasan biasanya pola pencocokan ini digunakan untuk mengambil data yang tersimpan/tersembunyi, misalkan data rahasia/ PIN/password. Dalam kasus ini, pencocokan pola string menggunakan Algoritma Brute Force yang dianggap sederhana dan menjamin atas keberhasilan pencarian hasil yang diinginkan. Karena Brute Force secara tidak cerdas mencoba semua peluang yang mungkin, sebelum hasil yang diinginkan sesuai dengan hasil dari proses pencocokan. 1.2 Identifikasi Masalah Dengan memperhatikan latar belakang masalah yang terjadi, di sini hanya di bahas tentang masalah berikut : 1. 2. 3. 4. 5. Pengenalan algoritma secara singkat. Apa itu algoritma Brute Force. Apa itu String. Pencocokan Pola String dengan Algoritma Brute Force. Kompleksitas Algoritma Brute Force dalam pencocokan pola String

1.3 Tujuan Penulisan

Tujuan penyusunan makalah ini untuk : 1. Mengetahui secara jelas bagaimana Algoritma Brute Force bekerja untuk pencocokan pola string. 2. Sebagai pembanding dengan algoritma yang lain dalam

pencocokan pola string. 3. Memperhatikan kompleksitas penggunaan algoritma brute force dalam mencocokkan pola string. 4. Membedakan efisiensi antara penggunaan algoritma Brute Force dengan algoritma yang lain.

BAB II PEMBAHASAN
2.1 Pengenalan Algoritma Algoritma atau dapat diartikan sebagai susunan/langkah/urutan yang logis dilakukan untuk memecahkan suatu masalah dan mendapatkan hasil yang diinginkan. Algoritma tidak hanya dikaitkan dengan dunia komputer melainkan tindakan dan kegiatan yang kita lakukan sehari-hari dalam menyelesaikan masalah. Algoritma berbeda dengan Logaritma yang merupakan fungsi Matematika. Contoh Algoritma dalam kehidupan sehari-hari, Langkah membuat Nasi Goreng : Siapkan alat dan bahan dalam pembuatan nasi goring, misalkan nasi, bumbu, alat untuk memasak, telur, dan lainnya Nyalakan api dalam keadaan sedang, panaskan wajan dan masukkan minyak goreng secukupnya Masukkan telur dan bumbu nasi goreng ke dalam wajan Masukkan nasi ke dalam wajan Aduk secara merata sampai nasi goreng benar-benar matang Matikan api dan hidangkan nasi goreng ke atas piring Nasi Goreng siap dinikmati

2.2 Algoritma Brute Force Algoritma Brute Force adalah salah satu cara penyelesaian masalah khususnya di dalam dunia komputer. Brute Force adalah sebuah pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah (problem statement) dan definisi konsep yang dilibatkan.

Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas (obvious way). Algoritma yang secara jelas langsung ke pusat permasalahan. Algoritma ini biasanya tidak memerlukan teori khusus untuk mengimplementasikannya. Algoritma ini sering juga disebut Algoritma sapu jagad karena hampir semua persoalan pemrograman bisa diselesaikan dengan algoritma ini. Algoritma Brute Force sering disebut Algoritma tidak cerdas karena tidak memerlukan pemikiran secara kompleks, hanya dengan beberapa baris semua permasalahan dapat dipecahkan dengan mudahnya. Kelemahan Algoritma Brute Force yaitu lemah dalam sisi penggunaan memori pada komputer jika data yang diinginkan berada dalam titik tengah ke atas (> n/2). Apa yang dimaksud dengan titik tengah ke atas? Yaitu titik dimana ketika data yang akan dicari berjumlah 10.000 dan brute force melakukan perulangan pencarian data lebih dari 10.000/2 = 5.000 kali. Brute Force menjadi sangat efektif ketika data yang akan dicari berada pada titik tengah ke bawah ( < n/2 ).

2.3 String String dalam pemrograman komputer adalah sebuah deret

simbol/karakter. String digunakan sebagai tipe data pada pemrograman komputer. Tipe data string adalah tipe data yang digunakan untuk menyimpan barisan karakter dengan indeks terurut. Contoh : AKU adalah kumpulan dari tiga karakter dengan A pada indeks 0, K pada indeks 1, dan U pada indeks 2. Umumnya indeks dimulai dari angka 0. Banyak sekali algoritma dalam

pengolahan String, misalkan penghitungan jumlah karakter pada String (strlen pada bahasa C dengan menggunakan library string.h), penyalinan String (strcpy pada library string.h), dan berbagai pemrosesan String lainnya.

Pseudo Code Untuk String dalam bahasa C

#include <stdio.h> int main() { char string[100]; string = "Hello world"; return 0; }

2.4 Implementasi Algoritma Brute Force dalam Pencocokan Pola String

2.4.1 Implementasi pada Pattern Matching Sederhana

Algoritma Brute Force dalam pencocokan Pola String sederhana tidaklah serumit dengan menggunakan Algoritma Cerdas misalnya Knutt-Morris-Pratt Algorithm , Algoritma Brute Force berperan memeriksa dan membandingkan Pattern yang dicari dengan Pattern yang ada di String. Bila hasil cocok, maka program melakukan keluaran sesuai dengan perintah. Bila hasil belum ditemukan maka program akan melakukan perulangan hingga jumlah peluang yang mungkin terjadi.

Pattern Matching Sederhana : Diberikan satu String yang akan dicari polanya,
#include <stdio.h> int main() { //String char kata[11]; kata = "ihaveadream"; //Pola yang dicari char cari[3]; cari = ead; return 0; }

Data yang disimpan di variabel : Char i h 1 a 2 v 3 e 4 a 5 d 6 r 7 e 8 a 9 m 10

Indeks 0

Char Indeks

e 0

a 1

d 2

Algoritma Brute Force Pattern Matching (dalam bahasa C) :


int i; int indeks; for(i=0;i<kataLength-cariLength+1;i++) { int j=0; while(j<cariLength && kata[i+j] == cari[j]) { j++; if(j >= cariLength)

10

{ indeks = i; //posisi pattern ditemukan = i } } }

Cara kerja Algoritma Brute Force pada Pattern Matching :

i e

h a e

a d a e

Panjang String = 11 Panjang Pattern = 3

d a e d a e d a e d a e d a e d a e d a d

Jumlah perulangan = Panjang String Panjang Pattern (ditambah 1 jika indeks dimulai dari 0)

Algoritma ini menyelesaikan masalah dengan mencoba kemungkinan dari awal hingga akhir secara terurut.

Berikut Pseudo Code (dalam bahasa C) untuk Pattern Matching Sederhana dengan Brute Force
#include <stdio.h> #include <string.h> int main() { //String char kata[100];

11

scanf("%s",&kata); //Pola yang dicari char cari[10]; scanf("%s",&cari); //strlen = fungsi untuk mendapatkan panjang string int cariLength = strlen(cari); int kataLength = strlen(kata); //Mulai Brute Force dalam Pencarian String int i; int indeks; for(i=0;i<kataLength-cariLength+1;i++) { int j=0; while(j<cariLength && kata[i+j] == cari[j]) { j++; if(j >= cariLength) { indeks = i; //posisi pattern ditemukan = i } } } //Akhir Brute Force Pattern Matching printf("%d",indeks); return 0; }

12

Run Program dari Pseudo Code diatas : Masukkan : ihaveadream ead

Keluaran : 4 Contoh Run Program brute.exe

Kompleksitas dari Program ini adalah O((n-m+1)m) dimana n sebagai jumlah panjang karakter dari String Utama (dalam kasus ini adalah kataLength), m adalah panjang karakter dari Pattern yang dicari (dalam kasus ini adalah cariLength). Kompleksitas dari Sample Program pada makalah ini adalah = O ( ( 11 - 3 + 1 ) * 3 ) = 27 (bisa juga diartikan maksimal 27 pemrosesan yang terjadi pada potongan algoritma pseudo code di atas)

13

2.4.2 Implementasi pada Pattern Matching Kompleks (brute force attack password generating)

Kasus kehilangan password dikarenakan lupa adalah hal yang sangat sering terjadi di era teknologi dengan high security seperti sekarang. Tercatat bahwa pengguna Yahoo ditemukan 2.149 dari 50.100 pengguna (4,28%) pernah mengalami kasus lupa password dalam tiga bulannya (Florencio & Herley, 2007) Tetapi disamping itu, para pengembang perangkat lunak kini menciptakan cara bagaimana password tersebut dapat didapatkan kembali. Dengan Algoritma Brute Force, Password dapat didapatkan dengan Pattern Matching kombinasi dari simbol dan karakter yang tersupport oleh program. Misalnya dictionary attack, yaitu penyerangan Pattern Matching dengan mencocokkan Password dengan kata-kata pada bahasa inggris. Brute Force Attack yaitu perulangan dari 1 karakter/simbol hingga batasan dari program atau bahkan tak terhingga sampai password tersebut didapatkan. Cara kerja yang dilakukan oleh Brute Force Attack Mengadaptasi Cara kerja dasar Algoritma Brute Force yaitu dengan tidak cerdasnya mencoba satu persatu kombinasi karakter dengan cara rekursif dari 1 sampai tak terhingga atau batas yang ditentukan. Contoh Brute Force Attack :
Password = zcore ,5 karakter. Max pencarian dengan 62 karakter = 62 = 916132832 kombinasi z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z 0-z c o r e Panjang Password = 5 Uji Panjang = 1 Diulang sampai 62 karakter (a-z, A-Z, 0-9) Uji Panjang = 2 Diulang sampai 62x62 kombinasi Uji Panjang = 3 Diulang sampai 62x62x62 kombinasi Uji Panjang = 4 Diulang sampai 62x62x62x62 kombinasi Uji Panjang = 5 Diulang sampai 62x62x62x62x62 kombinasi
5

14

Kelemahan Brute Force Attack adalah waktu yang dibutuhkan relatif sangat lama. Untuk Password 1 karakter menggunakan 62 Karakter (26 Huruf kecil, 26 Huruf Besar, dan 10 angka) terdapat 62 kali looping dari 0 hingga z. Untuk Password 2 Karakter menggunakan 62 x 62 kombinasi karakter dari 00 hingga zz. Itupun belum termasuk karakter khusus seperti ! (tanda seru), (/), garis miring, dan karakter lainnya hingga menambah waktu pemrosesan. Didapat x n dimana x adalah jumlah karakter yang di support oleh program dan n adalah jumlah panjang password yang dicari. Waktu pemrosesan pada program bergantung pada memori komputer yang digunakan dan panjang password yang dicari. Data dari 7-zip tentang waktu peretasan password : Panjang Password Single User Attack Organization Attack 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2s 1 min 30 min 12 hours 14 days 1 year 10 years 19 years 26 years 37 years 46 years 55 years 64 years 73 years 82 years 91 years 100 years 1s 1s 1s 1s 1s 1s 1s 20 s 9 min 4 hours 4 days 4 months 4 years 13 years 22 years 31 years 40 years

15

BAB III PENUTUP


3.1 Simpulan

Dapat disimpulkan bahwa efisiensi atau efektifitas suatu algoritma tidak dapat ditentukan secara kasar, karena dalam keadaan tertentu, algoritma tidak cerdas bias menyelesaikan masalah yang bahkan algoritma cerdas pun tidak dapat selesaikan atau best case dari algoritma tidak cerdas ini akan menemukan hasil yang dicari secara langsung tanpa proses yang lama. Algoritma Brute Force merupakan penyelesaian sederhana untuk mendapat hasil yang maksimal, seperti pencarian Pattern Matching dan brute force attack password generating seperti paparan di atas pada Bab pembahasan. Algoritma Brute Force menjamin bahwa hasil yang dicari akan didapat dengan mengesampingkan waktu pencarian. Semakin rumit suatu algoritma maka semakin besar celah (bug) yang terdapat pada algoritma tersebut. Algoritma Brute Force yang sangat sederhana dapat juga menjadi basis atau dasar pembanding kualitas dengan algoritma yang lainnya.

3.2 Saran
Sangat tidak disarankan jika algoritma brute force dianggap cara yang tidak efisien dan tidak efektif, justru kebanyakan orang menyukai algoritma ini dikarenakan pola pemikiran yang sederhana menyerupai pola pikir manusia dalam penyelesaian masalah. Algoritma Brute Force dapat menjadi pertimbangan dalam pengembangan software baik itu digunakan sebagai algoritma dasar perangkat lunak yang dipakai, ataupun algoritma pembanding dengan algoritma lainnya.

16

DAFTAR PUSTAKA
Abdeen, Rawan. (2011). An Algorithm for String Searching Based on Brute-Force Algorithm. (Online) Tersedia: http://paper.ijcsns.org/07_book/201107/20110704.pdf (17 Februari 2013) Alfaris, F, Zaki. (2007). Penggunaan Brute Force untuk Meretas Password File Rar. (Online) Tersedia: http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2006-2007 /Makalah_2007/MakalahSTMIK2007-097.pdf (17 Februari 2013) Crochemore, Maxime. (2013). Pattern Matching and text compression algorithms. (Online) Tersedia: http://www.cs.ucf.edu/courses/cda6211/patmatch.pdf (18 Februari 2013) Munir, Rinaldi. (2004). Bahan Kuliah ke-1 IF2251 Strategi Algoritmik. (Online) Tersedia: http://kur2003.if.itb.ac.id/file/trans-Bahan%20Kuliah%20ke-1.doc (18 Februari 2013)

17