Sabtu, 26 September 2015

Steganography: Hiding Data Within Data



softscients - LSB dikenal sebagai metode untuk steganografi yang diterapkan untuk menyembunyikan pesan juga bisa menyembunyikan sebuah file kedalam sebuah gambar yaitu dengan membaca data file tersebut kedalam sebuah byte (256) yang kemudian disisipkan kedalam pixel gambar.


Penulis menggunakan Java untuk melakukan teknik tersebut, tidak ada batasan jenis file yang akan disimpan kedalam sebuah gambar! Bahkan menyembunyikan gambar dalam gambar pun bisa dilakukan! Asalkan jumlah pixel nya cukup untuk menampung byte tersebut!



Anda bisa download di

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;


public class DemoConsole 
{
 public static void main(String []args) throws IOException
 {
            
            DemoConsole.cobaSisip();
            DemoConsole.cobaEkstrak();
 }
        public static void cobaSisip()
        {
            try {
                //tahap 1 : menentukan gambar sebagai tempat untuk menyembunyikan
                BufferedImage gambarYangDisisipi = ImageIO.read(new File("D:/gambar.jpg"));
                //tahap 2 : menentukan file yang akan disisipkan
                ImplementasiStego st = new ImplementasiStego();
                String fileYangAkanDisembunyikan = "D:/file pesan.txt";
                //cek keberadaan file tersembunyi
                if(st.cekApakahSudahAdaFileTersembunyi(gambarYangDisisipi)) 
                {
                    //jika ada file yang sudah disembunyikan!
                    //maka proses dibatalkan
                    System.out.println("sudah ada file tersembunyi");
                    return;
                }
                //jika kapasitas penyimpanan!
                //apakah cukup??
                if(!st.cekApakahGambarCukupKapasitasnya(gambarYangDisisipi, fileYangAkanDisembunyikan)) 
                {
                    //jika ini terjadi, maka anda ganti saja gambar dengan ukuran yang lebih besar!
                    //karena tidak cukup sebagai tempat untuk penyimpanan file!
                    System.out.println("Ukuran file terlalu besar! \n silahkan ganti gambar!!");
                    return;
                }
                //tahap 3 : tentukan lokasi gambar HASIL SISIP
                String lokasiGambar = "D:/gambar2.bmp";
                boolean hasil = st.sisip(gambarYangDisisipi, fileYangAkanDisembunyikan,lokasiGambar);
                //jika berhasil!
                if(hasil)                {
                    System.out.println("Berhasil!");
                }else
                {
                    System.out.println("Gagal");
                }
                
            } catch (IOException ex) {
                Logger.getLogger(DemoConsole.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        }
        public static void cobaEkstrak()
        {
            try {
                BufferedImage lokasiGambaryangMungkinAdaFilenya = ImageIO.read(new File("D:/gambar2.bmp"));
                ImplementasiStego st = new ImplementasiStego();
                String lokasiFolderHasilEkstrak = "D:/folder/";
                //jika tidak menghasilkan sebuah lokasi file!
                String hasil = st.ekstrak(lokasiGambaryangMungkinAdaFilenya,lokasiFolderHasilEkstrak);
                System.out.println(hasil);
                
            } catch (IOException ex) {
                Logger.getLogger(DemoConsole.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        }

}


       
 
Posting Komentar