Anda di halaman 1dari 11

IMPLEMENTASI ALGORITMA BRUTE FORCE

DALAM PENCOCOKAN POLA STRING


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

Ahmad Rivaldi
163112706440023

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA

UNIVERSITAS NASIONAL

2018
PENDAHULUAN

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.

2
PEMBAHASAN

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

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.

3
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 ).

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.

4
Pseudo Code Untuk String dalam bahasa C

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

Implementasi Algoritma Brute Force dalam Pencocokan Pola String

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.

5
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 a v e a d r e a m
Indeks 0 1 2 3 4 5 6 7 8 9 10

Char e a d
Indeks 0 1 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)

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

Cara kerja Algoritma Brute Force pada Pattern Matching :

i h a v e a d r e a m Panjang String = 11
Panjang Pattern = 3
e a d
Jumlah perulangan = Panjang String –
e a d
Panjang Pattern (ditambah 1 jika indeks
e a d dimulai dari 0)
e a d
e a d Algoritma ini menyelesaikan masalah
dengan mencoba kemungkinan dari
e a d
awal hingga akhir secara terurut.
e a d
e a d
e a d

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];

7
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;
}

8
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)

9
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 = 625 = 916132832 kombinasi

z c o r e Panjang Password = 5
0-z Uji Panjang = 1 Diulang sampai 62 karakter (a-z, A-Z, 0-9)

0-z 0-z Uji Panjang = 2 Diulang sampai 62x62 kombinasi


0-z 0-z 0-z Uji Panjang = 3 Diulang sampai 62x62x62 kombinasi
0-z 0-z 0-z 0-z Uji Panjang = 4 Diulang sampai 62x62x62x62 kombinasi
0-z 0-z 0-z 0-z 0-z Uji Panjang = 5 Diulang sampai 62x62x62x62x62 kombinasi

10
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 2s 1s
2 1 min 1s
3 30 min 1s
4 12 hours 1s
5 14 days 1s
6 1 year 1s
7 10 years 1s
8 19 years 20 s
9 26 years 9 min
10 37 years 4 hours
11 46 years 4 days
12 55 years 4 months
13 64 years 4 years
14 73 years 13 years
15 82 years 22 years
16 91 years 31 years
17 100 years 40 years

11

Anda mungkin juga menyukai