• Tidak ada hasil yang ditemukan

IMPLEMENTASI STEGANOGRAFI MENGUNAKAN METODE LSB “LEAST SIGNIFICANT BIT” (STUDI KASUS UNTUK GAMBAR)

N/A
N/A
Protected

Academic year: 2017

Membagikan "IMPLEMENTASI STEGANOGRAFI MENGUNAKAN METODE LSB “LEAST SIGNIFICANT BIT” (STUDI KASUS UNTUK GAMBAR)"

Copied!
33
0
0

Teks penuh

(1)

IMPLEMENTASI STEGANOGRAFI MENGUNAKAN

METODE LSB “LEAST SIGNIFICANT BIT”

(STUDI KASUS UNTUK GAMBAR)

TUGAS AKHIR

Disusun Oleh :

Wahyudi

201110130311030

JURUSAN ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH MALANG

(2)

ii

LEMBAR PERSETUJUAN

IMPLEMENTASI STEGANOGRAFI MENGUNAKAN

METODE LSB

LEAST SIGNIFICANT BIT

(STUDI KASUS UNTUK GAMBAR)

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana (S1) Teknik Elektro Universitas Muhammadiyah Malang

Disusun Oleh:

Wahyudi

201110130311030

Diperiksa dan disetujui oleh:

Pembimbing 2

Ilham Pakaya.ST NIDN:0717018801 Pembimbing 1

Dr. Ir. Lailis Syafa’ah, MT

(3)

LEMBAR PENGESAHAN

IMPLEMENTASI STEGANOGRAFI MENGUNAKAN

METODE LSB (LEAST SIGNIFICANT BIT)

STUDI KASUS UNTUK GAMBAR

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana (S1) Teknik Elektro Universitas Muhammadiyah Malang

Disusun Oleh:

Wahyudi

201110130311030

Tanggal Ujian : 30 Januari 2016

Periode Wisuda : Februari

Disetujui oleh :

1. Dr. Ir. Lailis Syafa’ah, MT ( Pembimbing I ) NIDN:0721106301

2. Ilham Pakaya.ST ( Pembimbing II )

NIDN:0717018801

3. Machmud Effendy,ST,M.Eng ( Penguji I )

NIDN:0715067402

4. Drs.Budhi Priyanto,M.Si ( Penguji II )

NIDN:0026106701

Mengetahui,

Ketua Jurusan teknik Elektro

(4)

iv

LEMBAR PERNYATAAN

Yang bertanda tangan dibawah ini :

NAMA : Wahyudi

Tempat/Tgl Lahir : Jakarta, 12 Agustus 1992

NIM : 201110130311030

FAK./JUR. : TEKNIK/ELEKTRO

Dengan ini saya menyatakan bahwa Tugas Akhir saya dengan judul

IMPLEMENTASI STEGANOGRAFI MENGUNAKAN

METODE LSB (LEAST SIGNIFICANT BIT) STUDI KASUS

UNTUK GAMBAR

beserta seluruh isinya adalah karya saya sendiri dan bukan merupakan karya tulis orang lain, baik sebagian maupun seluruhnya,kecuali dalam bentuk kutipan yang telah disebutkan sumbernya. Demikian surat pernyataan ini saya buat dengan sebenar-benarnya. Apabila kemudian ditemukan adanya pelanggaran terhadap etika keilmuan dalam karya saya ini, atau ada klaim dari pihak lain terhadap keaslian karya saya ini maka saya siap menanggung segala bentuk resiko/sanksi yang berlaku

Malang, 26 Januari 2016 Yang Membuat Pernyataan

Wahyudi Mengetahui,

Dosen Pembimbing I

Dr. Ir. Lailis Syafa’ah, MT

NIDN:0721106301

Dosen Pembimbing II

(5)

ABSTRAK

Di seluruh dunia, internet (interconnection network) sudah berkembang menjadi salah satu media komunikasi data yang sangat populer. Dengan berbagai teknik pengambilan informasi secara ilegal yang berkembang, banyak orang yang mencoba untuk mengakses informasi yang bukan haknya. Berbagai macam teknik untuk melindungi informasi yang dirahasiakan dari orang yang tidak berhak telah banyak dilakukan dalam upaya mengamankan suatu data penting.Steganografi

adalah salah satu teknik menyembunyikan file pesan agar bagi orang awam tidak

menyadari keberadaan dari file pesan yang disembunyikan. Teknik ini sering digunakan untuk menghindari kecurigaan orang dan menghindari keinginan orang untuk mengetahui isi file pesan tersebut. Citra Digital adalah salah satu media yang paling umum dikenal oleh masyarakat. Penelitian ini bertujuan implementasi steganografi menggunakan metode LSB studi kasus untuk Gambar, sebagai salah satu teknik pengamanan file pesan. Pada teknik steganografi ini digunakan metode LSB (Least Significan Bit) yaitu menyembunyikan byte-byte data atau informasi pada bit terakhir pada citra digital, sehingga tidak tejadi perubahan ukuran dan bentuk terhadap citra digital secara kasat mata, data atau informasi pun dapat dikembalikan seperti semula tanpa ada perubahan ukuran dan bentuknya.

(6)

vi

ABSTRACT

Across the world, the internet (network interconnection) has developed into one of the media data communication is very popular. With a variety of

information retrieval techniques illegally growing, a lot of people trying to access

information that is not right. A variety of techniques to protect confidential

information from unauthorized person has done in an effort to secure the critical

data.Steganografi is one of the techniques that hide the message file for common

people do not realize the existence of a hidden message file. This technique is

often used to avoid suspicion and avoid the desire to know the contents of the

message file. Digital imagery is one of the media that is most commonly known by

the public. This study aims at the implementation of LSB steganography using

case studies to Picture, as one of the security techniques message file. At

steganographic techniques used method of LSB (Least significan Bit) that hide the

bytes of data or information on the last bit of the digital image, so there occurred

changes in the size and shape of the digital image by naked eye, data or

information can be restored without there are changes in size and shape.

(7)

LEMBAR PERSEMBAHAN

Puji syukur kepada Allah SWT atas rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Tugas Akhir ini. Penulis menyampaikan ucapan terima kasih yang sebesar-besarnya kepada :

1. Ibu Dr. Ir. Lailis Syafa’ah, MT dan Bapak Ilham Pakaya. ST selaku pembimbing tugas akhir.

2. Bapak Dekan Fakultas Teknik Universitas Muhammadiyah Malang.

3. Ibu Ir. Nur Alif Mardiyah, MT Ketua Jurusan Teknik Elektro Universitas Muhammadiyah Malang.

4. Seluruh dosen Elektro Universitas Muhammadiyah Malang yang mengajari

ilmu dan pengalaman di dunia elektro masa kini.

5. Kedua orang tua yang sabar membimbing saya untuk belajar ilmu elektro di

Malang.

6. Sahabat teknik elektro angkatan 2011, terimakasih atas semua dukungan dan

(8)

viii

KATA PENGANTAR

Dengan memanjatkan puji syukur kehadirat Allah SWT. Atas limpahan rahmat dan hidayah-NYA sehingga peneliti dapat menyelesaikan tugas akhir yang berjudul :

IMPLEMENTASI STEGANOGRAFI MENGUNAKAN

METODE LSB (LEAST SIGNIFICANT BIT)

STUDI KASUS UNTUK GAMBAR

Di dalam tulisan ini disajikan pokok-pokok bahasan yang meliputi pengertian steganografi, mengenal metode LSB, citra digital, mengenal program mengunakan Delphi dan juga pengenalan pengembangan sistem RAD. Peneliti menyadari sepenuhnya bahwa dalam penulisan tugas akhir ini masih banyak kekurangan dan keterbatasan. Oleh karena itu peneliti mengharapkan saran yang membangun agar tulisan ini bermanfaat bagi berkembangan ilmu pengetahuan kedepan.

Malang, Januari 2016

(9)

DAFTAR ISI

Lembar Judul ... i

Lembar persetujuan ... ii

Lembar Pengesahan ... iii

Lembar Pernyataan ... iv

Abstrak ... v

Abstract ... vi

Lembar Persembahan ... vii

Kata Pengantar ... viii

Daftar Isi ... ix

Daftar Gambar ... xii

Daftar Tabel ... xiv

Daftar Istilah ... xv

BAB I PENDAHULUAN ... 1

1.1Latar Belakang ... 1

1.2Rumusan Masalah ... 2

1.3Batasan Masalah ... 2

1.4 Tujuan Penelitian ... 3

1.5 Metodologi ... 3

1.6 Metode Pengembangan Sistem ... 4

(10)

x

BAB II LANDASAN TEORI ... 6

2.1 Steganografi ... 6

2.2 LSB (Least Significant Bit) ... 13

2.3 ASCII ... 16

2.4 Multimedia ... 19

2.5 Citra Digital ... 20

2.6 Delphi ... 26

2.7 Perancangan Program ... 27

2.8 Konsep RAD ... 32

BAB III PERANCANGAN SISTEM ... 36

3.1 Fase Perancangan Syarat-Syarat ... 36

3.2 Fase Desain RAD ... 37

3.3 Perancangan Antar Mungka ... 41

BAB IV IMPLEMENTASI DAN HASIL PENGUJIAN ... 47

4.1 Fase Implementasi ... 47

4.2 Metode Penyisipan Dan Ekstrak File Image Dan File Pesan ... 48

4.3 Metode File Pesan Dan File Image Jika Digunakan 2 Bit Terakhir ... 50

4.4 Metode File Pesan Dan File Image Jika Digunakan 3 Bit Terakhir ... 51

4.5 Metode File Pesan Dan File Image Jika Digunakan 4 Bit Terakhir ... 52

(11)

4.7 Metode File Pesan Dan File Image Jika Digunakan 6 Bit Terakhir ... 54

4.8 Metode File Pesan Dan File Image Jika Digunakan 7 Bit Terakhir ... 55

4.9 Metode File Pesan Dan File Image Jika Digunakan 8 Bit Terakhir ... 56

4.10 Metode Ukuran File Pesan Terhadap File Image ... 57

4.11 Metode Penyembunyian File ... 58

4.12 Metode File Apa Saja Yang Dapat Disisipkan Ke File Image... 59

