Kamis, 06 November 2008

Frequency Analysis

Salah satu langkah pertama dalam melakukan penyerangan (attack) terhadap suatu sistem atau situs adalah dengan melakukan analisa statistik frekuensi huruf yang muncul dari suatu pesan atau berita. Cara ini disebut dengan “Frequency Analysis”. Kali ini penulis mencoba membuat program untuk menghitung banyaknya huruf yang keluar dari suatu pesan atau berita. Tujuan dari dibuatnya program ini adalah untuk menentukan huruf apakah yang sering muncul dalam pesan yang menggunakan Bahasa Inggris, Bahasa Indonesia dan bahasa daerah (Bahasa Palembang).

Program kecil yang dibuat dijalankan pada web browser dan menggunakan format php. Script yang dibuat diberi nama hitung.php dan bisa dilihat sebagai berikut :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Aplikasi Menghitung Huruf</title>
<style type="text/css">
<!--
.style2 {
font-family: Georgia, "Times New Roman", Times, serif;
color: #CCFFFF;
}
.style3 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: x-large;
}
.style6 {font-family: Arial, Helvetica, sans-serif; font-size: small; }
.style7 {font-size: small}
-->
</style>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" bgcolor="#FF3366"><div align="center" class="style3">..:: APLIKASI MENGHITUNG HURUF ::..</div></td>
</tr>
<tr>
<td height="23" colspan="2" bgcolor="#FF3366"><div align="center" class="style2">Copyright@2008 by Isnain Fikriansyah</div></td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFCC66"><div align="center">
<p>
<?php
if ($_POST[Submit]){
$hur=array();
$val=array();
$j=0;
$_POST[parag]=strtolower($_POST[parag]);
for($i=0;$i<=strlen($_POST[parag])-1;$i++) {
if(!in_array($_POST[parag]{$i},$hur)){
if(ord($_POST[parag]{$i}) >96 AND ord($_POST[parag]{$i})<123){
$hur[$j]=$_POST[parag]{$i};
$val[$j]++;
$j++;
}}
else {
$key=array_search($_POST[parag]{$i},$hur);
$val[$key]++;
}}
for($x = 0; $x < count($val)-1; $x++) {
for($y = 0; $y < count($val)-1; $y++) {
if($val[$x] > $val[$y]) {
$hold = $val[$x];
$val[$x] = $val[$y];
$val[$y] = $hold;
$temp = $hur[$x];
$hur[$x]=$hur[$y];
$hur[$y]=$temp;
}}}
?>
</p>
<title></title>
<style type="text/css">
<!--
.style1 {color: #99FFFF}
-->
</style>
<table width="1023" cellpadding="0" cellspacing="0" border="1">
<?
for($i=0;$i<=count($hur)-1;$i++){
echo '<tr><td width="10%" align="center">'.($hur[$i]==' '?'spasi':$hur[$i]).'</td><td width="15%" align="center">'.$val[$i].' ('.number_format((($val[$i]/array_sum($val))*100),2,'.','').'%)</td><td><img src="batang.gif" height="20" width="'.($val[$i]/array_sum($val)*100).'%"</td></tr>';}
echo '</table><br>Jumlah : '.array_sum($val);
}
else {
?>
<form name="form1" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<span class="style1">
<label>
<textarea name="parag" cols="100" rows="25" wrap="virtual"></textarea>
</label>
<br>
<br>
<label> </label>
</span>
<label>
<input type="submit" name="Submit" value="---- OK ----">
</label>
</form>
<?
}
?>
<tr>
<td width="6%" bgcolor="#FFCC66"><div align="right"><span class="style6"> Catatan : </span></div></td>
<td width="94%" bgcolor="#FFCC66"><span class="style6">1. Aplikasi ini hanya dipakai untuk mengitung karakter huruf A sd. Z (a sd, z) </span></td>
</tr>
<tr>
<td width="6%" bgcolor="#FFCC66"><span class="style7"></span></td>
<td width="94%" bgcolor="#FFCC66"><span class="style6">2. Karakter selain huruf A sd. Z tidak dihitung </span></td>
</tr>
<tr>
<td width="6%" bgcolor="#FFCC66"><span class="style7"></span></td>
<td width="94%" bgcolor="#FFCC66"><span class="style6">3. Hasil perhitungan ditampilkan dengan jumlah dan persentasenya </span></td>
</tr>
</table>
</body>
</html>

Gambar aplikasi setelah dijalankan adalah sebagai berikut :

1. Tampilan Awal

2. Tampilan Hasil

Setelah aplikasi tersebut diujicobakan pada Bahasa Inggris, Bahasa Indonesia, dan Bahasa Daerah Palembang, menghasilkan statistik sebagai berikut :

1. Bahasa Inggris (sampel 3631 huruf)

Sumber : http://www.thejakartapost.com/news/2008/11/08/editorial-in-search-a-strong-leader.html

a. Huruf E (13,38%)

b. Huruf T (10,66%)

c. Huruf I (8,43%)

d. Huruf A (7,38%)

e. Huruf O(7,35%)

f. Huruf N (7,16%)

2. Bahasa Indonesia (sampel 4254 huruf)

Sumber : http://cetak.kompas.com/read/xml/2008/11/07/0110071/tajuk.rencana

a. Huruf A (20,83%)

b. Huruf N (9,97%)

c. Huruf E (8,51%)

d. Huruf I (7,55%)

e. Huruf R (5,24%)

f. Huruf K (5,12%)

3. Bahasa Daerah Palembang (sampel 7442 huruf)

Sumber : http://bikpici.wordpress.com/2008/03/30/bau-sampah-di-gor-sebagai-bumbu-utama-nasgor-enyaaakenyaaakenyaaak

a. Huruf A (17,94%)

b. Huruf K (9,10%)

c. Huruf N (8,60%)

d. Huruf I (7,40%)

e. Huruf E (7,27%)

f. Huruf O (5,62%)

Tidak ada komentar: