Tuesday, November 30, 2010

Belajar Jaringan pada Java

saya sedang belajar jaringan pada java,
pada Jaringan java ada yang akan menjadi server, dan ada yang akan menjadi client.

ini source code untuk server :

package server;
import java.net.*;
import java.io.*;
public class servertyang {
    public static void main(String [] args) {
        ServerSocket server = null;
        Socket client;
        try {
            server = new ServerSocket(31);
            //1234 is an unused port number
        } catch (IOException ie) {
            System.out.println("Cannot open socket.");
            System.exit(1);
        }
        while(true) {
            try {
                client = server.accept();
                OutputStream clientOut = client.getOutputStream();
                PrintWriter pw = new PrintWriter(clientOut, true);
                InputStream clientIn = client.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(clientIn));
               
                String in = br.readLine();
                if(in.equals("Halo"))pw.println("apa kabar?");
                if(in.equals("Boleh Kenalan?")) pw.println("Boleh donk, aku tyang, kamu siapa?");
                if(in.equals("Saya Jawi Salam kenal.")) pw.println("salam kenal juga.");
               
               
            } catch (IOException ie) {
            }
        }
    }
}


dan yang ini untuk client :

package client;
import java.io.*;
import java.net.*;
public class clienttyang {
    public static void main(String args[]) {
        try {//Socket client = new Socket("133.0.0.1", 1234);
            Socket client = new Socket("192.168.78.136",31);
            InputStream clientIn = client.getInputStream();
            OutputStream clientOut = client.getOutputStream();
            PrintWriter pw = new PrintWriter(clientOut, true);
            BufferedReader br = new BufferedReader(new InputStreamReader(clientIn));
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Type a message for the server: ");
            pw.println(stdIn.readLine());
            System.out.println("Server message: ");
            System.out.println(br.readLine());
           
            pw.close();
            br.close();
            client.close();
           
            } catch (ConnectException ce) {
            System.out.println("Cannot connect to the server.");
            } catch (IOException ie) {
            System.out.println("I/O Error.");{
           
        }
    }
}
}


kedua source code di atas merupakan source code sederhana untuk jaringan pada java. kata dosen saya, source code itu bisa dikembangkan menjadi aplikasi chat.

menyembunyikan Pesan dalam file

         Apakah kamu pernah terpikirkan bahwa sebuah gambar JPG dapat digunakan untuk menyembunyikan pesan rahasia untuk dikirimkan?
         Jawabannya tentu saja ada. caranya dapat menggunakan STEGANOGRAFI. Steganografi adalah seni dan ilmu menulis pesan tersembunyi atau menyembunyikan pesan dengan suatu cara sehingga selain si pengirim dan si penerima, tidak ada seorangpun yang mengetahui atau menyadari bahwa ada suatu pesan rahasia (kata wikipedia). disini saya garis bawahi tentang mengetahui atau menyadari, karena kriptografi memang ditujukan untuk menyembunyikan pesan bukan mengengkripsinya.
          Bagaimana cara menyembunyikannya?
          Caranya sederhana, cukup dengan menumpangkan pesan pada suatu file. pada zaman digital seperti sekarang, semuanya serba digital, dari gambar, musik,video,pesan,data,dsb. Hal ini dapat dimanfaatkan untuk menumpangkan pesan pada suatu file. Namun, cara menumpangkan pesan tersebut akan tergantung dari file yang digunakan sebagai pembawa(carrier).
          Menyembunyikan file pada Gambar.
          Gambar digital sebenarnya adalah sebuah file 24-bit color. Artinya setiap pixel dari sebuah gambar akan terdiri dari 24-bit color yang terdiri dari 8-bit warna merah(Red), 8-bit warna hijau(Green), dan 8-bit warna biru(Blue). 8-bit berarti xxxxxxxx dimana x adalah 0 atau 1 (bilangan biner), dengan begitu dalam setiap 8-bit dapat memiliki 2^8 (256) kombinasi warna, atau dalam satu pixel 24-bit memiliki 2^24 warna. Dengan struktur file seperti ini, terdapat suatu algoritma Steganografi yang dapat digunakan untuk menyembunyikan dalam file gambar tersebut tanpa ada kecurigaan yaitu dengan metode Least Significant Bits (LSB) insertion atau sebut saja metode penyisipan LSB.
          Metode Least Significant Bits (LSB) insertion.
          Pada 8-bit setiap pixel akan digunakan bit yang paling belakang contoh : 01011011 yang dicetak tebal adalah LSB. LSb ini yang akan menggantikan setiap bit dari pesan yang akan disembunyikan. Sebagai ilustrasi, akan disembunyikan pesan berupa huruf 'C' dimana dalam kode ASCII bernilai 67 (1000011). Pesan tersebut akan disembunyikan dalam sebuah gambar dengan 3 pixel rangkaian bit
10100011.10010100.01100010 00100101.10101000.10001001 1010010.01011010.10010110
          Karena ASCII hanya 7-bit kita akan menambahkan 2 buah bit 0 di depannya. sehingga 'C' menjadi 001 000 011. Masing-masing dari setiap 9 bit tersebut akan di subtitusikan pada bit terakhir setiap 8-bit, sehingga rangkaian bit dari 3 pixel yang tadi digunakan menjadi
10100010.10010100.01100011 00100100.10101000.10001000 1010010.01011011.10010111
        Dengan demikian sulit bagi seseorang untuk menyadari bahwa pada gambar tersebut memiliki sebuah pesan.
        Namun, metode LSB ini memiliki beberapa kelemahan. Pertama, dengan berubahnya bit terakhir dari setiap 8-bit akan menyebabkan gambar menjadi tidak wajar (disebut stego image).

Mungkin sampai disini dulu,kalo ada waktu disambung lagi.