4.13 Metode Penyisipan Dan Ekstraksi File Pesan Terhadap Tiga File Image Yang Berbeda ... 60

BAB V PENUTUP ... 61

5.1 Kesimpulan ... 61

5.2 Saran ... 62

(12)

xii

DAFTAR GAMBAR

Gambar 2.1 Perbedaan Pesan yang Disembunyikan ... 7

Gambar 2.2 Diagram Penyisipan dan Ekstraksi Pesan ... 8

Gambar 2.3 Diagram Sistem Steganografi... 9

Gambar 2.4 Spread SpectrumMethod ... 12

Gambar 2.5 Most Significant Bit (MSB) dan Least Significant Bit (LSB) ... 13

Gambar 2.6 Proses File Image Menjadi Kumpulan Pixel-Pixel) ... 13

Gambar 2.7 Nilai-Nilai Pixel Dalam Suatu File Image ... 14

Gambar 2.8 Koordinat Spasial dan Nilai f(x,y) ... 20

Gambar 2.9 Bagan Pengolahan Citra ... 21

Gambar 2.10 Tampilan Form Awal Delphi 2007 Win32 ... 26

Gambar 2.11 Simbol State ... 31

Gambar 2.12 Simbol Transition State ... 31

Gambar 2.13 Simbol Kondisi dan Aksi ... 32

Gambar 2.14 Tahapan-Tahapan RAD... 34

Gambar 3.1 Proses Penyisipan Dan Ekstraksi File Pesan ... 38

Gambar 3.2 Flowchart Proses Penyisipan Pesan Rahasia ... 39

Gambar 3.3 Flowchart Proses Ekstraksi Pesan Rahasia ... 40

Gambar 3.4 LayoutForm Induk ... 42

Gambar 3.5 Rancangan Form Utama Tab Encoding ... 44

(13)

Gambar 3.7 Perancangan Form About ... 46

Gambar 4.1 File Image Sebelum dan Sesudah Disisipakan File Pesan ... 49

Gambar 4.2 File Pesan Rahasia Sebelum Disisipkan ke File Image ... 49

Gambar 4.3 File Pesan yang Diambil Kembali dari File Image ... 50

Gambar 4.4 Perbedaan Kualitas File Image Jika Digunakan 2 Bit Terakhir ... 50

Gambar 4.5 Perbedaan Kualitas File Image Jika Digunakan 3 Bit Terakhir ... 51

Gambar 4.6 Perbedaan Kualitas File Image Jika Digunakan 4 Bit Terakhir ... 52

Gambar 4.7 Perbedaan Kualitas File Image Jika Digunakan 5 Bit Terakhir ... 53

Gambar 4.8 Perbedaan Kualitas File Image Jika Digunakan 6 Bit Terakhir ... 54

Gambar 4.9 Perbedaan Kualitas File Image Jika Digunakan 7 Bit Terakhir ... 55

(14)

xiv

DAFTAR TABEL

Tabel 2.1 Keuntungan dan Kelemahan Metode LSB ... 15

Tabel 2.2 ASCII ... 17

Tabel 2.3 Beberapa Metode dan Perbedaannya ... 27

Tabel 2.4 Simbol-simbol Flowchart ... 29

Tabel 4.1 Uji Ukuran File Pesan Rahasia Terhadap File Image... 57

Tabel 4.2 Tabel Uji Penyembunyian File ... 58

(15)

DAFTAR ISTILAH

ASCII (American Standart Code For Information Interchange):

Standar huruf dan tanda baca untuk komputer. ASCII merupakan kode berupa karakter 8 bit berbentuk angka 1 dan 0 untuk mewakili karakter-karakter alpha numerik.

Bit:

Berasal dari kata binary digit. Merupakan satuan terkecil data komputer yang hanya merupakan angka 0 dan 1. Semua data bisa ditulis dalam bit.

Bit Depth:

Jumlah bit yang digunakan untuk mempresentasikan tiap titik dalam representasi citra grafis. Makin besar jumlah bit yang digunakan untuk mempresentasikan suatu titik, semakin banyak waran dan atau bayangan abu-abu yang dapat dibuat.

Bitmap:

Sebuah image grafis yang disusun dari pixel-pixel dan dikonversikan ke dalam bit. Biasa digunakan dalam Microsoft Windows.

Byte:

Kumpulan delapan buat bit, yang membentuk satu data bermakna, misalnya huruf A, B, atau angka 3,4 dan lain-lain.

Color Depth:

Color depth merujuk pada jumlah warna yang ditampilkan di monitor oleh video

card. Semakin banyak warna yang digunakan, semakin realistis tampilan yang

dapat dilihat. Seperti gambar yang didapat dari foto, merubah color depth komputer dapat meningkatkan kualitas gambar, namun dapat juga tidak apabila foto itu sendiri terbatas pada jumlah warna tertentu.

Encrypt:

Penerjemahan data menjadi kode rahasia. Enkripsi adalah cara yang paling efektif untuk memperoleh pengamanan data. Untuk membaca file yang di-enkrip, kita

harus mempunyai akses terhadap kata sandi yang memungkinkan kita men-dekrip

pesan tersebut.

Decrypt:

(16)

xvi

Error:Istilah untuk menunjukan bahwa terdapat suatu penyimpangan dalam

software atau kerusakan hardware.

Pixel:

(17)

DAFTAR PUSTAKA

[1]. Ahmad, Usman. (2005). Pengolahan Citra Digital & Teknik

Pemogramannya. Yogyakarta : Graha Ilmu.

[2]. Andleigh, Prabhat K., Thakrar, Kiran. (1996). Multimedia System Design. New Jersey : Prentice Hall International Edition.

[3]. Ariyus, Doni. (2006). Kriptografi Keamanan Data dan Komunikasi.

Yogyakarta : Graha Ilmu.

[4]. Kenneth E. Kendall & Julie E Kendall. (2005). System Analysis and Design. Sixth Editon. New Jersey : Pearson Education.

[5]. Ladjamuddin, Al Bahra Bin. (2005). Analisis dan Desain Sistem Informasi. Jakarta : Graha Ilmu.

[6]. Malik, Jaja Jamaludin. (2006). Kumpulan Latihan Pemograman Delphi.

Yogyakarta : Andi.

[7]. Marvin Ch, Wijaya, & Agus Prijono. (2007). Pengolahan Citra Digital

Menggunakan MatLAB Image Processing Toolbox. Bandung:

Informatika.

[8]. Munir, Rinaldi. (2006). Kriptografi. Bandung: Informatika.

[9]. Munir, Rinaldi. (2004). Pengolahan Citra Digital dengan Pendekatan

Algoritmik. Bandung : Informatika.

[10]. NN. (2002). 11 Kamus Besar Bahasa Indonesia. Jakarta : Balai Pustaka.

[11] Prasetyo, Didik Dwi. (2004). Aplikasi Database Client/Server Menggunakan

Delphi dan MySQL. Jakarta: Elex Media Komputindo.

[12] Pressman, Roger S. (2002). Rekayasa Perangkat Lunak, Edisi 1.

Yogyakarta: Andi.

[13] Whitten, Jeffrey, dan Lonnie Bentley. (2007). Sistem Analisis dan Metode

Desain. Edisi Kelima. Yogyakarta : Penerbit Andi.

(18)

xviii

(19)

program StegoImageKu; uses

Forms,

Main in 'Main.pas' {MainForm}, ChildWin in 'ChildWin.pas' {MDIChild}, about in 'about.pas' {AboutBox}, uProcess in 'uProcess.pas', uBits in 'uBits.pas',

Unit4 in 'Unit4.pas' {Splash}; {$R *.RES}

begin

Splash := TSplash.Create(Application); //3 baris berikut Splash.Show; //ditambah secara manual Splash.Update;

while Splash.Timer1.Enabled do Application.ProcessMessages; Application.Initialize;

Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TAboutBox, AboutBox); Application.CreateForm(TSplash, Splash);

Splash.Hide; //2 baris berikut ditambah secara Splash.Free;// menghapus form splash scren dr memory

Application.Run; end.

unit Unit4; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, jpeg;

type

TSplash = class(TForm) Timer1: TTimer; Image1: TImage;

ProgressBar: TProgressBar;

(20)

xx

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns, ActnList, ToolWin, ImgList;

type

TMainForm = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; FileNewItem: TMenuItem; FileOpenItem: TMenuItem; FileCloseItem: TMenuItem; Window1: TMenuItem; Help1: TMenuItem; N1: TMenuItem; FileExitItem: TMenuItem; WindowCascadeItem: TMenuItem; WindowTileItem: TMenuItem; WindowArrangeItem: TMenuItem; HelpAboutItem: TMenuItem; OpenDialog: TOpenDialog; FileSaveItem: TMenuItem; FileSaveAsItem: TMenuItem; Edit1: TMenuItem;

CutItem: TMenuItem; CopyItem: TMenuItem; PasteItem: TMenuItem;

WindowMinimizeItem: TMenuItem; StatusBar: TStatusBar;

ActionList1: TActionList; EditCut1: TEditCut;

WindowCascade1: TWindowCascade;

WindowTileHorizontal1: TWindowTileHorizontal; WindowArrangeAll1: TWindowArrange; WindowMinimizeAll1: TWindowMinimizeAll; HelpAbout1: TAction;

FileClose1: TWindowClose;

WindowTileVertical1: TWindowTileVertical; WindowTileItem2: TMenuItem;

ToolBar2: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; ToolButton6: TToolButton; ToolButton9: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; ToolButton10: TToolButton; ToolButton11: TToolButton; ImageList1: TImageList; HowDoesItWork1: TMenuItem;

procedure FileNew1Execute(Sender: TObject); procedure FileOpen1Execute(Sender: TObject); procedure HelpAbout1Execute(Sender: TObject); procedure FileExit1Execute(Sender: TObject); procedure HowDoesItWork1Click(Sender: TObject); private

{ Private declarations }

(21)

public

{ Public declarations } end;

var

MainForm: TMainForm; implementation

{$R *.dfm}

uses CHILDWIN, about;

procedure TMainForm.CreateMDIChild(const Name: string); var

Child: TMDIChild; begin

{ create a new MDI child window } Child := TMDIChild.Create(Application); Child.Caption := Name;

//if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name); end;

