Minggu lalu, sehabis pangkas rambut ditemani Fadhli, sembari menunggu hujan reda kami berteduh di sebuah kios yang menjual mie aceh, di daerah Tubagus Ismail. Di kedai itu, aku pun mulai membuka koran dan terfokus pada sebuah iklan lowongan pekerjaan namun dibungkus dengan sesuai yang menarik: CODE CHALLENGE dari Bank Jateng.
Tanpa pikir panjang, aku pun mulai mengambil secarik kertas untuk mencoba membedah kode yang mereka berikan. Sebuah kode singkat, tidak terlalu sulit, bahkan hanya cukup copy paste. Tetapi karena saat itu aku tidak membawa laptop, maka kodenya coba aku jabarkan di dalam secarik kertas.
Sesampai di rumah, aku pun coba menuliskan kode itu ke dalam kode PHP.
<?php $z = "Nomor KTP"; $x = array(); $j = 0; $k = 0; for($i=0; $i<strlen($z); $i++) { if($j >= 4) { if($k < 4) { $x[$i] = $z[$i-4]; $k++; } else { $x[$i] = $z[$i+4]; $j = 0; $k = 0; } } else { $x[$i] = $z[$i+4]; } $j++; } echo implode($x); ?> |
Tetapi tidak disangka, ternyata aku mendapatkan kode kesalahan:
Notice: Uninitialized string offset: 12 in D:\xampp\htdocs\codechallenge.php on line 19
r KTNomo
Yang setelah ditelusuri, ada kesalahan pada bagian ELSE
di scope if($k < 4)
di mana ketika nilai $k <= 4
maka nilai $i >= 8
sehingga nilai untuk $z[$i+4]
atau $z[8+4]
sama dengan $z[12]
adalah tidak ada. Total dari char untuk variabel $z
sendiri adalah 9.
Dengan pede-nya, bahkan saya sempat mengirimkan kesalahan algoritma pada kode ini ke pihak rekrutmen Bank Jateng beserta attachment dalam bentuk word.
Setelah menunggu 3 hari tidak ada tanggapan, maka saya coba masukkan nilai hasil generate dari kode saya tersebut ke dalam website rekrutmen.bankjateng.co.id. Bahkan saya membuat beberapa asumsi nilai dari generate tersebut, dan karena rasa malas memasukkan satu-satu, maka satu membuat satu program lain yang saya namanya brute.php. Fungsinya adalah memasukkan nilai kode implode ke dalam website rekrutmen Bank Jateng.
<?php $starttime = microtime(true); $ktp = rand(1,5) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,2); $ktp .= rand(0,9) . '0' . rand(1,9) . rand(7,9) . rand(0,9) . '00' . rand(0,9) . rand(1,9); $x = array('r KTNomo', 'r+KTNomo', 'r%20KTNomo', 'r KTNomo ', 'r+KTNomo+', 'r%20KTNomo%20', 'r KTNomor', 'r+KTNomor', 'r%20KTNomor', 'r KTNomoo', 'r+KTNomoo', 'r%20KTNomoo', 'r ktnomo', 'r KTPr', 'r+KTPr', 'r%20KTPr', 'r KTNomom', 'r+KTNomom', 'r%20KTNomom', 'r KTNomoK', 'r+KTNomoK', 'r%20KTNomoK'); $cari = "Hasil Implode X tidak cocok..!!"; $sukses = ""; $url = 'http://rekrutmen.bankjateng.co.id/userAuth.php'; $reff = 'http://rekrutmen.bankjateng.co.id/index.php'; $logs = fopen("data.txt", "a+"); for($i=0; $i < count($x); $i++) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "no_ktp=$ktp&implode_x=$x[$i]"); curl_setopt($ch, CURLOPT_REFERER, $reff); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if(strstr($result, $cari)) { $sukses = "GAGAL"; }else{ $sukses = "BERHASIL !!!"; } $writes = $ktp . ";" . $x[$i] . ";" . $sukses . "\n"; fwrite($logs, $writes); curl_close($ch); sleep(60); } fclose($logs); $stoptime = microtime(true); $status = ($stoptime - $starttime) * 1000; $status = floor($status); echo 'program berjalan selama: ' . $status . ' ms \n'; ?> |
Tetapi tetap tidak berhasil juga. Sampai kemudian saya tersadar akan sesuatu. Kenapa tidak saya gantikan saja nilai variabel $z="Nomor KTP"
dengan nomor ktp saya, sehingga menjadi $z="1234560101990001"
. Dan hasilnya, walla!!!
Setelah saya coba masukkan ke website http://rekrutmen.bankjateng.co.id dan akhirnya berhasil. Mengingat kisah ini, saya jadi malu sendiri. Bahkan karena kebuntuan yang cuma sepele itu saya mencoba menghubungi beberapa teman saya. Hahaha...