procedure TMainForm.FileNew1Execute(Sender: TObject); begin

CreateMDIChild('' + IntToStr(MDIChildCount + 1)); end;

procedure TMainForm.FileOpen1Execute(Sender: TObject); begin

if OpenDialog.Execute then

CreateMDIChild(OpenDialog.FileName); end;

'In a 24-bit bitmap, each pixel is made up of (surprise, surprise) a 24-bit number. Each number is composed of three 8-bit '+

'numbers (the R, G and B channels). These are the intensity of the Red, Green and Blue colors that create the final color of the pixel.'+ #13#10#13#10+

'To hide something inside the image, we will replace the Least Significant Bit (this is, the "rightmost" bit) of each 8-bit channel '+

'of every pixel, with the bits of the file we want to hide. ' + #13#10#13#10 +

'The image will lose some quality because now the colors of the pixels are not the same, but it will go unnoticed to the human eye.' + #13#10#13#10 +

'Obviously, since we are storing only 3 bits per pixel, the image must have a fenomenal size to accommodate just a tiny little file. '+

'For example, if we want to hide 1 MB of data, we need an image with 2,796,203 pixels, which would have a size of something like 2,200 x 1,320 pixels. And that is a 8.3 MB file... :O' + #13#10#13#10 +

'We could replace the 2, 3 or 4 rightmost bits of every channel in order to increase the amount of data we can hide, but the quality could decrease considerably.' + #13#10#13#10 +

'Try 8 bits per channel and you''ll see what I''m talking about (amazingly, 7 normally produces intelligible -although very ugly- images).');

uses Windows, Messages, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, ComCtrls, ExtCtrls, ExtDlgs, Dialogs, Buttons, jpeg;

type

TMDIChild = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet;

(22)

xxii OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog; GroupBox3: TGroupBox;

udBitsPerChannel: TUpDown; edtBPC: TEdit;

procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject);

procedure btnBrowseClick(Sender: TObject); procedure btnEncryptClick(Sender: TObject); procedure btnOpenEncodeClick(Sender: TObject); procedure btnDecryptClick(Sender: TObject); procedure btnDecodeClick(Sender: TObject); procedure btnClearClick(Sender: TObject); private

MDIChild: TMDIChild; implementation

uses MAIN, uProcess, about; {$R *.dfm}

procedure TMDIChild.btnBrowseClick(Sender: TObject); begin

if OpenDialog1.Execute then begin Edit1.Text := OpenDialog1.FileName; end;

OpenPictureDialog1.Filter := 'Bitmaps (*.bmp)|*.bmp'; OpenPictureDialog1.DefaultExt := '*.bmp';

if OpenPictureDialog1.Execute then begin

(23)

try

Decrypt(OpenPictureDialog1.FileName, SaveDialog1.FileName, pb1);

MessageBox( Application.Handle, PChar('Done!' + #13#10#13#10 + 'The file "' +

MessageBox(Handle, PChar('An error has occurred.' + #13#10#13#10 + e.Message), 'StegaImageKu', MB_OK + MB_ICONSTOP);

MessageDlg('Content harus diisi',mtWarning,[mbOK],0); Exit;

Encrypt(OpenDialog1.FileName, OpenPictureDialog1.FileName, SavePictureDialog1.FileName, udBitsPerChannel.Position, pb1);

(24)

xxiv begin

try

OpenPictureDialog1.Filter := 'Bitmaps (*.bmp)|*.bmp'; OpenPictureDialog1.DefaultExt := '*.bmp';

if OpenPictureDialog1.Execute then begin

procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction); begin

MessageDlg(E.Message,mtError,[mbOK],0); end;

procedure Encrypt(const SourceFile, SourceBitmap, Destination: string; BitsPerChannel: LongInt; ProgressBar: TProgressBar);

procedure Decrypt(const SourceFile, DestFile: string; ProgressBar: TProgressBar); implementation

uses Windows, Graphics, Classes, uBits, Forms; // One byte for every channel of the RGB trio type pRGBArray= ^TRGBArray;

TRGBArray= array [1..3] of Byte;

procedure ProcessEncrypt(Bitmap: TBitmap; Source: TFileStream; Destination: string; BPC: LongInt; ProgressBar: TProgressBar);

var SourceIndex, SourceSize: LongInt; BitIndex, PixelBitIndex: LongInt; SourceByte: Byte;

PixelsRow: pRGBArray; RGBIndex: Integer;

PixelsRowMax, PixelsRowIndex, CurrentRow: Integer;

// A procedure inside another is quite ugly, but we avoid passing a lot of parameters when we call it procedure CheckNextPixel;

if PixelsRowIndex = PixelsRowMax then // We used all pixels in this row begin

Inc(CurrentRow);

(25)

end;

begin {ProcessEncrypt}

{-- STORE THE BITS PER CHANNEL VALUE--} PixelsRow:= Bitmap.ScanLine[0];

// We use 2 bits in the B channel to bring the count to 4 bits, so we can store BPC = 8, value that usually brings // devastation to the image quality...

SetBitAt(PixelsRow^[1], 0, GetBitAt(BPC, 0)); SetBitAt(PixelsRow^[1], 1, GetBitAt(BPC, 1)); SetBitAt(PixelsRow^[2], 0, GetBitAt(BPC, 2)); SetBitAt(PixelsRow^[3], 0, GetBitAt(BPC, 3)); // Initialize

PixelsRowMax:= Bitmap.Width; CurrentRow:= 0;

PixelBitIndex:= 0; PixelsRowIndex:= 2; RGBIndex:= 1; Inc(PixelsRow);

{-- STORE THE ACTUAL LENGTH OF THE DATA --} SourceSize:= Source.Size;

for BitIndex:= 0 to SizeOf(SourceSize) * 8 - 1 do begin

SetBitAt(PixelsRow^[RGBIndex], PixelBitIndex, GetBitAt(SourceSize, BitIndex)); CheckNextPixel;

end;

{-- STORE THE DATA --}

// Copy the bits from every byte in the source stream onto the bits in the pixels Source.Seek(0, soFromBeginning);

for SourceIndex:= 0 to SourceSize - 1 do begin

if (SourceIndex + 1) mod 10 = 0 then begin

ProgressBar.StepIt;

Application.ProcessMessages; end;

Source.Read(SourceByte, 1); for BitIndex:= 0 to 7 do begin

SetBitAt(PixelsRow^[RGBIndex], PixelBitIndex, GetBitAt(SourceByte, BitIndex)); CheckNextPixel;

end;

end;// for SourceIndex end;

procedure Encrypt(const SourceFile, SourceBitmap, Destination: string; BitsPerChannel: LongInt; ProgressBar: TProgressBar);

var Bitmap: TBitmap; sSource: TFileStream; begin

ProgressBar.Position:= 0; ProgressBar.Step:= 1; Bitmap:= TBitmap.Create; sSource:= nil;

try

Bitmap.LoadFromFile(SourceBitmap); if Bitmap.PixelFormat <> pf24bit then

raise Exception.Create('The image must have a 24-bit depth.'); sSource:= TFileStream.Create(SourceFile, fmOpenRead); if sSource.Size = 0 then

raise Exception.Create('The source file is 0 bytes. There''s nothing to hide.');

if sSource.Size * 8 + SizeOf(LongInt) * 8 + 1 > Bitmap.Width * Bitmap.Height * 3 * BitsPerChannel then raise Exception.Create('The image is not big enough to accommodate the file.');

// + 1: The BitsPerChannel value is stored in the first pixel

// SizeOf(LongInt) * 8: we'll store the amount of actual encrypted data in the first pixels after BitsPerChannel ProgressBar.Max:= sSource.Size div 10;

ProcessEncrypt(Bitmap, sSource, Destination, BitsPerChannel, ProgressBar); Bitmap.SaveToFile(Destination);

finally Bitmap.Free;

if Assigned(sSource) then sSource.Free; end;

end;

(26)

xxvi

procedure ProcessDecrypt(Bitmap: TBitmap; Destination: TFileStream; ProgressBar: TProgressBar); var DataSize, DataIndex: LongInt;

Data, BitIndex: Byte; PixelsRow: pRGBArray;

PixelsRowMax, PixelsRowIndex, CurrentRow, MaxRows: Integer; PixelBitIndex: LongInt;

RGBIndex: Integer; BPC: LongInt;

// A procedure inside another (and basically the same as the one in ProcessEncrypt) is quite ugly, but we avoid passing // a lot of parameters when we call it

if PixelsRowIndex = PixelsRowMax then // We used all pixels in this row begin

Inc(CurrentRow);

if CurrentRow > MaxRows then

raise Exception.Create('The end of the image was reached while trying to read the hidden information.' + #13#10+ 'This is probably caused by an image that doesn''t contain any hidden data.');

PixelsRow:= Bitmap.ScanLine[CurrentRow]; PixelsRowIndex:= 1; PixelsRow:= Bitmap.ScanLine[0];

BPC:= 0;

SetBitAt(BPC, 0, GetBitAt(PixelsRow^[1], 0)); SetBitAt(BPC, 1, GetBitAt(PixelsRow^[1], 1)); SetBitAt(BPC, 2, GetBitAt(PixelsRow^[2], 0)); SetBitAt(BPC, 3, GetBitAt(PixelsRow^[3], 0)); if (BPC < 1 ) or (BPC > 8) then

raise Exception.Create('The BitsPerChannel value is not in the range 1-8.' + #13#10 + 'This is probably caused by an image that doesn''t contain any hidden data.'); // Initialize

PixelsRowMax:= Bitmap.Width; MaxRows:= Bitmap.Height - 1; CurrentRow:= 0;

PixelBitIndex:= 0; PixelsRowIndex:= 2; RGBIndex:= 1; Inc(PixelsRow);

{-- GET THE LENGTH OF HIDDEN DATA --} for BitIndex:= 0 to SizeOf(DataSize) * 8 - 1 do begin

SetBitAt(DataSize, BitIndex, GetBitAt(PixelsRow^[RGBIndex], PixelBitIndex)); CheckNextPixel;

end;

if DataSize <= 0 then

raise Exception.Create('The stored size of the hidden data is not correct.' + #13#10 + 'This is probably caused by an image that doesn''t contain any hidden data.'); ProgressBar.Max:= DataSize div 10;

{-- EXTRACT THE ACTUAL DATA --} for DataIndex:= 1 to DataSize do begin

(27)

begin

ProgressBar.StepIt;

Application.ProcessMessages; end;

for BitIndex:= 0 to 7 do begin

SetBitAt(Data, BitIndex, GetBitAt(PixelsRow^[RGBIndex], PixelBitIndex)); CheckNextPixel;

end;

Destination.Write(Data, 1); end; //for DataIndex end;

procedure Decrypt(const SourceFile, DestFile: string; ProgressBar: TProgressBar); var Bitmap: TBitmap;

Destination: TFileStream; begin

ProgressBar.Position:= 0; ProgressBar.Step:= 1; Bitmap:= TBitmap.Create; Destination:= nil; try

try

if FileExists(DestFile) then DeleteFile(PAnsiChar(DestFile)); Destination:= TFileStream.Create(DestFile, fmCreate); Bitmap.LoadFromFile(SourceFile);

if Bitmap.PixelFormat <> pf24bit then

raise Exception.Create('The image doesn''t have a 24-bit depth. It surely hasn''t been created by this program.'); ProcessDecrypt(Bitmap, Destination, ProgressBar);

finally Bitmap.Free;

if Assigned(Destination) then Destination.Free; end;

except

if FileExists(DestFile) then DeleteFile(PChar(DestFile));

procedure SetBitAt(var Variable: LongInt; Position: Byte; Value: Boolean); overload; procedure SetBitAt(var Variable: Byte; Position: Byte; Value: Boolean); overload; function GetBitAt(Variable: LongInt; Position: Byte): Boolean;

implementation

procedure SetBitAt(var Variable: LongInt; Position: Byte; Value: Boolean); begin

if Value then

Variable:= Variable or (1 shl Position) else

Variable:= Variable and ((1 shl Position) xor $FFFFFFFF); end;

procedure SetBitAt(var Variable: Byte; Position: Byte; Value: Boolean); begin

(28)

xxviii uses Windows, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls, jpeg;

type

TAboutBox = class(TForm) Panel1: TPanel;

OKButton: TButton; ProgramIcon: TImage; ProductName: TLabel; Version: TLabel; Copyright: TLabel; Comments: TLabel; Label1: TLabel; Label2: TLabel; private

{ Private declarations } public

{ Public declarations } end;

var

(29)

BAB I

PENDAHULUAN

1.1

Latar Belakang

Di seluruh dunia, internet (interconnection network) sudah berkembang menjadi salah satu

media komunikasi data yang sangat populer. Kemudahan dalam penggunaan dan fasilitas yang

lengkap merupakan keunggulan yang dimiliki oleh internet dan bukan rahasia umum di kalangan

masyarakat pengguna internet pada saat sekarang ini. Namun, seiring dengan berkembangnya

media internet dan aplikasi yang menggunakan internet semakin bertambah pula kejahatan dalam

sistem informasi. Dengan berbagai teknik pengambilan informasi secara ilegal yang

berkembang, banyak yang mencoba untuk mengakses informasi yang bukan haknya. Untuk itu,

sejalan dengan berkembangnya media internet yang sangat cepat, harus juga diikuti dengan

perkembangan pengamanan dalam sistem informasi yang berada dalam media internet tersebut.

Berbagai macam teknik yang digunakan untuk melindungi informasi yang dirahasiakan dari

orang yang tidak berhak telah banyak dilakukan dalam upaya mengamankan suatu data penting

dengan menggunakan sistem kriptografi yang melakukan enkripsi sebelum data penting tersebut

ditransmisikan. Tindakan pengamanan menggunakan cara tersebut ternyata dianggap belum

cukup dalam mengamankan suatu data karena adanya peningkatan kemampuan komputasi.

Berbeda dengan teknik kriptografi, steganografi menyembunyikan pesan rahasia agar bagi orang

awam tidak menyadari keberadaan dari pesan yang disembunyikan. Teknik ini sering digunakan

untuk menghindari kecurigaan orang dan menghindari keinginan orang untuk mengetahui isi

(30)

2

wadah penampung informasi dengan sedemikian rupa sehingga keberadaan informasi rahasia

yang ditempelkan tidak terlihat. Wadah penampung informasi tersebut dapat berbentuk berbagai

jenis file multimedia digital seperti teks, citra, audio, video. Dalam tugas akhir sebelumnya

menggunakan audio sebagai wadahnya. Dalam tugas akhir ini, peneliti membuat implementasi

steganografi menggunakan image merupakan solusi dari permasalahan tersebut. Dengan

penggunaan teknik ini, data informasi dapat kita sembunyikan di dalam media digital yang kita

punya.

1.2 Rumusan Masalah

Dari uraian latar belakang di atas, maka dapat dirumuskan masalah pada tugas akhir berikut: 1 Bagaimana cara menyembunyikan file ke dalam media citra digital, sehinggaifile

benar-benar terjaga keamanannya dengan menggunakan teknik steganografi sebagai

salah satu solusi pengaman pesan?

2 Bagaimanam metode (Least SignificantiBit) LSB dapat digunakan sebagai salah satu

metode steganografi dalam penyembunyian file ke dalam citra digital?

3 Bagaimana menguji software yang sudah di buat untuk mengetahui performannya?

1.3Batasan Masalah

Batasan masalah dalam tugas akhir ini mencakup:

1 Format file citra digital yang dapat digunakan untuk menyimpan pesan adalah 24bit (true

color) berformat*.Bmp..

(31)

3

Teknik steganografi yang digunakan hanya dapat menyimpan pesan berupa format *.txt,

*doc, *xsl,*ppt, *mdb, *pdf, *php, *JPG, *html, *wav

3 Metode steganografi yang digunakan adalah (Least SignificantiBit) LSB.

4 Tools yang digunakan adalah Delphi 2007 Win 32.

5 Software ini tidak membahas multiplatform, hanya untuk PC ke PC.

1.4 Tujuan

Tujuan yang hendak dicapai dalam tugas akhir ini adalah:

1. Memberikan informasi bagaimana teknik steganografi dapat diterapkan di dalam file

citra digital.

2. Implementasi penyembunyian file kedalam citra digital dengan memberikan

satuialternatif metode steganografi.

3. Memanipulasi citra digital yang di dalamnya terdapat file Sehingga file tersebut

tidak dapat diketahui keberadaannya dan secara kasat mata tidak terjadi perubahan

pada citra digital hasil manipulasi.

1.5Metodologi

Metode Pengumpulan Data dan Informasi

a. Studi Pustaka

Dengan metode ini, penulis mendapatkan informasi yang berkaitan dengan

steganografi melalui buku-buku referensi dan melalui berbagai situs di internet yang

(32)

4

b. Studi Literatur

Penulis mencoba mencari perbandingan dengan studi sejenis dari beberapa penulisan

di beberapa karya ilmiah, seperti jurnal dan skripsi.

1.6 Metode Pengembangan Sistem

Dalam menyusun tugas akhir ini penulis menggunakan metode pengembangan sistem

Rapid Application Development (RAD). Ada tiga fase luas pada RAD yang mengajak user

maupun analyst dalam merencanakan, mendesain, dan mengimplementasi suatu sistem.

1. Fase Kebutuhan Perencanaan (Requirement Planning Phase) Menentukan tujuan

dan syarat dari informasi.

2. Proses Desain RAD (RAD Design Workshop)

Perancangan proses yang akan terjadi dalam sistem, perancangan input dan output

interface, serta pengkodean terhadap rancangan rancangan yang telah didefinisikan.

3. Fase Implementasi (Implementation Phase)

Pada tahapan ini dilakukan pengujian terhadap sistem dan melakukan pengenalan

(33)

5

1.7 Sistematika Penulisan

Dalam penyusunan skripsi ini penulis menyajikan tulisan ini terdiri atas:

BAB I PENDAHULUAN

Bab ini terdiri dari latar belakang masalah, identifikasi masalah, rumusan

masalah, batasan masalah, tujuan, manfaat, metode penelitian dan sistematika

penulisan.

BAB II LANDASAN TEORI

Bab ini berisi uraian tentang landasan teori yang diperlukan dalam analisis dan

perancangan aplikasi steganografi pada citra digital menggunakan metode

(Least SignificantiBit) LSB

BAB III PERANCANGAN SISTEM

Bab ini menguraikan secara rinci metode yang digunakan dalam perancangan

aplikasi

BAB IV IMPLEMENTASI DAN HASIL PERANCANGAN

Bab ini membahas mengenai pengujian sistem dan hasil perancangan yang telah

dibuat

BAB V PENUTUP

Bab ini berisi kesimpulan dari seluruh bab dan saran-saran untuk

Referensi

Dokumen terkait

Bila output rangkaian seri adalah anoda dioda, maka bagian negatif dari sinyal input akan dilewatkan, dan bagian positif adakn dipotong (clipper positif)F. Bila output

Sebuah aktivitas penyelamatan lingkungan yang kreatif dan bermanfaat bila kita dapat memanfaatkan limbah untuk dijadikan benda berguna. Limbah atau sampah, sering

Penelitian ini bertujuan untuk mendeskripsikan profil usaha Teh Gaharu di Desa Lubuk Pabrik Kecamatan Lubuk Besar Kabupaten Bangka Tengah, menganalisis kelayakan Teh

Salah satunya teknologinya adalah metoda radar penembus tanah ( Ground Penetration Radar / GPR ) adalah suatu metode pendeteksian objek-objek di dalam tanah dengan menggunakan

Analisis penelitian kualitatif didapatkan lansia sangat senang jika diberikan uang oleh anak sebagai pegangan, dan anak menawarkan bantuan uang saat butuh

Menurut Moehji (2003), telah banyak penelitian yang membuktikan adanya hubu ngan antara terpenuhinya kebutuhan gizi terutama kebutuhan energi, baik terhadap

Kapasitas jalan adalah arus maksimum yang dapat dipertahankan persatuan jam yang melewati satu titik dijalan dalam kondisi yang ada atau dengan kata lain

e) Tindak tutur deklaratif dengan fungsi memutuskan, mengizinkan, dan melarang. Aspek-aspek situasi ujar dapat mempengaruhi suatu tuturan digunakan dengan tujuan untuk