“Saya akui bahawa saya telah membaca karya ini dan pada...

103
“Saya akui bahawa saya telah membaca karya ini dan pada pandangan saya karya ini adalah memadai dari segi skop dan kualiti untuk tujuan penganugerahan ijazah Sarjana Muda Sains (Sains Komputer)”. Tandatangan : ...............................……. Nama Penyelia : En. Noh Bin Abd. Samad Tarikh : Mei 2008

Transcript of “Saya akui bahawa saya telah membaca karya ini dan pada...

“Saya akui bahawa saya telah membaca karya ini dan pada pandangan

saya karya ini adalah memadai dari segi skop dan kualiti untuk tujuan

penganugerahan ijazah Sarjana Muda Sains (Sains Komputer)”.

Tandatangan : ...............................…….

Nama Penyelia : En. Noh Bin Abd. Samad

Tarikh : Mei 2008

APLIKASI STEGANOGRAFI KE ATAS TEKS MENGGUNAKAN FAIL IMEJ

BERSERTA ENKRIPSI KE ATAS KUNCI

MOHD RISZAFIQ BIN SUGIRI

Tesis projek ini dikemukakan sebagai

memenuhi sebahagian daripada syarat penganugerahan

Ijazah Sarjana Muda Sains (Sains Komputer).

Fakulti Sains Komputer Dan Sistem Maklumat

Universiti Teknologi Malaysia

MEI, 2008

“Saya akui karya ini adalah hasil kerja saya sendiri kecuali nukilan dan ringkasanyang tiap-tiap satunya telah saya jelaskan sumbernya”.

Tandatangan : ...............................…….

Nama Penulis : Mohd Riszafiq bin Sugiri

Tarikh : Mei 2008

Buat ibu dan ayah yang sentiasa ku cintai,

terima kasih kerana memahami dan memberi sokongan terhadap apa

yang selama ini ku usahakan. Ku susulkan kejayaan untuk mu.

PENGHARGAAN

Assalammualaikum dan selamat sejahtera, bersyukur ke hadrat illahi kerana dengan

limpah kurnianya, laporan ini berjaya disiapkan. Tidak lupa juga kepada penyelia En. Noh

bin Abd Samad kerana sudi memberikan nasihat serta pandangan dalam membantu

mengemaskini dan memperbaiki projek. Ribuan terima kasih diucapkan. Disamping itu,

sekalung penghargaan diucapkan kepada pensyarah-pensyarah yang turut terlibat dalam

membantu dalam proses menyiapkan Projek Sarjana Muda. Tidak lupa juga kepada ibu dan

bapa yang sentiasa memberi sokongan.

Akhir kata, semoga Projek Sarjana Muda yang dibangunkan ini dapat dimanfaatkan.

Kepada insan-insan yang terlibat secara langsung dan tidak langsung dalam membantu dan

memberikan pendapat, semoga Allah membalas jasa dan budi baik kamu sekalian. Sekian,

terima kasih.

ABSTRAK

Maklumat pengguna perlu dilindungi supaya ianya berada dalam keadaan selamat.

Disebabkan wujudnya eksploitasi terhadap maklumat seperti pengintipan melalui

internet, maklumat pengguna lebih terdedah kepada ancaman dan kebocoran.

Justeru, aplikasi yang dibangunkan ini adalah bertujuan untuk melindungi maklumat

pengguna. Metodologi yang digunakan untuk melindungi maklumat ialah

steganografi dan juga kriptografi. Gabungan kedua-dua metodologi ini berupaya

untuk menghasilkan tahap sekuriti yang lebih baik. Steganografi digunakan untuk

memastikan kewujudan rahsia tidak diketahui dan kriptografi pula mengubah

maksud asal maklumat pengguna kepada sesuatu yang sukar difahami. Untuk

steganografi, kaedah Least Significant Bit digunakan, manakala kriptografi

menggunakan kaedah enkripsi MD5. Visual Basic digunakan untuk membangunkan

aplikasi ini. Protokol penghantaran fail (File Transfer Protocol) digunakan untuk

penghantaran bitmap dari komputer pelanggan ke pelayan. Objek imej berformat

bitmap digunakan untuk menyimpan nilai binari maklumat. Matlamat utama aplikasi

ini adalah untuk melindungi maklumat pengguna dengan menggunakan metodologi

steganografi dan kriptografi.

ABSTRACT

User’s information need to be secured from exploitation that commonly happened

nowadays for example eavesdropping. This application was intended to protect

user's data from being exposed to unwanted person. Steganography and

cryptography is chosen in order to protect the user data. Both combination of

steganography and cryptography can provide higher security. Steganography is used

to hide the user data from being seen by human bared eyes. Meanwhile,

cryptography used to convert the plain text to cipher text. Least significant bit

technique is used for the steganography while MD5 technique for the cryptography.

Visual Basic is used to develop the application. FTP was used to send the image data

from the client to the server and vice versa.Image with bitmap format was chosen as

the carrier image. The main objective of this application is to secured user's data

using steganography and cryptography.

KANDUNGAN

BAB PERKARA HALAMAN

JUDUL iPENGAKUAN iiDEDIKASI iiiPENGHARGAAN ivABSTRAK viABSTRACT viiKANDUNGAN viiiSENARAI JADUAL xiiSENARAI RAJAH xiiiSENARAI SINGKATAN xvSENARAI ISTILAH xviSENARAI LAMPIRAN xvii

1 PENGENALAN

1.1 Pengenalan 11.2 Matlamat Projek 21.3 Objektif 21.4 Skop Projek 31.5 Latar Belakang Masalah 31.6 Kepentingan Projek 4

II KAJIAN LITERATUR

2.1 Pengenalan kepada Steganografi dan Kriptografi 52.2 Teknik- teknik Steganografi 7 2.2.1 Teknik LSB 8 2.2.2 Teknik Variable Sized LSB 8 2.2.3 Penyusunan Piksel Secara Rawak 9 2.2.4 Teknik Discrete Fourier Transition 92.3 Teknik –teknik Kriptografi 10 2.3.1 AES (Advanced Encryption Standard) 11

2.3.2 Twofish 11 2.3.3 Tiny Encryption Algorithm (TEA) 12 2.3.4 MD5 Message Digest Algorithm 12 2.3.5 Secure Hash Algorithm (SHA-1) 132.4 Struktur Imej berjenis bitmap 132.5 Protokol Penghantaran Fail 152.6 Kajian Aplikasi Yang Sedia Ada 162.7 Kajian Terhadap Projek Yang Dibina 182.8 Rumusan 20

III METODOLOGI PEMBANGUNAN

3.1 Pendahuluan 213.2 Model Pembangunan Secara Pertambahan 22 3.2.1 Fasa Kajian Awalan 23 3.2.2 Fasa Analisis 24 3.2.3 Fasa Rekabentuk 24

3.2.4 Fasa Implementasi 25 3.2.5 Fasa Ujian 263.3 Kewajaran Pemilihan Metodologi Pembangunan

Secara Pertambahan

26

3.4 Analisis Keperluan Projek 27

IV REKABENTUK

4.1 Pengenalan 284.2 Rekabentuk Struktur Logikal Aplikasi 294.3 Rekabentuk Konsepsual 314.4 Rekabentuk Input Dan Ouput 324.5 Rekabentuk Modul Dan Algoritma 334.6 Rekabentuk Antaramuka Pengguna 34

V IMPLEMENTASI DAN PENGUJIAN

5.1 Pengenalan 395.2 Persekitaran Pembangunan 395.3 Implementasi Aplikasi 40 5.3.1 Modul Utama dan Sub Modul 41

5.3.2 Penggunaan Library Sedia Ada Windows 45 5.3.3 Logik dan Aturcara Modul Utama 47

5.3.3.1 Aturcara Permulaan Aplikasi 475.3.3.2 Aturcara Penyembunyian Maklumat

Rahsia

51

5.3.3.3 Aturcara Pengekstrakan Maklumat

Rahsia

53

5.3.3.4 Aturcara Kriptografi MD5 565.4 Pengujian Aplikasi 59 5.4.1 Pengujian Terhadap Fail-fail Penting

Aplikasi

59

5.4.1.1 Pengujian Kehadiran Fail Settings.ini 59 5.4.1.2 Pengujian Terhadap Nilai Pada Fail

settings.ini

61

5.4.2 Pengujian Ketika Menyembunyikan

Maklumat

61

5.4.3 Pengujian Ketika Mengekstrak Maklumat 625.5 Rumusan 63

VI KESIMPULAN

6.1 Pengenalan 646.2 Pencapaian Projek 646.3 Kekangan dan Cabaran 656.4 Harapan 666.5 Ringkasan 67

RUJUKAN 68LAMPIRAN A-F 69-93

SENARAI JADUAL

NO. JADUAL TAJUK HALAMAN

2.1 Struktur imej bitmap 142.2 Bilangan bait bagi format fail 142.3 Teknik forensik steganografi 162.4 Kajian terhadap aplikasi steganografi sedia ada 173.1 Senarai keperluan perkakasan 273.2 Senarai keperluan perisian 274.1 Jadual modul dan fungsi 335.1 Jadual modul utama dan sub modul 425.2 Jadual penerangan sub modul 425.3 Jadual penggunaan Library Windows XP pada

aplikasi

46

5.4 Kategori tetapan fail settings.ini 48

SENARAI RAJAH

NO. RAJAH TAJUK HALAMAN

2.1 Model steganografi 72.2 Model kriptorgrafi 72.3 Cara pemprosesan steganografi bagi projek 182.4 Penghantaran fail ke pelayan dan proses intipan 193.1 Aliran proses pembangunan secara pertambahan 234.1 Carta aliran rekabentuk struktrur logikal 304.2 Rekabentuk konsepsual 314.3 Rekabentuk input 324.4 Rekabentuk output 324.5 Antaramuka pengguna untuk penyembunyian mesej 354.6 Antaramuka pengguna untuk pengekstrakan mesej 364.7 Antaramuka pengguna untuk tetapan aplikasi 374.8 Antaramuka pengguna untuk penghantaran data 385.1 Atribut dan nilai pada fail settings.ini 495.2 Keratan kod aturcara permulaan aplikasi 505.3 Kod aturcara apabila butang penyembunyian diklik 515.4 Kod aturcara menyimpan maklumat rahsia ke imej 525.5 Kod aturcara apabila butang pengekstrakan diklik 545.6 Kod aturcara mengekstrak maklumat rahsia 555.7 Kod aturcara enkripsi kata laluan dengan MD5 565.8 Kod aturcara untuk mendapatkan nilai MD5 fail bitmap 575.9 Kod aturcara untuk penjanaan kunci pemprosesan 585.10 Mesej mengenai kehilangan fail settings.ini 605.11 Mesej Auto Recovery fail settings.ini 615.12 Mesej amaran jika pengguna melakukan kesalahan 625.13 Mesej paparan untuk proses pengekstrakan 62

SENARAI SINGKATAN

SINGKATAN MAKNA

4GL Fourth Generation LanguageAES Advanced Encryption StandardAPI Application Programming InterfaceBIL BilanganDFT Discrete Fourier TransitionDIB Device Independent BitmapFTP File Transfer ProtocolIT Information TechnologyLSB Least Significant BitMD5 Message Digest 5MSB Most Significant BitRPP Random Pixel PositioningSDLC System Development Life CycleTEA Tiny Encryption AlgorithmVLSB Variable Sized LSB

SENARAI ISTILAH

ISTILAH TERJEMAHAN

AddRoundKey Tambah kekunci pusinganByteSub Penukaran bait Client PelangganDevice Independent Bitmap Perkakasan bitmap bebasDiscrete Fourier Transition Transisi diskrit fourierExtreme Programming Pengaturcaraan ekstrimFile Transfer Protocol Protokol penghantaran failIncrement Development Pembangunan secara pertambahanInformation Technology Teknologi maklumatLeast Significant Bit Bit yang paling kananMixColumn Pencampuran lajurMost Significant Bit Bit yang paling kiriPrototyping Approach Kaedah prototaipRandom Pixel Positioning Penyusunan pixel secara rawakServer PelayanShiftRow Pergerakan barisSpiral Approach Kaedah lingkaranSystem Development Life Cycle Kitar hayat pembangunan SistemVariable Sized LSB Saiz bebas bit yang paling kananWaterfall Approach Kaedah Air terjun

SENARAI LAMPIRAN

LAMPIRAN TAJUK

Lampiran A Carta Gantt PSM ILampiran B Carta Gantt PSM IILampiran C Kod Aturcara Fungsi addMessageToImageLampiran D Kod Aturcara Fungsi extractMethodLampiran E Kod Aturcara Fungsi cmdBrowseBMPLampiran F Manual Pengguna

BAB 1

PENGENALAN

1.1 Pengenalan

Maklumat adalah sangat berharga. Bagi sesetangah pihak, maklumat begitu

berharga bagi mereka kerana ia mungkin menyimpan rahsia. Apabila menyebut

tentang maklumat rahsia, kebanyakkan pihak menghadapi masalah kerana maklumat

rahsia mereka bocor ke tangan individu yang tidak sepatutnya. Untuk menjaga

kepentingan rahsia dan peribadi, pelbagai cara telah dilakukan. Di dalam bidang

Teknologi Maklumat kita sering terdengar mengenai kriptografi. Kriptografi

merupakan salah satu cara untuk melindungi maklumat dengan mengubah makna

asal maklumat tersebut supaya ianya sukar untuk bocor atau terdedah kepada pihak

yang tidak sepatutnya.

Terdapat satu lagi kaedah yang mungkin jarang diketahui oleh orang ramai

iaitu steganografi, berbeza dengan kriptografi, steganografi merupakan teknik

penyembunyian data supaya ianya tidak diketahui kewujudannya. Walaupun

mempunyai beberapa perbezaan antara dua kaedah ini, namun tujuannya tetap sama

iaitu untuk melindungi maklumat supaya berada didalam keadaan yang selamat.

Aplikasi ini melibatkan kedua-dua kaedah tadi dengan tujuan untuk

melindungi maklumat supaya berada didalam keadaan selamat. Aplikasi ini adalah

mengenai pengimplimentasian steganografi ke atas teks dan menggunakan imej

sebagai objek penyembunyian. Kriptografi digunakan bertujuan menyimpan cara

pemprosesan maklumat rahsia dan juga kata laluan.

1.2 Matlamat Projek

Matlamat utama projek ini adalah untuk membangunkan satu aplikasi

steganografi berserta sokongan kriptografi ke atas kunci yang membolehkan mesej

rahsia disimpan dan dibaca dengan selamat.

1.3 Objektif

Dalam membangunkan projek ini, tedapat beberapa objektif yang telah di sasarkan iaitu :

i. Mengkaji proses steganografi menggunakan teknik LSB(Least Significant

Bit) ke atas fail imej bitmap bersama proses kriptografi..

ii. Mengkaji gabungan LSB dengan teknik rawak untuk menentukan lokasi

maklumat.

iii. Membangunkan sebuah aplikasi steganografi beserta sokongan

kriptografi.serta menguji keselamatan aplikasi yang dibangunkan.

1.4 Skop Projek

Aplikasi yang dibangunkan ini adalah berasaskan kepada skop projek seperti dibawah:

i. Proses steganografi hanya dilakukan keatas fail berjenis dokumen teks

ii. Proses enkripsi dilakukan ke atas kunci yang digunakan untuk membolehkan

maklumat rahsia dibaca dan disembunyikan.

iii. Aplikasi ini dilarikan dibawah platform Windows XP.

iv. Fail imej berformat bitmap (.bmp) 24 bit digunakan sebagai objek yang

menyimpan maklumat rahsia.

v. Kaedah steganografi yang digunakan adalah bit yang paling kanan dan juga

teknik penyusunan piksel secara rawak

vi. Proses kriptografi yang digunakan ialah kriptografi MD5.

1.5 Latar Belakang Masalah

Penghantaran, penyimpanan maklumat yang mempunyai kandungan yang

sulit dan peribadi memang wajar untuk dilindungi daripada diketahui oleh orang

lain. Sesetengah individu mungkin menyimpan maklumat akaun bank seperti

nombor pin kad kredit di dalam komputer peribadi mereka, dan maklumat tersebut

mungkin terdedah kepada bahaya jika sesorang individu lain yang menceroboh ke

dalam komputer tersebut. Untuk membantu dalam mengawal dan memperbaiki

keselamatan maklumat, sesuatu kaedah perlu digunakan bagi memastikan maklumat

tersebut jauh dari ancaman dan berada dalam keadaan selamat iaitu tidak diketahui

oleh orang lain.

Justeru, steganografi merupakan kaedah yang dapat membantu untuk

menyembunyikan kandungan data ataupun maklumat yang hendak dirahsiakan.

Walaupun enkripsi boleh dilakukan, tetapi proses steganografi lebih efektif untuk

dipraktikkan; ini adalah kerana proses steganografi hanya melibatkan proses yang

mudah seperti menyembunyikan maklumat tersebut dari pandangan kasar individu

lain tanpa mengubah kandungan asal maklumat itu. Malangnya, steganografi sahaja

tidak memadai, kerana keselamatan data masih belum dapat dijamin seratus peratus.

Maklumat steganografi diproses dengan menggunakan teknik yang mudah dan tahap

kerumitan yang rendah. Jadi, jika ada pihak yang mengetahui bahawa maklumat itu

ada disembunyikan maka proses untuk mendapatkan semula dan membaca

maklumat tersebut mudah dilakukan kerana kandungan maklumat tersebut tidak

langsung diubah tetapi ianya hanya disembunyikan.

Untuk mengatasi masalah itu, bantuan enkripsi terhadap kata kunci

dilakukan supaya kawalan sekuriti dapat dipertingkatkan. Ini bermaksud, sebelum

maklumat steganografi dapat diungkai, ianya memerlukan kata kunci dari fail teks

yang mengandungi cara pemprosesan steganografi. Sesudah itu, barulah individu

tersebut dapat melihat maklumat yang telah disembunyikan itu. Di sebabkan aplikasi

meningkatkan tahap sekuriti maklumat, maka kata kunci yang menyimpan corak

pemprosesan akan dienkrip dan hanya boleh dibaca dengan menggunakan kaedah

yang betul.

1.6 Kepentingan Projek

Aplikasi ini dibangunkan adalah kerana untuk melindungi kepentingan data

rahsia dengan teknik steganografi dan kriptografi. Ini adalah penting bagi

meningkatkan sekuriti ke atas maklumat dan juga untuk melindungi kebebasan

pengguna untuk merahsiakan maklumat mereka.

BAB II

KAJIAN LITERATUR

2.1 Pengenalan kepada Steganografi dan Kriptografi

Steganografi merujuk kepada penyembunyian data (selalunya di rujuk

sebagai mesej rahsia) didalam sesuatu objek. Justeru itu, kewujudan mesej rahsia

tadi tidak diketahui oleh orang lain melainkan mereka yang diberitahu mengenai

kewujudan mesej rahsia tersebut. Steganografi telah mula digunakan dan boleh

dikaitkan dengan seorang jeneral Greek, Herodotus (440 BC) yang mencukur

rambut hamba abdinya dan menulis mesej amaran untuk menjajah Parsi. Setelah

rambut hamba abdi tersebut telah panjang dan menutupi mesej tersebut, hamba

tersebut telah dihantar merentasi kawasan musuh untuk bertemu dengan seorang

jeneral yang lain. Dengan peredaran masa, steganografi masih lagi digunakan dan

juga diimplementasi didalam bidang perkomputeran. Media seperti fail imej, data

audio dan juga perisian telah digunakan (Stamp. M, 2006).

Proses steganografi telah dipelbagaikan untuk memastikan supaya teknik ini

dapat menjamin maklumat rahsia supaya susah untuk diungkai. Antara teknik

steganografi yang biasanya digunakan adalah seperti kaedah LSB(least significant

bit) , iaitu kaedah ini memanipulasikan bit terakhir bagi sesebuah media seperti fail

imej supaya maklumat rahsia dapat disimpan kedalam fail imej tersebut. ‘Digital

Watermarking’ juga merupakan salah satu kaedah penyembunyian data tetapi ianya

digunakan untuk tujuan yang berlainan. Sebagai contoh penggunaan watermarking

ialah pengecam yang tidak dapat dilihat digunakan pada muzik digital supaya

apabila sesuatu bahan itu dicetak rompak, bahan tersebut dapat dikenalpasti

ketulenannya. (Stamp. M, 2006).

Manakala kriptografi ialah merupakan proses pengubahsuaian sesuatu

maklumat kepada sesuatu bentuk yang tidak dapat difahami. Ia melibatkan proses

enkripsi iaitu membuat kod-kod rahsia supaya maklumat asal sesebuah mesej dapat

di ubah kepada sesuatu yang sukar untuk difahami, dan juga proses dekripsi iaitu

mengekstrak semula maklumat enkripsi kepada bentuk maklumat yang asal iaitu

kepada bentuk yang boleh difahami. Kadangkala penggunaan kunci dalam teknik

kriptografi digunakan, dengan ini pihak yang mempunyai kuncinya sahaja yang

dapat memproses dan mengetahui makna kod rahsia tersebut.

Perbezaan antara steganografi berbanding kriptografi dapat dilihat dari segi

matlamat, dan cara teknik tersebut berfungsi. Perbezaan steganografi dan

kriptografi dipaparkan pada Rajah 2.1 dan Rajah 2.2

2.2 Teknik – teknik Steganografi

Kini steganografi mempunyai beberapa teknik yang boleh

diimplementasikan. Antara teknik yang selalunya digunakan ialah seperti LSB,

Variable sized LSB, RPP dan juga DFT. Berikut merupakan penerangan ringkas

mengenai teknik-teknik yang disebutkan:

Mesej Rahsia

Algoritma Penyembunyian

Objek pembawa digital

Fail Stego Algoritma pengekstrakan

Mesej Rahsia

Teks

Enkripsi

Kunci rahsia

Teks Sifer Dekripsi

Teks

Kunci rahsia

Rajah 2.2: Model kriptografi

Rajah 2.1: Model steganografi

2.2.1 Teknik LSB

Teknik ini menggunakan bit terakhir bagi sesuatu bait untuk menyimpan data.

Sebagai contoh jika suatu 3 piksel bagi 24 bit imej (True Color Images) dan

maklumat yang hendak disimpan ialah huruf A iaitu 10000011 maka nilai binari

untuk piksel tersebut akan menjadi seperti berikut: (Tan, K.Y, 2005)

Bit asal imej suatu piksel: Bit piksel yang mempunyai maklumat

Steganografi :00101100 10101100 10101000 00101101 10101100 1010100000101011 01101000 00101011 00101010 01101000 0010101000101010 00111001 00101010 00101011 00111001 00101010

2.2.2 Teknik Variable sized LSB

Teknik ini masih lagi seperti teknik LSB yang biasa tetapi

penggunaan bit yang dimanipulasikan digandakan bilangannya kepada 4,

dengan ini jika suatu imej yang mempunyai resolusi 1024 x 768 maka ianya

boleh menyimpan sebanyak 1 MB data rahsia (Tan, K.Y, 2005). Contoh

pemanipulasian bit adalah seperti di bawah:

00101000 10100011 10101000

2.2.3 Penyusunan Piksel Secara Rawak

Teknik ini menyusun bit maklumat kedalam imej secara menyeluruh dan rawak.

Penyusunan tersebut sudah ditentukan iaitu dengan penyusunan berdasarkan kaedah

RPP. Algoritma Kriptografi Ultra menghasilkan kedudukan piksel yang diperlukan

untuk menyimpan data berdasarkan kepada kata laluan yang diberikan.

2.2.4 Teknik Discrete Fourier Transition

Teknik ini menggunakan 4 bit paling kiri iaitu bit yang paling kiri sebagai pengecam

kepada nilai binari sesuatu aksara dan jika bit yang dipadankan itu adalah sama

dengan nilai bit maklumat yang hendak disembunyikan maka indeks bit perwakilan

kepada maklumat tersebut disenaraikan. Untuk memahaminya dengan lebih jelas,

sedikit contoh dibawah boleh membantu:

Anggap bit dibawah adalah perwakilan kepada imej bagi ‘True Color Image’.

00101100 10101100 10101000

00101011 01101000 00101011

00101010 00111001 00101010

dan anggap perwakilan bagi indeks untuk bit maklumat adalah merujuk kepada

berikut:

9 = menandakan tiada bit indeks yang terlibat

8 = nombor indeks bagi bit yang paling kiri

1 = nombor indeks bagi bit yang paling kanan

Jadi jika suatu maklumat seperti huruf A (perwakilan binari: 10000011) hendak di

sembunyikan di dalam piksel tersebut maka nilai bagi 4 bit yang paling kiri akan di

padankan dengan nilai bit bagi huruf tersebut. Jika ianya dijumpai maka nombor

indeks bagi bit perwakilan kepada bit huruf tadi dicatatkan.

contohnya:

nilai A (10000011) yang akan disembunyikan

00101100 10101100 10101000 (indeks perwakilan bagi baris ini ialah

6,7,7)

00101011 01101000 00101011 (indeks perwakilan bagi baris ini ialah

8,8,8)

00101010 00111001 00101010 (indeks perwakilan bagi baris ini ialah

6,6,9)

maka indeks bagi perwakilan maklumat huruf A ialah 677888669

(Madani et al, 2007 ).

2.3 Teknik-Teknik Kriptografi

Kriptografi merupakan kaedah penyulitan maklumat kepada sesuatu yang tidak

dapat difahami. Antara teknik yang akan dibincangkan adalah teknik kriptografi

seperti berikut :

2.3.1 AES (Advanced Encryption Standard)

AES adalah berdasarkan kepada algoritma Rijndael dan ianya menggunakan

sifer blok pengiraan matematik yang berulang kali. Tidak sepeti DES (Data

Encryption Standard), algoritma AES bukanlah berjenis sifer fiestal. Berikut

menerangkan fakta mengenai AES: (Stamp, M, 2006).

i. Terdapat tiga blok saiz iaitu 128, 192, atau 256 bits ii. Tiga jenis panjang kunci iaitu 128, 192, atau 256 bits iii. Jumlah bagi pusingan adalah pelbagai iaitu dari 10 hingga ke 14 dan ianya

bergantung kepada panjang kekunci. iv. Setiap pusingan itu mempunyai empat fungsi iaitu di dalam 3 lapisan,

antaranya:

a. Penukaran bait (lapisan tidak linear)

b. Pergerakan baris (lapisan pencampuran linear)

c. Pencampuran lajur (lapisan tidak linear)

d. Tambah kekunci pusingan (lapisan kunci tambahan)

2.3.2 Twofish

Twofish diperkenalkan oleh Bruce Schneier, John Kelsey, Doug Whiting,

David Wagner, Chris Hall, dan Niels Ferguson. Twofish merupakan 128 bit blok

sifer dan ianya mengandungi enam belas pusingan bagi memastikan keselamatan

maksimum. Twofish juga dikatakan fleksibel kerana ianya dapat menerima sebarang

saiz kekunci tambahan serta dapat diimplementasikan pada pelbagai platform dan

juga aplikasi. (Abd Rahim,M.F, 2004).

2.3.3 Tiny Encryption Algorithm (TEA)

TEA menggunakan 64 blok bit dan 128 bit kekunci. Algoritmanya

menganggap struktur pengiraan adalah dengan 32 bit perkataan dan ini bermaksud

semua pengiraannya melibatkan modulo 232. Jumlah pusingan untuk TEA adalah

tidak di tetapkan tetapi penggunaan 32 pusingan dianggap selamat. Untuk maklumat

tambahan, TEA bukanlah sifer Feistel maka dengan itu, enkripsi dan dekripsi

memerlukan proses yang berlainan. (Stamp.M, 2006).

2.3.4 MD5 Message Digest Algorithm

MD5 dibangunkan oleh Ron Revest. Algoritma MD5 menerima input yang

panjangnya adalah secara rawak dan menghasilkan ouput 128 bit mesej hadam.

Input yang diproses adalah dalam 512 blok. Berikut merupakan cara pemprosesan

MD5: (Stalling,W. 1999).

Langkah 1 : Penambahan Bit-bit pelapikMesej adakan dipadatkan supaya panjangnya adalah berselaras dengan 448

modulo 512. Langkah 2 : Penambahan panjang

64 bit mewakili panjang didalam bit bagi mesej asal akan ditambahkan

kepada hasil dari Langkah 1. Jika panjang tersebut telah melebihi 264 maka

barisan bawah 64 bit akan digunakan.Langkah 3 : Penentuan saiz daftar MD

128 bit ruangan memori akan digunakan untuk memegang hasil

pertengahan dan akhir fungsi hash ini.Langkah 4: Memproses mesej dalam 512 bit

Proses utama kaedah ini melibatkan 4 pusingan dan setiap pusingan akan

menerima input 512 blok yang sedang diproses dan 128 bit daftar bagi

ABCD dan seterusnya membaharui kandungan daftar tersebut.

Langkah 5 : OutputSetelah semua 512 blok diproses maka output bagi pemprosesan adalah 128

bit mesej hadam.

2.3.5 Secure Hash Algorithm (SHA-1)

Algoritma SHA-1 menerima input mesej yang kurang daripada 264 bit dan

menghasilkan output 160 bit mesej hadam. Input diproses dalam 512 bit blok.

Langkah-langkah bagi SHA adalah sama seperti MD5 cuma terdapat perbezaan dari

segi saiz pemprosesan bit. Algoritma SHA dikatakan lebih selamat kawalan

sekuritinya ke atas brute force attacks (Stalling,W. 1999).

2.4 Struktur Imej Berjenis Bitmap

Fail berjenis bitmap telah direka oleh Windows dan mempunyai .bmp

sebagai identiti kepada fail tersebut. Fail ini disimpan di dalam DIB (device

independent bitmap) format yang membolehkan Windows untuk memaparkan

bitmap tersebut kepada apa jua jenis peranti paparan. Setiap bitmap file

mengandungi kepala fail bitmap, maklumat kepala bitmap, jadual warna dan juga

tatasusunan bait yang menakrifkan bit-bit bitmap tersebut. Fail tersebut mempunyai

format seperti berikut:

Jadual 2.1 : Struktur imej bitmap

FORMAT PENERANGANBITMAPFILEHEADER bmfh; Mengandungi maklumat seperti jenis, saiz, dan

paparanBITMAPINFOHEADER bmih; Berkaitan dengan dimensi, jenis kompress, dan

format warnaRGBQUAD aColors[]; Elemen warna dalam bitmapBYTE aBitmapBits[]; Bit bit dalam bitmap

Di sini disertakan juga jadual rujukan lengkap bagi bilangan bait untuk format fail

berjenis bmp. Untuk melihat dengan lebih jelas kandungan dan kedudukan bait

dalam fail tersebut, aplikasi seperti Editor heksadesimal perlu digunakan contohnya

XVI32.

FORMAT BIL. BAIT

BMP FILE

HEADER

Header File 2File Size (Little Endian) 4Reserve Space 1 2Reserve Space 2 2Offset Address for StartData 4

Jadual 2.2 : Bilangan bait bagi format fail bmp

BMP

INFORMATIO

N

HEADER

Information Header Structure Size 4Image width (pixels) 4Image height (pixels) 4Number of graphic planes 2Number of bits per pixel 2

FORMAT BIL. BAITCompression Type 4Image Data Size (bytes) 4Horizontal pixels per meter 4Vertical pixels per meter 4Number of colors used in the bitmap 4Number of colors that are 'important' for

the bitmap.

4

2.5 Protokol Penghantaran Fail

Protokol Penghantaran Fail merupakan suatu protokol yang membolehkan

penghantaran fail dilakukan dari komputer pelanggan ke pelayan. Dengan adanya

protokol ini ianya memudahkan lagi bagi fail-fail untuk dikongsi didalam rangkaian

untuk tujuan penghantaran dan muat turun. Protokol ini dilarikan dibawah

Transimission Control Protocol(TCP) dan lazimnya ia melibatkan port 21. FTP

mempunyai tiga mod iaitu active mode, passive mode dan juga extended passive

mode dan mod-mod ini mempunyai cara implementasi perhubungan antara

pelanggan dan pelayan yang berbeza. (wikipedia, 2007)

Disebabkan oleh penghantaran fail menggunakan protokol ini tidak dienkrip

maka untuk pengguna meletakkan maklumat (berbentuk teks) mudah untuk

dieksploitasi oleh pengintip. Justeru dengan itu, untuk membolehkan pengguna

meletakkan maklumat rahsia supaya tidak dapat dibaca oleh pengintip, teknik

steganografi perlu disertakan semasa penghantaran. Dengan ini, maklumat yang

dihantar dapat diselamatkan dari terbongkar dan dibaca oleh pihak lain.

2.6 Kajian Aplikasi Yang Sedia Ada

Beberapa aplikasi yang sedia ada pada masa kini telah dijadikan kajian bagi

mengenal pasti kekurangan dan juga kelebihan aplikasi tersebut agar dapat dijadikan

panduan dalam membangunkan projek. Banyak aplikasi yang berkaitan dengan

steganografi pada masa kini dan kebanyakkan aplikasi tersebut boleh diperolehi

secara percuma dari Internet. Semua aplikasi mempunyai cara pemprosesan mereka

yang tersendiri. Berdasarkan kajian forensik, dapat disimpulkan bahawa

steganografi melibatkan beberapa teknik seperti yang disenaraikan pada Jadual 2.3:

Jadual 2.3: Teknik forensik steganografi

TEKNIK PENJELASANKemasukan Dalam

Kumpulan Data

Teknik ini menyembunyikan data kepada fail hos seperti

audio atau grafik pada kawasan fail yang boleh diubah.

Selalunya, data dimasukkan pada bahagian yang sama pada

fail hos.Data Beralgoritma Teknik ini menggunakan algoritma untuk memasukkan data

dengan menentukan tempat pada fail hos.Tatabahasa Teknik menghasilkan teks yang tersendiri pada teks hos

berdasarkan kehendak data yang hendak disembunyikanKemasukan Luar

Kumpulan Data

Teknik ini memasukkan data pada bahagian yang spesifik

yang tidak digunakan untuk pembacaan fail hos. Kemasukan Data Ganti Teknik ini menggantikan maklumat dalam fail hos kepada

maklumat yang hendak disembunyikan.Penghasilan Objek terbuka Teknik ini menghasilkan fail hos yang tersendiri berdasarkan

data yang hendak disembunyikan. Fail hos yang dihasilkan

boleh dalam pelbagai format seperti audio,video atau imej

Aplikasi-aplikasi yang sedia ada akan dijadikan sebagai rujukan serta kajian

ditunjukkan pada Jadual 2.4 :

Jadual 2.4: Kajian terhadap aplikasi steganografi sedia ada

Aplikasi Teknik Komen

JP Hide-and-Seek Pemanipulasia

n Jadual Warna

Piksel

Menggunakan enkripsi blowfish. Terdapat

dalam versi DOS dan Linux. Menggunakan

fail hos berjenis JPEG

S-Toolsv4 dan S-Toolsv3 Pemanipulasia

n Jadual Warna

Piksel

Merupakan aplikasi steganografi untuk

Windows dan menyokong fail berjenis

GIF, bmp, atau .wav

Digital Picture Envelope Pemanipulasia

n Jadual Warna

Piksel

Menggunakan teknik BPCS-

Steganographic yang dreka oleh Eiji

Kawaguchi pada 1997. Menggunakan

fail .bmp dan boleh menyimpan 50-100%

maklumat daripada fail hos tanpa

mengubah saiz fail tersebut.

Camouflage Menyusun atur

kedudukan data

Boleh menyokong beberapa maklumat

dengan menggunakan satu fail. Mengubah

saiz asal fail hos.

Projek PSM: Steganografi

Menggunakan Teknik

Variable Sized Insertion

Pemanipulasia

n Jadual Warna

Piksel

Boleh menyembunyikan 50% maklumat

menggunakan fail hos 8 bit gray-scale.

Teknik yang biasa digunakan dan tidak

disokong oleh sebarang enkripsi atau kata

laluan.

2.7 Kajian Terhadap Projek Yang Dibina

Setelah melakukan beberapa kajian terhadap aplikasi yang sedia ada, maka

cara pemprosesan steganografi bagi projek ini adalah berdasarkan pemanipulasian

Jadual warna piksel, menyusun atur kedudukan data dan disokong dengan

penggunaaan kriptografi keatas kunci pemprosesan. Cara pemprosesan ditunjukkan

seperti rajah dibawah:

Berdasarkan Rajah 2.3, suatu mesej rahsia akan disembunyikan ke dalam

suatu fail hos bitmap, sebelum ianya diselitkan, suatu algoritma akan membaca teks

tersebut dan menukar kepada kod binari yang sepadan. Algoritma pemetaan dan

penyembunyian akan memainkan peranan dalam membaca binari mesej dan

menentukan kedudukan data di dalam fail hos.

Selepas semua aksara yang mewakili mesej rahsia tersebut habis dibaca dan

diterjemahkan kepada binari maka penjanaan kunci pemprosesan dilakukan. Semasa

penjanaan kunci pemprosesan, kedudukan data ditentukan pada fail hos bitmap.

Selepas itu, fail hos bitmap dan juga kunci dihantar kepada penerima. Sekiranya

penerima hanya mempunyai fail hos, maka kebarangkalian untuk mengekstrak

mesej rahsia akan bertambah sukar dan mustahil. Kunci yang dienkrip memainkan

peranan yang besar kerana tanpa kunci tersebut, data yang disembunyikan tidak

dapat diproses dengan cara yang betul.

Mesej Rahsia

AlgoritmaPemetaan &

Penyembunyian

Objek pembawa digital

Fail Stego Dekripsi kunci pemprosesan

Algoritma Pengekstrakan ke

atas bitmap

Enkripsi ke atas kunci

pemprosesanMesej Rahsia

Rajah 2.3 Cara pemprosesan steganografi bagi projek

Penghantaran fail

Bagi membolehkan penerima memproses dengan jayanya, kunci tersebut

hendaklah didekrip supaya nilai kedudukan data yang disembunyikan dapat

diketahui, selepas itu, suatu algoritma yang membaca kedudukan binari data akan

dilancarkan dan pengekstrakan akan dilakukan ke atas binari data rahsia.

Kemudian, binari data rahsia tersebut akan ditukarkan kepada perwakilan

teks yang boleh difahami. Hasilnya, data rahsia dapat di perolehi dan kawalan

sekuriti keatas data tersebut dapat dipertingkatkan.

Pada rajah 2.4, penghantaran fail ke pelayan tidak selamat jika ianya tidak

dilindungi dengan sebarang teknik sekuriti seperti kriptografi dan sebagainya. Ini

adalah kerana, fail tersebut mudah diperhatikan oleh pengintip dan seterusnya

dicapai bagi mendedahkan maklumat rahsia tersebut. Bagi mengatasi masalah ini,

projek steganografi ini akan melindungi fail yang mengandungi maklumat rahsia

seterusnya menghantar fail tersebut kepada pelayan. Implementasi teknik

steganografi akan dilakukan pada pelanggan, dimana pelanggan perlu mempunyai

aplikasi steganografi. Aplikasi akan melindungi maklumat rahsia seterusya

menghantar maklumat tersebut ke rangkaian internet.

Internet

Pelayan FTP

Pelanggan

Pengintip

Maklumat dihantar

Rajah 2.4: Penghantaran fail ke pelayan dan proses intipan

2.8 Rumusan

Aplikasi yang akan dibangunkan ini akan melibatkan penggunaan teknik

steganografi dan kriptografi ke atas kekunci pemprosesan. Dengan adanya kedua-

kedua teknik ini, maklumat akan dapat disimpan dengan lebih selamat. Tidak

dinafikan terdapat banyak perisian yang bertujuan untuk mengungkai maklumat

rahsia. Disebabkan itu, aplikasi yang dibangunkan ini menggunakan konsep yang

diterangkan sebelum ini (rujuk Rajah 2.3), maka dengan adanya konsep ini ianya

akan dapat memastikan data tidak mudah dibocorkan.

BAB III

METODOLOGI PEMBANGUNAN

3.1 Pendahuluan

Bab ini menerangkan tentang kaedah proses pembangunan projek serta

penyenaraian perkakasan yang digunakan untuk membangunkan projek.

Proses membangunkan projek ini merangkumi fasa-fasa di dalam SDLC seperti fasa

analisis, rekabentuk, implementasi, pengujian dan penyenggaraan. Pemilihan

metodologi pembangunan projek perlulah bersesuaian dengan projek yang hendak

dibangunkan.

Antara model metodologi yang biasa digunakan adalah seperti model air

terjun, prototaip, pengaturcaraan ekstrem, lingkaran, pembangunan secara

pertambahan dan sebagainya. Setiap model mempunyai kelebihan dan tujuan yang

tersendiri. Dalam membangunkan projek ini, model pembangunan secara

pertambahan telah digunakan.

3.2 Model Pembangunan Secara Pertambahan

Model Pembangunan Pertambahan (Increment Development) merupakan

sebuah model yang mengfokuskan pembangunan dan pertambahan terhadap modul-

modul tertentu sehingga modul tersebut berjaya berfungsi seperti yang dikehendaki

dan memberikan hasil seperti yang diinginkan. Model Pembangunan Pertambahan

merupakan salah satu daripada proses ulangan selain daripada model lingkaran.

Kehendak dan kajian awalan diletakkan pada prioriti yang tertinggi iaitu pada awal

fasa model pembangunan.

Setelah pembangunan dimulakan, kehendak pengguna atau sebarang

perubahan terhadap projek akan dibekukan terlebih dahulu sehingga kehendak untuk

proses pertambahan berikutnya dimulakan. Dengan ini, perubahan dan pertambahan

akan sentiasa dilakukan mengikut peringkat semasa proses pembangunan

dijalankan. Model ini melibatkan beberapa proses seperti ditunjukkan pada Rajah

3.1.

Mengenal pasti keperluan

Mengumpukkan keperluan kepada penambahan

Membangunkan pertambahan aplikasi

Merekabentuk aplikasi

Pengintegrasian pertambahan

Pengesahan pertambahan

Pengesahan keseluruhan aplikasi

Aplikasi lengkap

Aplikasi tidak lengkap

Rajah 3.1 Aliran proses pembangunan secara pertambahan

3.2.1 Fasa Kajian Awalan

Fasa kajian awalan merupakan fasa dimana pengumpulan data atau

maklumat dijalankan supaya pembangunan projek yang sebenar dapat difahami dan

konsep aplikasi yang dibangunkan itu lebih tepat. Pada peringkat ini, pelbagai

sumber rujukan yang berkaitan dengan steganografi dan kriptografi dikumpul untuk

dijadikan sebagai maklumat yang membantu dalam mendalami konsep sebenar

aplikasi yang dibangunkan. Kebanyakkan dari sumber rujukan diperolehi dari

internet dan juga buku rujukan. Setelah semua maklumat mencukupi, kajian dibuat

untuk mendapatkan gambaran mengenai aplikasi, ciri-ciri serta kekangan yang sedia

ada dalam membangunkan projek.

3.2.2 Fasa Analisis

Pada fasa analisis, semua maklumat kajian digunakan dalam

mengadaptasikan penggunaan dan konsep yang bersesuaian yang perlu diterapkan

dalam pembangunan projek. Bagi projek ini, analisis dilakukan terhadap proses

steganografi sedia ada dan bagaimana teknik steganografi ini dapat membantu dalam

meningkatkan sekuriti ke atas maklumat. Di samping itu, analisis juga dijalankan

terhadap teknik-teknik kriptografi yang sedia ada untuk menentukan kesesuaian

teknik, kerumitan dan tahap sekuriti teknik yang dikaji. Tidak ketinggalan, fail yang

digunakan dalam membantu penyembunyian berjenis bitmap juga dikaji dengan

mengenal pasti ciri-ciri dan struktur fail tersebut. Pada akhir fasa ini, satu analisis

dijalankan terhadap aliran proses projek supaya logik dan pemahaman terhadap

projek lebih kukuh.

3.2.3 Fasa Rekabentuk

Fasa rekabentuk terbahagi kepada beberapa bahagian iaitu rekabentuk

struktur logikal projek, rekabentuk input dan ouput, rekabentuk algoritma, serta

rekabentuk antaramuka pengguna. Dalam merekabentuk struktur logikal projek,

beberapa aplikasi sedia ada telah dijadikan sebagai rujukan. Ini bertujuan untuk

melihat piawaian ataupun bagaimana aplikasi sedia ada yang berkaitan dengan

projek berfungsi. Rekabentuk struktur logikal projek diperolehi hasil daripada

pemerhatian dan disokong oleh analisis terhadap projek.

Dalam merekabentuk input dan output, proses bagaimana input dimasukkan

dan diproses dikaji dengan melihat kepada aplikasi dan kajian sedia ada Projek

Sarjana Muda sebelumnya. Begitu juga dengan proses merekabentuk output.

Bagi rekabentuk algoritma, algoritma yang diperolehi dari sumber rujukan

dijadikan sebagai bahan yang akan digunakan didalam pembangunan projek.

Algoritma seperti enkripsi, dekripsi dan pemyembunyian data diperolehi daripada

rujukan seperti buku dan internet. Untuk rekabentuk antaramuka pengguna, proses

merekabentuk dibantu dengan pemerhatian terhadap antaramuka aplikasi yang sedia

ada, dan perisian seperti Adobe Photoshop digunakan dalam menghasilkan

antaramuka yang menarik. Hasil rekabentuk antaramuka akan diterangkan pada bab

berikutnya.

3.2.4 Fasa Implementasi

Fasa implementasi merupakan fasa perlaksanaan pembangunan aplikasi

secara teknikal iaitu dengan melibatkan proses pengaturcaraan dan proses lain yang

berkaitan. Disebabkan metodologi yang digunakan adalah metodologi pembangunan

secara pertambahan, maka aliran proses metodologi itu harus diterapkan pada fasa

ini. Ini bermaksud sebelum proses pengaturcaraan dijalankan, setiap kehendak atau

keperluan terhadap aplikasi perlu dikenalpasti terlebih dahulu. Selepas kehendak

tersebut difahami maka proses ini diteruskan dengan pembangunan secara teknikal

termasuk rekabentuk antaramuka dan pengaturcaraan.

Fasa implementasi diteruskan dan setiap pertambahan akan diselitkan dalam

suatu kitaran bagi memastikan aplikasi berfungsi seperti yang dijangkakan. Justeru

itu, proses pertambahan terhadap pembangunan aplikasi akan sentiasa berevolusi.

Walaupun kaedah ini menyamai dengan prototaip evolusi tapi sebenarnya

pembangunan secara pertambahan ini tidak melibatkan sebarang prototaip. Setiap

pertambahan kemudian akan disahkan dan jika tidak memenuhi ciri-ciri keperluan

aplikasi maka kitaran berikutnya akan diteruskan dengan pertambahan fungsi-fungsi

atau pengubahsuaian yang baru.

3.2.5 Fasa Ujian

Setiap pembangunan mestilah diiringi dengan fasa ujian. Tetapi bagi

metodologi yang digunakan ini, setiap kitaran ataupun pusingan pertambahan adalah

melibatkan ujian. Maka untuk fasa ini, ujian yang dimaksudkan ialah ujian secara

menyeluruh terhadap aplikasi. Jika terdapat sebarang masalah, maka ujian akan

diteruskan dengan fasa implementasi yang melibatkan kitaran pembangunan dan

pengubahsuaian.

3.3 Kewajaran Pemilihan Metodologi Pembangunan Secara Pertambahan

Metodologi ini digunakan dalam pembangunan projek steganografi adalah

kerana ianya mempunyai beberapa kelebihan. Antara kelebihan metodologi ini ialah

tahap risiko kegagalan projek yang rendah. Ini kerana setiap fasa implementasi

diulangi dengan fasa pertambahan yang bertujuan untuk memperbaiki aplikasi.

Metodologi ini juga disokong oleh pengujian terhadap setiap kitaran. Selain itu,

pertambahan pada peringkat awal menjadi pemangkin untuk pertambahan dan

pembaikan berikutnya.

Apa yang paling penting, metodologi ini dipilih kerana ianya bersesuaian

dengan cara pembangunan sesebuah aplikasi bagi seseorang pelajar. Ini adalah

kerana metodologi ini membenarkan pengulangan fasa dan pembaikan pada setiap

kitaran. Disebabkan masa pembangunan yang singkat maka kaedah ini juga dapat

membantu dalam mengurangkan risiko kegagalan projek.

3.4 Analisis Keperluan Projek

Dalam membangunkan aplikasi ini, terdapat beberapa keperluan yang telah

dikenalpasti untuk memastikan proses pembangunan berjalan dengan lancar. Antara

keperluan tersebut ialah seperti yang dinyatakan pada Jadual 3.1 dam Jadual 3.2

Jadual 3.1: Senarai keperluan perkakasan

Perkakasan KegunaanKomputer Peribadi dengan

pemprosesan sekurang-kurangnya

1GHZ.

Membangunkan aplikasi steganografi dan

memastikan pemprosesan berjalan dengan

lancar dan memuaskan.Ingatan RAM 256MB ke atas Mengurangkan risiko kekurangan ingatan yang

menyebabkan program tergendalaCakera Keras 20 GB ke atas Menyimpan aplikasi dan data

Jadual 3.2 : Senarai keperluan perisian

Perisian KegunaanMicrosoft Windows XP Sebagai Platfom untuk melarikan aplikasi.Microsoft Visual Basic 6.0 Membangunkan aplikasiAdobe Photoshop CS2 Menghasilkan imej bitmapHeksadesimal editor - XVI32 Melihat kandungan heksadesimal bitmap

BAB IV

REKABENTUK

4.1 Pengenalan

Bab ini akan menerangkan mengenai rekabentuk secara lebih terperinci bagi

projek yang dibangunkan. Pembangunan rekabentuk seperti rekabentuk struktur

logikal projek, rekabentuk input output, rekabentuk modul atau algoritma, serta

rekabentuk antaramuka pengguna diterangkan dengan lebih lanjut. Beberapa kaedah

seperti rajah kes guna, carta alir ataupun gambarajah jujukan digunakan bagi

membantu dalam proses penerangan rekabentuk projek. Rekabentuk ini seterusnya

menjadi langkah pertama sebagai permulaan didalam fasa implementasi.

4.2 Rekabentuk Struktur Logikal Aplikasi

Rekabentuk struktur logikal aplikasi yang dibangunkan ini ditunjukkan pada

Rajah 4.1. Aplikasi ini terdiri daripada empat komponen utama iaitu bahagian

pengekod steganografi, bahagian enkripsi penjanaan kunci, bahagian dekripsi kunci

dan juga bahagian pengekstrakan maklumat steganografi. Fungsi pengekod

steganografi bertindak dengan membaca bit-bit dari fail bitmap, bahagian enkripsi

penjanaan kunci pula akan menghasilkan kunci rahsia yang mengandungi cara

pemprosesan maklumat steganografi. Hasil daripada gabungan dua fungsi ini akan

membentuk suatu fail steganografi yang terdiri daripada fail imej dan juga fail kunci

pemprosesan.

Apabila fail tersebut ingin diekstrak maka fail kunci pemprosesan diperlukan

bagi mendapatkan kedudukan maklumat rahsia. Di samping itu, imej yang

mengandungi maklumat rahsia juga diperlukan bagi membolehkan kunci

pemprosesan dibaca oleh aplikasi dan seterusnya menentukan lokasi kedudukan data

didalam fail imej. Jika fail kunci pemprosesan yang merujuk kepada lokasi tidak

mempunyai data rahsia maka tiada mesej rahsia akan dapat dipaparkan. Tetapi, jika

kunci yang digunakan merujuk kepada lokasi itu mengandungi maklumat rahsia

maka bit-bit didalam imej pada lokasi tersebut akan diekstrak dan akhirnya

ditukarkan kepada aksara.

Pilihan ?

Mula

Sembunyi

Ekstrak

Muat fail bitmap

Baca bit

Masukkan teks atau fail teks

Pembacaan binari teks

Teks > 0

Ya

Tidak

Jana kunci pemprosesan

Enkrip

Simpan

Muat fail bitmap dan kunci

pemprosesan

Dekrip kunci

Pemetaan teks rahsia

Papar maklumat rahsia

Simpan? Ya

Tidak

Tamat

Rajah 4.1 Carta aliran rekabentuk struktur logikal

4.3 Rekabentuk Konsepsual

Rekabentuk konseptual menunjukkan konsep sebenar bagaimana aplikasi

berinteraksi dengan pengguna. Rekabentuk konseptual akan ditunjukkan dengan

menggunakan rajah kes guna yang melibatkan aktor iaitu pengguna aplikasi. Aktor

ingin melakukan penyembunyian data ke dalam fail bitmap akan memilih fail

bitmap yang diinginkan untuk menjadikan fail tersebut sebagai hos penyembunyian.

Kemudian, aktor tersebut akan menaip maklumat rahsia ataupun dengan memilih

fail teks yang mengandungi maklumat rahsia. Seterusnya aplikasi akan melakukan

proses steganografi dan enkripsi untuk membentuk fail steganografi yang terdiri

daripada kunci dan imej.

Bagi aktor yang ingin membuka dan mendapatkan semula teks rahsia,

mereka perlu memilih kunci pemprosesan dan fail bitmap yang mewakili hos

penyembunyian. Selepas itu, aplikasi akan melakukan proses pengekstrakan

maklumat dari kedua-dua fail tersebut dan seterusnya memaparkan semula mesej

rahsia.

Rajah 4.2 Rekabentuk konsepsual

Memilih fail bitmap

Menaip mesej rahsia

Memasukkan fail bitmap dan kunci pemprosesan

Membaca mesej rahsia

Fail bitmap

Mesej rahsia

Aplikasi Steganografi

Kunci Pemprosesan

Fail Data Bitmap

Jana

Mesej rahsia

Aplikasi Steganografi

Kunci Pemprosesan

Fail Data bitmap

Ekstrak

4.4 Rekabentuk Input dan Ouput

Rekabentuk input dan output pula mewakili proses input dan output yang

berlaku ketika pengguna menggunakan apliksi. Input yang diterima dan diproses

dapat memberi gambaran aplikasi semasa pengguna menggunakannya, manakala

output yang dihasilkan memberikan gambaran hasil output selepas pemprosesan

dijalankan.

Rajah 4.3 Rekabentuk input

Rajah 4.4 Rekabentuk output

4.5 Rekabentuk Modul Atau Algoritma

Bagi rekabentuk modul ataupun algoritma, ianya akan menerangkan sedikit

sebanyak mengenai fungsi-fungsi asas yang menjadi penggerak kepada aplikasi

yang dibangunkan. Fungsi asas yang dimaksudkan ialah cara pemprosesan terhadap

sesuatu peristiwa. Contohnya fungsi untuk mengekstrak semula maklumat rahsia.

Rekabentuk modul ini adalah merupakan rekabentuk yang paling kritis kerana ianya

akan digunakan sepenuhnya pada fasa implementasi iaitu didalam proses

mengaturcara program. Pada Jadual 4.1 berikut, beberapa penerangan ringkas

mengenai modul dan fungsinya yang digunakan pada modul tersebut dibincangkan.

Jadual 4.1 Jadual modul dan fungsi

Modul Penerangan

Penyembunyian Modul penyembunyian memainkan peranan dalam memproses

penyembunyian data rahsia bagi aplikasi ini. Antara fungsi yang

terlibat dalam modul penyembunyian ialah :

- getImage : memuatkan imej kepada aplikasi

- readPixel : membaca bit-bit pada fail imej

- writePixel : menulis bit-bit untuk menghasilkan fail imej

yang baru.

- addMessageToImage : mendapatkan input (mesej) dan

menyimpan maklumat ke dalam fail imej.

- SetSteganoKey: menentukan kedudukan maklumat.

- generateKey: menulis dan mengenkrip kunci

pemprosesan kepada fail berformat .skey.

Modul PeneranganDan dibawah tedapat beberapa fungsi tambahan kepada modul

penyembunyian .

- fileManipulation: menghasilkan identiti kepada fail imej

supaya maklumat fail tersebut dapat diwakilkan kepada

bentuk hash.

- getPassword: mendapatkan katakunci supaya mesej

rahsia dapat diproses.

- getFileName : mendapatkan nama fail imej hos.

Pengekstrakan Modul ini berfungsi untuk mengekstrak semula maklumat rahsia

daripada fail bitmap dan fail kunci pemprosesan. Berikut

merupakan fungsi-fungsi asas modul ini:

- getImage : memuatkan imej kepada aplikasi

- readPixel : membaca piksel imej

- setSteganoKey: Menentukan kedudukan maklumat.

- getSteganoText : Mendapatkan maklumat pada

kedudukan yang betul.

- StrConv : menukar perwakilan nilai binari dalam bentuk

unikod kepada rentetan.

4.6 Rekabentuk Antaramuka Pengguna

Antaramuka pengguna yang direka pada fasa ini mestilah menepati dengan

beberapa ciri seperti yang telah dikaji pada fasa analisis iaitu antaranya ialah ramah

pengguna, menarik, serta mengikuti piawaian antaramuka yang digunakan oleh

kebanyakkan aplikasi semasa. Rajah seterusnya memaparkan antaramuka bagi

aplikasi projek ini.

Rajah 4.5 Antaramuka pengguna untuk penyembunyian mesej

Merujuk kepada Rajah 4.5, Antaramuka ini bertujuan untuk mendapatkan

maklumat rahsia dan juga fail hos bitmap. Kotak mesej rahsia bertujuan

membolehkan pengguna memasukkan mesej rahsia samada menaip ataupun

membuka fail teks yang sedia ada. Butang pencarian fail bitmap pula bertujuan

untuk memilih fail hos yang akan digunakan untuk proses penyembunyian mesej

rahsia.

Paparan mesej interaktif

Status Penjanaan rawak

Pilihan Menu utama

Popup menu

Menu pilihan bagi kotak mesej

Mesej arahan

Kotak Mesej

Butang Pencarian fail bitmap

Paparan direktori imej

Butang Penyembunyian

Rajah 4.6 Antaramuka pengguna untuk pengekstrakan mesej

Bagi rajah 4.6 pula, Butang pencarian fail bitmap ialah bertujuan untuk

mencari fail bitmap yang mengandungi maklumat rahsia. Pilihan cara pengekstrakan

juga diletakkan bagi tujuan pemilihan kaedah pengekstrakan yang betul iaitu samada

menggunakan kata laluan ataupun menggunakan kunci pemprosesan. Kotak mesej

rahsia disediakan bertujuan untuk memaparkan mesej rahsia sesudah mesej

diekstrak oleh aplikasi apabila butang pengekstrakan diklik oleh pengguna.

Kotak Mesej rahsia

Kata laluan

Butang Pengekstrakan

Menu pilihan bagi kotak mesej

Pilihan kaedah pengekstrakan

Paparan direktori Imej Butang Pencarian

fail bitmap

Rajah 4.7 Antaramuka pengguna untuk tetapan aplikasi

Rajah 4.7 memaparkan antaramuka yang menyediakan pengguna untuk

memilih tetapan yang telah sedia ada pada aplikasi. Aplikasi membenarkan tetapan

dibuat keatas proses steganografi, proses kriptografi dan juga tetapan keatas sifat

aplikasi seperti mengaktifkan animasi, mengingati kedudukan, dan sebagainya.

Pilihan tetapan aplikasi

Butang simpan tetapan

Tetapan sedia ada

Rajah 4.8 Antaramuka pengguna untuk penghantaran data

Bagi Rajah 4.8 pula, antaramuka ini bertujuan untuk membolehkan pengguna

menghantar fail-fail yang mengandungi maklumat rahsia ke pelayan. Untuk

penghantaran maklumat, aplikasi ini menyediakan penghantaran menggunakan FTP.

Pengguna perlu memberi nama pelayan serta memberikan ID pengguna dan juga

kata laluan untuk membolehkan penghantaran data dilakukan.

Pilihan penghantaran

data

Butang aktifkan sambungan ke

serverRuang ID Pengguna

Ruang nama Server FTP

Ruang Kata Laluan

BAB V

IMPLEMENTASI DAN PENGUJIAN

5.1 Pengenalan

Didalam bab ini, pengendalian projek steganografi dan juga kriptografi

difokuskan dengan lebih lanjut dari segi teknikal. Ini bermakna, implementasi projek

yang melibatkan pengaturcaraan, dan logik aplikasi seperti algoritma diterangkan

dengan lebih lanjut. Di samping itu, perbincangan mengenai pengujian terhadap

input, ouput dan tindakan yang berlaku semasa menggunakan aplikasi turut

disentuh.

5.2 Persekitaran Pembangunan

Dalam membangunkan aplikasi ini, beberapa faktor seperti penggunaan

perkakasan dan perisian yang betul diambil kira bagi memastikan projek dapat

dijalankan dengan lancar tanpa sebarang masalah. Persekitaran pembangunan

aplikasi ini merangkumi aspek seperti penggunaan bahasa pengaturcaraan yang

bersesuaian, platfom yang akan digunakan untuk melarikan projek serta kekurangan

yang perlu diambil kira semasa membangunkan projek.

Untuk membangunkan aplikasi, penggunaan perisian Microsoft Visual Basic

6.0 digunakan. Ini adalah kerana, perisian ini merupakan salah satu dari cara untuk

membangunkan sesebuah aplikasi dengan pantas. Microsoft Visual Basic 6.0

menggunakan bahasa pengaturcaraan 4GL(Fourth Generation Language) yang

memudah dan meringkaskan cara pemprograman aplikasi. Disamping itu, perisian

ini membolehkan aplikasi yang dibangunkan untuk berinteraksi dengan Windows

API (Application Programming Interface) yang perlu digunakan dalam

membangunkan sesetengah modul.

Disebabkan aplikasi perlu berinteraksi dengan fail sistem pengoperasian,

maka platfom yang paling sesuai untuk melarikan aplikasi yang dibangunkan

menggunakan Visual Basic ialah Microsoft Windows XP. Ini adalah kerana

Windows XP menyediakan interaksi program yang diperlukan oleh aplikasi seperti

fail sistem berformat .INI, penggunaan registry serta beberapa library terbaru yang

mengandungi kod aturcara untuk penggunaan sesetengah fungsi pada aplikasi.

Dengan kemudahan yang disediakan, maka gabungan Microsoft Visual Basic 6.0

dan Microsoft Windows XP adalah yang paling sesuai.

5.3 Implementasi Aplikasi

Dalam membangunkan aplikasi, langkah awal yang perlu dilakukan ialah

instalasi Microsoft Visual Basic 6.0 pada komputer. Microsoft Visual Basic 6.0

merupakan perisian yang fleksibel untuk digunakan kerana perisian ini tidak

memerlukan sumber ingatan yang terlalu tinggi untuk membangun dan melarikan

sesuatu aplikasi.

Disamping itu, perisian lain diperlukan untuk menghasilkan imej ialah

seperti Adobe Photoshop CS2, ataupun perisian sedia ada Windows seperti Paint.

Penghasilan imej berformat bmp penting untuk kegunaan aplikasi kerana proses

steganografi yang dibangunkan akan menggunakan fail imej berformat bmp untuk

menyimpan data.

Aplikasi yang dibangunkan dibahagikan kepada beberapa bahagian utama

yang penting. Bahagian penting ini yang juga dipanggil modul merupakan

komponen utama yang melarikan aplikasi steganografi dan kriptografi ini. Dengan

adanya pembahagian modul, tugas mengaturcara dan mengklasifikasikan kod

aturcara adalah lebih teratur.

5.3.1 Modul utama dan sub modul.

Dalam membangunkan aplikasi ini, beberapa modul utama telah dikenalpasti

iaitu modul steganografi, modul kriptografi, modul penghantaran dan juga modul

tetapan aplikasi. Didalam setiap modul utama, terdapat beberapa sub modul yang

memainkan peranan dalam membantu modul utama beroperasi.

Sub modul merupakan modul kecil yang penting untuk dibangunkan demi

memastikan modul utama dapat berfungsi dengan lebih baik. Jadual 5.1

menerangkan mengenai hubungan modul utama dan sub modul yang berkaitan.

Jadual 5.1 Jadual modul utama dan sub modul

Modul Utama Tujuan Sub Modul TerlibatSteganografi - Menyembunyikan maklumat

rahsia ke dalam fail imej

- Mengekstrak maklumat rahsia dari

fail data imej.

- Control X

- FileManipulation

- Ultra

Kriptografi - Melakukan proses MD5 keatas

kata laluan dan juga fail imej.

- Control X

- FileManipulation

- clsMD5Tetapan Aplikasi Mendapatkan nilai-nilai tetapan dan

juga mengadaptasikan animasi pada

aplikasi

- Animation

- Startup

Jadual 5.2 Jadual penerangan sub modul

Nama Sub Modul Senarai Fungsi Tujuan

Animation

- Mengawal

animasi pada

aplikasi

bannerScreenSlider(reff as

Integer)

Memaparkan mesej-mesej

pada Paparan mesej

interaktif.- lineAnimation()

- miniSkin()

- mousemoveScroller(ScrollText

As String)

- openSesame()

- noAnimation()

Mengawal pergerakkan

animasi.

playSound() Memainkan audio pada

aplikasi.savePosition() Merekod posisi X dan Y

Nama Sub Modul Senarai Fungsi Tujuan

Control X (cx)

- Mengawal objek

pada aplikasi serta

fungsi-fungsi

tambahan yang

lain.

addMessageToImage() Memasukkan mesej rahsia

kedalam imej.checkImageAndText(selectedFile

As String)

Memeriksa fail imej dan teks

sebelum melakukan proses

steganografi.checkPassword() Memeriksa kata laluan yang

disimpan untuk pengolahan

susunan.EraseImage() Memadamkan maklumat

rahsia yang sedia ada pada

imejextractMethod (mode As String,

file As String)

Mengekstrak maklumat

rahsia dari fail imej.

generateKey(argument As String) Menghasilkan kunci

pemprosesan

saveSKey() Menyimpan fail kunci

pemprosesan yang

dihasilkan.GetFromINI (Section As String,

key As String, Directory As

String) As String

Membaca nilai tetapan dari

fail .INI aplikasi.

WriteToINI (Section As String,

key As String, KeyValue As

String, Directory As String)

Menyimpan tetapan pada fail

.INI aplikasi.

WritePixel (ByVal aByte As Byte) Menulis semula perwakilan

piksel ke atas fail imej baru.

ReadPixel() As Byte Membaca piksel pada imej.

GetNextPixel() Membaca piksel imej yang

berikutnya.

Nama Sub Modul Senarai Fungsi Tujuan

FileManipulation

– Berfungsi untuk

mendapatkan nilai

MD5 bagi sesuatu

fail imej

getFileMD5(path As String) Mendapatkan nilai MD5

bagi sesuatu fail dan

memaparkannya dalam

bentuk rentetan.GetMD5$ (ByRef sFileName$) Membaca nilai MD5 setelah

dijanakan.InputFile$ (ByRef sFile$) Mendapatkan kandungan fail

sebelum MD5 dihasilkan.

MD5String(ByRef sString$) Menjana nilai MD5 bagi

sesebuah fail.

Startup

- Berfungsi untuk

membaca semua

tetapan aplikasi

sebelum

memaparkannya.

Main() Aplikasi akan melarikan

fungsi ini terlebih dahulu.init(obj As String) Menentukan animasi dan

kedudukan objek grafik.loadSetting() Membaca tetapan pada fail

settings.ini untuk kegunaan

aplikasi.checkRelatedFile() Memeriksa fail-fail penting

yang digunakan oleh aplikasi

seperti :

- settings.ini

- fail audiocheckINI() Memeriksa kandungan dan

kewujudan fail settings.ini

sebelum aplikasi

membacanya.

Nama Sub Modul Senarai Fungsi Tujuan

Ultra

- Menyediakan

fungsi-fungsi asas

steganografi

SetSteganoKey(ByVal KeyString

As String)

Memproses kata laluan.

SetSteganoText(TextIn As String)

As String

Memproses mesej

steganografiGetSteganoText(TextIn As String)

As String

Mendapatkan mesej.

GetSteganoPix() As Byte Mendapatkan piksel fail imej

SetSteganoByte(ByVal aByte As

Byte)

Menukarkan mesej

steganografi yang diproses

kepada bentuk bait.clsMD5

- Klas untuk

kriptografi MD5

berasaskan

rentetan.

CalculateMD5 (strMessage As

String) As String

Mendapatkan nilai MD5

bagi sesuatu rentetanMD5StringChange (lngnum As

Long) As String

Menukar rentetan kepada

nilai yang sepadan

5.3.2 Penggunaan Library Sedia Ada Windows

Microsoft Windows XP sememangnya mempunyai library untuk digunakan

oleh aplikasi yang ingin dilarikan dibawah platfom tersebut. Dengan adanya library,

tugas-tugas yang berkaitan dengan sistem pengoperasian ini akan menjadi lebih

mudah kerana aplikasi dapat menggunakan sumber sedia ada pada Windows bagi

menjalankan sesuatu tugas tanpa membina suatu kod aturcara yang baru. Antara

library yang digunakan oleh aplikasi ini disenaraikan pada Jadual 5.3.

Jadual 5.3 Jadual penggunaan Library Windows XP pada aplikasi.

Nama Library Fungsi yang digunakankernel32.dll

-Mengawal operasi fail dalam

GetTickCount

CloseHandle

Windows. ReadFile

CreateFile

GetFileSizeadvapi32.dll

- Mengandungi fungsi untuk

proses kriptografi.

CryptAcquireContext

CryptCreateHash

CryptHashData

CryptDeriveKey

CryptEncrypt

CryptDecrypt

CryptGetHashParam

CryptDestroyKey

CryptDestroyHash

CryptReleaseContextwinmm.dll

- Mengandungi fungsi untuk

memainkan audio.

sndPlaySound

user32.dll

- Mengandungi fungsi untuk

menetapkan lokasi X dan Y

aplikasi.

SetWindowPos

5.3.3 Logik dan Aturcara Modul Utama

Aplikasi ini dibangunkan dengan kod aturcara yang melebihi lima ribu baris.

Kod aturcara yang kompleks ini terdiri daripada fungsi-fungsi steganografi,

kriptografi, kawalan ralat, kawalan animasi dan beberapa fungsi lain. Pada sub topik

ini, aturcara yang akan dibincangkan adalah aturcara yang melibatkan proses utama

aplikasi ini iaitu aturcara penyembunyian mesej rahsia, aturcara pengekstrakan

mesej rahsia, aturcara MD5 dan juga beberapa aturcara penting yang lain.

Aturcara aplikasi ini akan dibincangkan berturutan mengikuti cara aplikasi

ini berkerja. Ini bermaksud, kod aturcara penting yang dipaparkan ialah semasa

aplikasi ini dilarikan pada waktu awal dan sehingga ianya menjalankan proses-

proses steganografi dan juga proses-proses lain.

5.3.3.1 Aturcara Permulaan Aplikasi

Pada permulaan aplikasi dilarikan, aplikasi akan membaca semua nilai

tetapan yang disimpan samada didalam fail settings.ini ataupun pada registry. Pada

fail tetapan aplikasi iaitu settings.ini, beberapa atribut mengenai aplikasi disimpan

secara kekal supaya ianya dapat digunakan semula.

Pada fail settings.ini, tetapan telah dikategorikan kepada empat bahagian

iaitu GENERAL, STEGO, CRYPTO dan juga APPLICATION. Kategori-kategori

tetapan ini menyimpan nilai-nilai yang berkaitan dengan penggunaan aplikasi.

Untuk penerangan yang lebih jelas terhadap setiap kategori, Jadual 5.4 dapat

membantu.

Jadual 5.4 Kategori tetapan fail settings.ini

Kategori Tetapan PeneranganGENERAL Mengandungi maklumat asas mengenai aplikasi.STEGO Menyimpan nilai yang akan digunakan untuk proses

steganografi.CRYPTO Menyimpan nilai yang akan digunakan untuk proses kriptografiAPPLICATION Menyimpan nilai tetapan sampingan aplikasi.

[GENERAL]Application=stegitName=settings.iniVersion=1.0Valid=universitiTeknologiMalaysiaUser=[STEGO]UsePassword=yesUseDefaultDirectory=yesDefaultDirectory=H:\Risz stego\3rdtDesign_modified_P2P&FTP2\ProjectDefaultPassword=BE56E057F20F883EE10ADC3949BA59ABUseDefaultMethod=yesDefaultMethod=normal[CRYPTO]GetFileHashes=yesSecurePassword=yes[APPLICATION]Top=3765Left=5145RememberPosition=yesShowSplashScreen=noSplashScreenPeriod=3000MiniSkin=noDefaultSettingFrame=applicationLockPosition=noBannerTimer=3000Animation=noAnimationSpeed=90

Antara contoh atribut ataupun nilai yang ada pada fail settings.ini ialah seperti Rajah

5.1 berikut:

Rajah 5.1 Atribut dan nilai pada fail settings.ini

Sub modul yang memainkan peranan semasa permulaan aplikasi ialah

startup, dimana pada sub modul ini beberapa fungsi untuk mendapatkan nilai awalan

untuk aplikasi diisytiharkan dan dilarikan. Rajah 5.2 memaparkan keratan aturcara

yang menentukan permulaan aplikasi.

Sub Main() 'initialize public variable here so that it is easy to do value correction formHeightImageLoaded = 9975 formHeightDefault = 7590 formWidhtDefault = 3855 'set the panel frame location panelTop = 3840 panelLeft = 120 'set the invalidProduct and available wav file to default invalidProduct = False relatedFileAvailable = True 'for FTP form setup ftpFormShow = False stickWithMainForm = True '#perfom check on settings.ini and 1.wav '#the settings.ini will load the initial application parameters '#while the 1.wav is for sound Call checkRelatedFile If invalidProduct = False Then If adminPreveledges = False Then expireSetup If Expire = False Then Call loadSetting Else Exit Sub End If Else Exit Sub End If End Sub

Rajah 5.2 Keratan kod aturcara permulaan aplikasi

5.3.3.2 Aturcara Penyembunyian Maklumat Rahsia

Sebelum pengguna boleh menyembunyikan data, mereka perlu memilih imej

hos dan juga memasukkan mesej rahsia. Selepas itu, barulah mesej rahsia akan

disimpan didalam imej hos tersebut. Imej hos mestilah merupakan fail berformat

bmp, dan mesej rahsia pula boleh ditaip ataupun dipilih dari ruangan storan

komputer peribadi. Kod aturcara pada Rajah 5.3 menerangkan mengenai proses

memulakan steganografi.

Rajah 5.3 Kod aturcara apabila butang penyembunyian diklik.

Apabila butang penyembunyian diklik maka aplikasi akan melarikan kod

aturcara pada Rajah 5.3. Apabila tiada ralat berlaku maka aplikasi seterusnya

melarikan kod aturcara yang akan memanggil fungsi addMessageToImage. Fungsi

addMessageToImage ini merupakan fungsi yang menjalankan proses

penyembunyian data ke imej. Pada Rajah 5.4 berikut, kod aturcara bagi fungsi

addMessageToImage ditunjukkan.

Private Sub cmdStego_Click() 'firstly. make all public variable that are related to be false..this is to 'prevent bugs if the user perform this operation twice @ more cx.perform_stego = False cx.step_check_passwordAndMethod = False cx.step_check_pictureAndText = False If imgLoaded = False Then sFileName = "" cx.checkImageAndText (sFileName) 'check if the default password and default method was used If cx.step_check_passwordAndMethod = True Then cx.checkPasswordAndMethod If cx.perform_stego = True Then cx.lockAllControl Call cx.addMessageToImage cx.unlockAllControl End If 'clear back the file name if it was loaded before lblTextFileName.Caption = ""

Public Function addMessageToImage()

……… (keratan kod tidak ditunjukkan, sila rujuk lampiran)

'set text length

B1 = sLen And 255B2 = (sLen And 65280) / 256B3 = (sLen And 16711680) / 65536

'write data length to imagecx.WritePixel (B1)cx.WritePixel (B2)cx.WritePixel (B3)

'start writing all bits to image.pgBar.Value = 0 'show progress bar value at 0.pgBar.Max = sLen 'set the max value for progress bar

For k = 1 To sLen .lblShowProgress.Caption = "Writing data to image. ( " & k & "/" & sLen & " )" .lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & "%" WritePixel (Asc(Mid(strData, k, 1))) If PicOverflow = True Then MsgBox "Image too small to store all data." & vbNewLine & "Data merge overflow.", vbCritical Exit Function End If 'ProgressShow frmMain.picProgBar, k / sLen If k Mod 10 = 0 Then DoEvents If cancelOperation = True Then Exit For .pgBar.Value = kNext k

……….. (keratan kod tidak ditunjukkan, sila rujuk lampiran)

End Function

Rajah 5.4 Kod aturcara menyimpan maklumat rahsia ke imej

Pada Rajah 5.4, aturcara yang dipaparkan merupakan hanya keratan daripada

aturcara fungsi yang sepenuhnya. Aturcara ini menunjukkan bagaimana piksel

ditulis kepada fail imej steganografi yang baru. Untuk melihat keratan kod yang

sepenuhnya, sila rujuk lampiran.

5.3.3.3 Aturcara Pengekstrakan Maklumat Rahsia

Bagi mengekstrak data daripada fail imej. Pengguna perlu terlebih dahulu

memilih fail imej yang mengandungi maklumat rahsia dan juga kunci pemprosesan.

Disebabkan aplikasi yang dibangunkan ini memberikan dua jenis kaedah iaitu

samada menggunakan kata laluan ataupun kunci pemprosesan maka kaedah yang

betul perlulah dipilih bagi memastikan aplikasi dapat mengesktrak maklumat dari

fail imej tersebut. Jika sebelum ini pengguna menyembunyikan maklumat rahsia ke

dalam imej dengan menggunakan kaedah kunci pemprosesan maka jika pengguna

tersebut ingin mengekstrak semula maklumat, mereka perlu memilih kaedah yang

sama.

Pada Rajah 5.5, kod aturcara bagaimana maklumat rahsia diekstrak daripada

imej ditunjukkan. Kod aturcara ini akan dilarikan apabila pengguna telah memilih

imej yang mengandungi data dan juga memilih kaedah pengekstrakan yang betul.

Untuk kaedah biasa, kata laluan diperlukan. Tetapi, jika pengguna menggunakan

kaedah ‘advance’ maka fail kunci pemprosesan diperlukan. Fail kunci pemprosesan

bagi aplikasi ini berformat .skey. Fungsi extractMethod akan dijalankan untuk

mendapatkan maklumat rahsia daripada imej.

Private Sub cmdRevealMessage_Click()

If sBitmapDataFileName = "" Then GoTo errLoadBitmapcx.lockAllControl

With SmallSteg If .optRevealTechnique(1).Value = True Then Call cx.extractMethod("key", sBitmapDataFileName) 'unlock the control back Call cx.unlockAllControl extract_key = False extract_normal = False Exit Sub ElseIf .optRevealTechnique(0).Value = True And .txtPasswordReveal.Text <> "" Then Call cx.extractMethod("normal", sBitmapDataFileName) 'unlock the control back Call cx.unlockAllControl extract_key = False extract_normal = False Exit Sub Else MsgBox "Cannot proceed to reveal message. This might be caused by:" & vbNewLine & _ "- Method for revealing message is not selected" & vbNewLine & _ "- Password is not provided", _ vbExclamation, "Error Reveal message" 'unlock the control back Call cx.unlockAllControl Exit Sub End If 'clear this value after each process 'sBitmapDataFileName = "" End WitherrLoadBitmap:MsgBox "Load data file first (bitmap)", vbExclamation, "Carrier image require"End Sub

Rajah 5.5 Kod aturcara apabila butang pengekstrakan diklik

Aturcara pada Rajah 5.5 menunjukkan bagaimana mesej diekstrak apabila

butang pengekstrakan diklik. Fungsi cx.extractMethod memainkan peranan dalam

mengekstrak mesej sebenar dari fail imej. Sila rujuk Rajah 5.6.

Private Sub extractMethod(mode As String, file As String)

….. (keratan kod tidak ditunjukkan sila rujuk lampiran)

For k = 1 To sLen fByte = ReadPixel If PicOverflow = True Then MsgBox "Failed reading the data from " & cx.getFileName(file) & vbNewLine & _ "This may be caused by the following:" & vbNewLine & _ "- Incorrect password supply" & vbNewLine & _ "- Data in the image is corrupted." & vbNewLine & _ "- The image contain no data.", vbCritical extractPassword = "" .fraProgressBar.Visible = False Exit Sub End If strData = strData & Chr(fByte) .lblShowProgress.Caption = "Reading data from image" .pgBar.Value = k .lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & " %" DoEvents If cancelOperation = True Then Exit For Next k….. (keratan kod tidak ditunjukkan sila rujuk lampiran)strData = GetSteganoText(strData)……(keratan kod tidak ditunjukkan sila rujuk lampiran)strData = Mid(strData, 6) Pos = InStr(1, strData, "FILE" & Chr(0)) If Pos > 1 Then SmallSteg.rtbRevealMsg.Text = Left(strData, Pos - 1) SmallSteg.rtbRevealMsg.BackColor = vbWhite Else SmallSteg.rtbRevealMsg.Text = "" End If

End Sub

Rajah 5.6 Kod aturcara mengekstrak maklumat rahsia

Bahagian kod aturcara yang akan mengekstrak maklumat rahsia ialah

GetSteganoText. Fungsi ini memainkan peranan penting untuk mendapatkan semula

mesej rahsia dari fail imej.

5.3.3.4 Aturcara Kriptografi MD5

Kriptografi MD5 digunakan didalam aplikasi bagi tujuan untuk melindungi

kata laluan pengguna yang disimpan, membaca nilai hash bagi sesebuah fail imej

dan juga bagi mengenkrip kunci pemprosesan. Aplikasi menyediakan suatu tetapan

yang membolehkan pengguna untuk menyimpan kata laluan mereka. Disebabkan

kata laluan ini perlu dilindungi supaya tidak boleh difahami maka penggunaan MD5

dilaksanakan. Begitu juga dengan kunci pemprosesan, ianya dienkrip dengan

menggunakan kriptografi MD5 bagi tujuan melindungi maklumat kunci

pemprosesan tersebut. Bagi fail imej pula, MD5 digunakan bertujuan untuk

mendapatkan nilai hash yang unik bagi fail tersebut. Ini bertujuan untuk

membezakan antara fail imej yang mengandungi maklumat rahsia dan juga fail imej

hos yang asal . Rajah 5.7 menunjukkan bagaimana penggunaan enkripsi keatas kata

laluan dilakukan.

Private Sub txtUserPassword2_Change() If txtUserPassword2.Text = txtUserPassword1.Text Then lblPasswordMatch.Visible = True Me.lblPasswordMatch.Caption = "Password already match" Me.cmdSavePassword.Enabled = True Set MD5 = New clsMD5 MD5pass = MD5.CalculateMD5(Me.txtUserPassword1) txtMD5password.Text = UCase(MD5pass) txtMD5password.locked = TrueElse lblPasswordMatch.Visible = False lblPasswordMatch.Caption = "-"End IfEnd Sub

Rajah 5.7 Kod aturcara enkripsi kata laluan dengan MD5

Keratan kod aturcara yang ditunjukkan pada Rajah 5.7 bertujuan untuk

mengenkrip kata laluan pengguna. Ianya dilakukan dengan memanggil fungsi

CalculateMD5 yang terdapat didalam sub modul clsMD5. Bagi penghasilan nilai

MD5 untuk fail imej pula, keratan kod aturcara adalah seperti Rajah 5.8.

Private Sub cmdBrowseBMP_Click()

….. (keratan kod tidak ditunjukkan sila rujuk lampiran)

'loadImage GetImage (sFileName) If cx.GetFromINI("CRYPTO", "GetFileHashes", App.path & "/settings.ini") = "yes" Then FileManipulation.getFileMD5 (sFileName) Else Me.lblThumbnail.Caption = "-Image Thumbnail-" Me.txtMD5.Text = "Not Generated" End If

….. (keratan kod tidak ditunjukkan sila rujuk lampiran)

End Sub

Rajah 5.8 Kod aturcara untuk mendapatkan nilai MD5 fail bitmap

Pada Rajah 5.8, nilai MD5 bagi sesebuah fail imej akan dihasilkan melalui

penggunaan fungsi getFileMD5 dibawah sub modul FileManipulation. Sebelum itu,

nama dan lokasi fail imej berkenaan perlulah dipilih dan diketahui. Bagi menjanakan

kunci pemprosesan pula, kod aturcara boleh dilihat pada Rajah 5.9

Public Sub generateKey(argument As String)'the argument can be any put "" if passing no argument

Dim tag1 As String 'bitmapfilenameDim tag2 As String 'bitmapfilesizeDim tag3 As String 'textlengthDim generatedKey As String

Dim md_tag1, md_tag2, md_tag3, md_tag4 As StringDim keyMD5Dim sMD5$

sMD5 = FileManipulation.GetMD5(argument)

'so key consist of md5(tag1) + md5(tag2) + md5(tag3)With SmallSteg tag1 = .sFileName tag2 = .lblSize.Caption tag3 = Len(.rtbSecretMessage.Text) Set keyMD5 = New clsMD5 md_tag1 = keyMD5.CalculateMD5(tag1) md_tag2 = keyMD5.CalculateMD5(tag2) md_tag3 = keyMD5.CalculateMD5(tag3) generatedKey = md_tag1 & md_tag2 & md_tag3 & sMD5 'assign it to global pGenerated_key = generatedKey End WithEnd Sub

Rajah 5.9 Kod aturcara untuk penjanaan kunci pemprosesan.

Pada Rajah 5.9, penjanaan kunci pemprosesan ditunjukkan. Fungsi

generateKey digunakan semasa proses pengguna ingin menyembunyikan data

kedalam fail imej. Fungsi ini hanya akan dijalankan oleh aplikasi apabila pengguna

memilih untuk menggunakan teknik ‘advance’.

5.4 Pengujian Aplikasi

Pengujian terhadap aplikasi dilakukan bagi memastikan bahawa aplikasi

bebas daripada ralat. Pengujian yang dilakukan ialah dengan melarikan aplikasi dan

melaksanakan proses-proses tertentu dengan mengambil kira pelbagai aspek

penggunaan dan tindakan.

Pengujian ini dijalankan keatas beberapa proses utama aplikasi seperti

penyembunyian maklumat dan juga pengkekstrakan maklumat. Pengujian dilakukan

dengan teliti dan jika terdapat sebarang ralat maka proses pembetulan akan

dilakukan serta merta.

5.4.1 Pengujian Terhadap Fail-fail Penting Aplikasi.

Aplikasi ini sangat bergantung kepada fail settings.ini kerana tanpa fail ini

sebarang nilai yang ingin disimpan tidak akan berjaya dan seterusnya ralat akan

berlaku. Justeru itu, beberapa pengujian dilakukan terhadap fail settings.ini tersebut.

Antara pengujian yang dilakukan diterangkan selanjutnya.

5.4.1.1 Pengujian Kehadiran Fail Settings.ini

Ujian ini bertujuan untuk memeriksa kewujudan fail settings.ini. Jika fail

tersebut hilang ataupun tidak terdapat didalam direktori aplikasi maka aplikasi akan

memaparkan suatu mesej yang memberitahu pengguna mengenai perkara tersebut.

Lihat Rajah 5.10.

Rajah 5.10 Mesej mengenai kehilangan fail settings.ini

Pada Rajah 5.10, mesej akan memberitahu pengguna mengenai kehilangan

fail settings.ini yang diperlukan oleh aplikasi. Cara untuk mengatasi masalah ini

juga dipaparkan pada mesej berkenaan iaitu dengan mencipta satu fail kosong yang

bernama settings.ini ataupun mencari semula fail settings.ini dan meletakkannya

pada direktori yang betul. Aplikasi membenarkan pengguna untuk mencipta suatu

fail settings.ini yang kosong kerana aplikasi mempunyai satu fungsi AutoRecovery

yang akan menulis semula kandungan atribut dan nilai asal.

5.4.1.2 Pengujian Terhadap Nilai Pada Fail settings.ini

Rajah 5.11 Mesej Auto Recovery fail settings.ini

Jika pengguna memilih untuk melarikan auto recovery maka aplikasi akan

membuat satu fail settings.ini dan menyimpan nilai tetapan yang asal. Selepas itu,

aplikasi akan dapat digunakan seperti biasa. Mesej pada Rajah 5.11 menunjukkan

fail settings.ini mempunyai nilai yang salah.

5.4.2 Pengujian Ketika Menyembunyikan Maklumat.

Pengujian ketika proses penyembunyian dilakukan adalah sangat penting

kerana jika ianya tidak diuji maka aplikasi akan menghadapi masalah ralat dan logik

yang besar. Sebelum proses menyembunyikan maklumat rahsia, fail bitmap dan juga

mesej rahsia perlu diisi terlebih dahulu.Jika pengguna tidak memilih fail imej

ataupun mengisi mesej rahsia maka aplikasi akan memaparkan mesej yang

memberitahu pengguna supaya mengisi dan memilih fail imej seperti Rajah 5.12

Rajah 5.12 Mesej amaran jika pengguna melakukan kesalahan

5.4.3 Pengujian Ketika Mengekstrak Maklumat

Ketika mengekstrak maklumat, fail imej yang mempunyai maklumat rahsia

perlu dipilih terlebih dahulu. Kemudian, pengguna perlu memilih kaedah yang betul

untuk mengekstrak semula maklumat rahsia samada menggunakan kaedah

“normal” ataupun kaedah “advance”. Jika pengguna menggunakan kaedah

“normal” maka untuk mengekstrak maklumat rahsia, pengguna perlu memasukkan

kata laluan yang betul. Jika pengguna memilih kaedah “advance” maka kunci

pemprosesan diperlukan. Rajah 5.13 menunjukkan antara kawalan ralat ke atas

proses ini.

Rajah 5.13 Mesej paparan untuk proses pengekstrakan

5.5 Rumusan

Aplikasi yang dibangunkan ini melibatkan proses steganografi dan

kriptografi yang rumit. Kod aturcara yang dibangunkan perlu diperiksa untuk

memastikan ianya tidak terdedah kepada ralat. Disebabkan aplikasi ini dilarikan

dibawah platfom Windows XP, maka penggunaan library yang sedia ada merupakan

suatu kelebihan.

Pengujian yang dilakukan setiap kali proses pertambahan keatas projek

merupakan suatu kaedah yang dapat memastikan aplikasi berada pada tahap yang

diinginkan berdasarkan fungsi dan juga kawalan ralatnya.

BAB VI

KESIMPULAN

6.1 Pengenalan

Dalam bab ini, perbincangan mengenai pencapaian projek, kekangan ataupun

cabaran yang dihadapi semasa membangunkan projek disentuh. Dalam

membincangkan mengenai pencapaian projek, status projek yang dibina akan dinilai

dari segi tahap projek berfungsi.Untuk kekangan pula, beberapa kekangan yang

dikenalpasti dalam membangunkan projek akan disenaraikan dan jalan penyelesaian

terhadap kekangan juga dikenalpasti dan direkodkan. Disamping semua itu, harapan

semasa membangunkan projek aplikasi steganografi turut dipaparkan.

6.2 Pencapaian Projek

Pada umumnya pencapaian projek boleh dikatakan berada didalam keadaan

yang baik kerana semua fasa-fasa didalam pembangunan projek dapat dilaksanakan

dengan jayanya mengikut tarikh dan masa yang telah ditetapkan. Mengenai projek

iaitu pembangunan aplikasi Steganografi, boleh dikatakan projek pembangunan ini

berjalan dengan agak lancar kerana sumber dan kepakaran dapat diperolehi serta

kekangan semasa dapat diatasi.

Antara pencapaian projek yang berjaya dicapai ialah pada peringkat fasa

kajian dimana proses mencari tajuk dan konsep projek dapat dikenalpasti dan

sumber-sumber yang ingin dijadikan sebagai rujukan dapat diperolehi dengan

mudah.

Pada peringkat analisa pula, konsep dan perjalan aplikasi projek dapat dibuat

dengan mudah kerana konsep–konsep aplikasi steganografi dapat difahami dengan

jelas. Begitu juga pada fasa-fasa berikutnya, pencapaian projek berada pada tahap

yang baik.

Pencapaian projek ini juga tidak terbatas pada projek yang pembangunan

sahaja, ianya juga melibatkan proses pendokumentasian iaitu penyediaan laporan.

Bagi penyediaan laporan pula, pencapaiannya adalah sangat baik kerana laporan

dapat disiapkan mengikuti tarikh yang ditetapkan.

6.3 Kekangan dan Cabaran

Dalam membangunkan projek ini, terdapat beberapa kekangan atau cabaran

yang perlu dihadapi antaranya ialah dari segi penguasaan terhadap konsep projek

yang dibangunkan. Antara kekangan lain yang dihadapi ialah penentuan teknik dan

algoritma yang bersesuai bagi memastikan projek aplikasi steganografi yang

dibangunkan dapat memberikan tahap sekuriti seperti yang diharapkan.

Selain itu, penentuan objek penyembunyian juga merupakan suatu kekangan

yang perlu dihadapi kerana pada masa kini, terdapat banyak objek penyembunyian

yang boleh diguna untuk dijadikan sebagai fail hos penyembunyian data.

Disamping itu, kajian secara lebih terperinci terhadap kod aturcara juga

merupakan suatu cabaran kerana projek yang dibangunkan ini menggunakan kod

aturcara yang agak berlainan dari kod-kod aturcara steganografi yang lazimnya

digunakan.

Cabaran juga tidak terhad disitu sahaja kerana pada fasa rekabentuk,

rekabentuk yang bersesuaian tidak kira samada rekabentuk strruktur ataupun

rekabentuk antaramuka pengguna, kajian dan analisis yang mendalam diperlukan

dan masa yang banyak perlu disumbangkan terhadap fasa rekabentuk ini.

6.4 Harapan

Diharapkan, aplikasi yang dibangunkan ini memenuhi objektif disamping

dapat melindungi maklumat pengguna. Di samping itu, pembaikan aplikasi juga

diharap dapat berterusan.

6.5 Ringkasan

Pada keseluruhannya dapat disimpulkan bahawa fasa-fasa dalam

pembangunan projek berjalan mengikuti masa dan sasaran yang ditentukan.

Kekangan dalam membangunkan aplikasi juga dapat diselesaikan seperti penentuan

teknik yang bersesuaian untuk aplikasi yang dibangunkan. Aplikasi yang

dibangunkan dengan menggunakan Visual Basic ini memberikan kelebihan dari segi

kebolehan interaksi dengan Windows. Pembangunan aplikasi berjalan dengan lancar

dan dapat mengikuti batu tanda yang telah ditetapkan.

Akhir kata, diharapkan aplikasi yang dibangunkan dapat memberi manfaat

kepada pengguna disamping dapat melindungi maklumat.

RUJUKAN

Abd Rahim, M.F (2004), Steganograpfi : penyembunyian teks dalam video,

Universiti Teknologi Malaysia : Tesis Ijazah Sarjana Muda

David, K (2007), Bitmap Format, http://atlc.sourceforge.net

Madani, A.S, Hassad, A.L, A. Wahdan, A.E.M. A Robust Steganography

Technique Using Discrete Cosine Transform Insertion, Department of Computer

Engineering Collage of Engineering and Technology, AAST, Cairo, Egypt

Stamp, M (2006). Information Security Principles and Practice, Wiley

Interscience

Stallings, W (1999). Cryptography and network security principles and

practices, 2nd Edition, Prentice Hall.

Tan, K. Y. (2005), Steganograpfi Menggunakan Teknik Variable Sized LSB

Insertion, Universiti Teknologi Malaysia : Tesis Ijazah Sarjana Muda

Wikipedia(2007), File Tranfer Protocol,

http://en.wikipedia.org/wiki/File_Transfer_Protocol

LAMPIRAN A : Carta Gantt PSM I

LAMPIRAN B : Carta Gantt PSM II

LAMPIRAN C

Public Function addMessageToImage()

Dim strData As String

Dim B1 As Double

Dim B2 As Double

Dim B3 As Double

Dim k As Double

Dim sLen As Double

'Dim sFileName As String

Dim blnErase As Boolean

Dim convertToBmp As Boolean

Dim killName As String

Dim FileBuffer() As Byte

Dim file As Integer

Dim action

Dim confirmAct

Dim key As String

Dim selectedFileImage As String

Cp = 0

selectedFileImage = smallsteg.sFileName

'get and load the file to container: picture box

With smallsteg

'key = cx.sel_stego_password

'--------set the progress bar visibility-------------

.fraProgressBar.Left = 120

.fraProgressBar.Visible = True

.lblShowProgressPercentage.Visible = True

.Refresh

'----------------------------------------------------

'just for debugging-----cut this code after finish--------

'If cx.perform_stego = True Then

' MsgBox "cx.addmessagetoimage call : " & selectedFile & _

' " " & cx.sel_stego_method & " - [%% " & key & " %%]" & _

' .rtbSecretMessage.Text

'End If

.pgBar.Value = 0

.lblShowProgress.Caption = "Scaling picture width and height"

.picStego.AutoSize = True

.picStego.Picture = LoadPicture(selectedFileImage)

.picStego.Refresh

.picStego.AutoSize = False

DataPicX = .picStego.ScaleWidth

DataPicY = .picStego.ScaleHeight

Xmax = DataPicX - 1

Ymax = DataPicY - 1

PicOverflow = False

'generate random number using randomize

.pgBar.Value = 0

.lblShowProgress.Caption = "Calculating random number"

Randomize

If .rtbSecretMessage.Text <> "" Then

'strData = "TEXT" & Chr(0) & .rtbSecretMessage.Text

strData = "TEXT" & Chr(0) & smallsteg.rtbSecretMessage.Text

'MsgBox strData

.lblShowProgress.Caption = "Reading message.."

Else

'if no text, add chr(0)

strData = "TEXT" & Chr(0) & Chr(0)

End If

'============================

Screen.MousePointer = 11

'right now..there are no file that will be embed to the image so

'let the strdata carry nothing about it

strData = strData & "FILE" & Chr(0) & Chr(0)

'compress the file and add header

sLen = 0

.lblShowProgress.Caption = "Compressing file and add header.."

strData = ULTRA.SetSteganoText(strData)

sLen = Len(strData)

'MsgBox sLen '& "--" & (DataPicX * DataPicY) * 3

Screen.MousePointer = 0

'MsgBox "key:" & cx.sel_stego_password & "[x]"

'=================================================================

===

If smallsteg.currentMethodUsed = "advance" Then

.lblShowProgress.Caption = "Set the key..(advance method)"

cx.generateKey (selectedFileImage)

Call SetSteganoKey(cx.pGenerated_key)

ElseIf smallsteg.currentMethodUsed = "normal" Then

.lblShowProgress.Caption = "Set the key..(normal method)"

Call SetSteganoKey(cx.sel_stego_password)

End If

'=================================================================

===

'set array for # pixels used

.lblShowProgress.Caption = "Set buffer for pixel"

NmbrPix = (DataPicX * DataPicY) - 1

ReDim UsedPix(NmbrPix)

'check data size to fit in image

.lblShowProgress.Caption = "Checking data size"

.pgBar.Value = 100

'MsgBox (sLen + 2) * 8 & " ----- " & (DataPicX * DataPicY) * 3

confirmAct = MsgBox("Carrier Image : " & getFileName(selectedFileImage) & ". " &

vbNewLine & _

Format(((sLen + 2) * 8 * 100) / ((DataPicX * DataPicY) * 3), "##.##") & " % of carrier

storage will be use" & vbNewLine & vbNewLine & _

"Selected Method is : " & cx.sel_stego_method & vbNewLine & _

"Are you sure to proceed this process? ", vbYesNo + vbInformation, "Confirmation")

If confirmAct = vbYes Then

GoTo start

Else

.lblCancelOperation.Visible = False

.fraProgressBar.Visible = False

.Refresh

Exit Function

End If

start:

If (sLen + 2) * 8 > (DataPicX * DataPicY) * 3 Then

MsgBox "Image too small to store all data." & vbCrLf & "Please select a larger image or

decrease the amount of data to save.", vbCritical

.fraProgressBar.Visible = False

Exit Function

End If

'get the first pixel

.lblShowProgress.Caption = "Get pixel"

Call GetNextPixel

'set cancel flag

.lblCancelOperation.Visible = True

cancelOperation = False

'set text length

B1 = sLen And 255

B2 = (sLen And 65280) / 256

B3 = (sLen And 16711680) / 65536

'write data length to image

cx.WritePixel (B1)

cx.WritePixel (B2)

cx.WritePixel (B3)

'start writing all bits to image

.pgBar.Value = 0 'show progress bar value at 0

.pgBar.Max = sLen 'set the max value for progress bar

For k = 1 To sLen

.lblShowProgress.Caption = "Writing data to image. ( " & k & "/" & sLen & " )"

.lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & "%"

WritePixel (Asc(Mid(strData, k, 1)))

If PicOverflow = True Then

MsgBox "Image too small to store all data." & vbNewLine & "Data merge overflow.",

vbCritical

Exit Function

End If

'ProgressShow frmMain.picProgBar, k / sLen

If k Mod 10 = 0 Then DoEvents

If cancelOperation = True Then Exit For

.pgBar.Value = k

Next k

'set last pixel RGB

smallsteg.picStego.PSet (Xp, Yp), RGB(R, G, B)

'refresh image

.lblShowProgress.Caption = "Refresh bitmap file"

smallsteg.picStego.Picture = smallsteg.picStego.Image

.lblCancelOperation.Visible = False

.fraProgressBar.Visible = False

.Refresh

If cancelOperation = True Then

MsgBox "Process was aborted by user.", vbExclamation, "Process Interrupted"

Exit Function

End If

If cancelOperation = False Then

MsgBox "The message successfully hide into the image", vbInformation, "Hiding

complete"

.rtbSecretMessage.Text = ""

If cx.GetFromINI("STEGO", "UseDefaultDirectory", App.path & "/settings.ini") = "no"

Then

If selectedFileImage <> "" Then

With smallsteg.CDialog

On Error GoTo errHandle

.DialogTitle = "Save Carrier file.."

.Filter = "Stegit Bitmap Files (*.bmp)|*.bmp"

.ShowSave

If .FileName <> "" Then

SavePicture smallsteg.picStego.Picture, .FileName

MsgBox "File saved " & "as " & .FileName, vbInformation, "Saved"

If cx.GetFromINI("STEGO", "DefaultMethod", App.path & "/settings.ini") =

"advance" Then

cx.saveSKey

End If

Exit Function

Else

Exit Function

End If

End With

On Error GoTo errHandle

End If

Else

SavePicture smallsteg.picStego.Picture, startup.defaultStegoFilePath & "\" &

getFileName(selectedFileImage)

MsgBox "The image file successfully saved as " & getFileName(selectedFileImage) &

vbNewLine & vbNewLine & _

"Saved Location is " & cx.GetFromINI("STEGO", "DefaultDirectory", App.path &

"/settings.ini") & "\" & vbNewLine & _

"Method of Hiding : " & cx.sel_stego_method, vbInformation

If cx.GetFromINI("STEGO", "DefaultMethod", App.path & "/settings.ini") = "advance"

Then

cx.saveSKey

End If

End If

End If

.Refresh

Exit Function

End With

errHandle:

'Screen.MousePointer = 0

MsgBox "Failed saving " & getFileName(selectedFileImage) & vbNewLine &

err.Description, vbCritical

Exit Function

End Function

LAMPIRAN D

Public Sub extractMethod(mode As String, file As String)

Dim strData As String

Dim B1 As Double

Dim B2 As Double

Dim B3 As Double

Dim sLen As Double

Dim tmp As String

Dim fByte As Byte

Dim tmpFileName As String

Dim tmpfolder As String

Dim FileBuffer() As Byte

Dim fileO As Integer

Dim Pos As Long

Dim k As Single

Dim extractPassword As String

Dim retval

Dim saveFileNameAs As String

Dim MD5

On Error GoTo errHandle

'load image and its size

With smallsteg

Set MD5 = New clsMD5

If LCase(mode) = "key" Then

extractPassword = smallsteg.rtbKey.Text

ElseIf LCase(mode) = "normal" Then

extractPassword = UCase(MD5.CalculateMD5(.txtPasswordReveal.Text))

End If

'clear some control properties

.picStego.Picture = LoadPicture("")

.rtbRevealMsg.Text = ""

'set image

.picStego.AutoSize = True

.picStego.Picture = LoadPicture(file)

.picStego.Refresh

.picStego.AutoSize = False

'get size of image

DataPicX = .picStego.ScaleWidth

DataPicY = .picStego.ScaleHeight

Xmax = DataPicX - 1

Ymax = DataPicY - 1

Cp = 0

'set the stegano key

Call SetSteganoKey(extractPassword)

'setup array for used pixs

NmbrPix = (DataPicX * DataPicY) - 1

ReDim UsedPix(NmbrPix)

'get first pixelset

Call GetNextPixel

'get number of bytes

B1 = ReadPixel

B2 = ReadPixel

B3 = ReadPixel

sLen = B1 + (B2 * 256) + (B3 * 65536)

.fraProgressBar.Visible = True

.lblShowProgress.Caption = "Checking data size"

.pgBar.Value = 0

.pgBar.Max = sLen

.lblCancelOperation.Visible = True

.lblShowProgressPercentage.Visible = True

'check image bitsize

If ((sLen + 2) * 8) > (DataPicX * DataPicY) * 3 Or sLen = 0 Then

'corrupted data lenght

MsgBox "Failed reading the data from " & cx.getFileName(file) & vbNewLine & _

"This may be caused by the following:" & vbNewLine & _

"- Incorrect password supply" & vbNewLine & _

"- Data in the image is corrupted." & vbNewLine & _

"- The image contain no data.", vbCritical, "Extract data failed"

.fraProgressBar.Visible = False

Exit Sub

End If

cancelOperation = False

PicOverflow = False

For k = 1 To sLen

fByte = ReadPixel

If PicOverflow = True Then

MsgBox "Failed reading the data from " & cx.getFileName(file) & vbNewLine & _

"This may be caused by the following:" & vbNewLine & _

"- Incorrect password supply" & vbNewLine & _

"- Data in the image is corrupted." & vbNewLine & _

"- The image contain no data.", vbCritical

extractPassword = ""

.fraProgressBar.Visible = False

Exit Sub

End If

strData = strData & Chr(fByte)

.lblShowProgress.Caption = "Reading data from image"

.pgBar.Value = k

.lblShowProgressPercentage.Caption = Format((k / sLen) * 100, "##.##") & " %"

DoEvents

If cancelOperation = True Then Exit For

Next k

If cancelOperation = True Then

'Extracting data from image aborted.

MsgBox "Reading data from image " & file & " aborted by user.", vbInformation

.fraProgressBar.Visible = False

Exit Sub

End If

'check header and decompres

strData = GetSteganoText(strData)

On Error GoTo errHandleSaveFile

If UltraReturnValue = 0 Then

'get text from strData

strData = Mid(strData, 6)

Pos = InStr(1, strData, "FILE" & Chr(0))

If Pos > 1 Then

smallsteg.rtbRevealMsg.Text = Left(strData, Pos - 1)

smallsteg.rtbRevealMsg.BackColor = vbWhite

Else

smallsteg.rtbRevealMsg.Text = ""

End If

'get file from strData

strData = Mid(strData, Pos + 5)

If Len(strData) > 1 Then

Pos = InStr(1, strData, Chr(0))

tmpFileName = Left(strData, Pos - 1)

strData = Mid(strData, Pos + 1)

FileBuffer() = StrConv(strData, vbFromUnicode)

'get save directory

askAgain:

retval = MsgBox("Save """ & tmpFileName & """ in the same folder as the carrier

image?", _

vbQuestion + vbYesNoCancel)

If retval = vbYes Then

'save file in carrier folder

saveFileNameAs = getFileName(file) & tmpFileName

ElseIf retval = vbNo Then

'show folder brows dialog

tmpfolder = Browse("Select folder to save " & tmpFileName)

If tmpfolder <> "" Then

saveFileNameAs = tmpfolder & tmpFileName

Else

saveFileNameAs = getFileName(file) & tmpFileName

Exit Sub

End If

Else

Exit Sub

End If

'save the file

fileO = FreeFile

Open saveFileNameAs For Binary As #fileO

Put #fileO, , FileBuffer()

Close #fileO

Else

file = ""

End If

'Call GetFile

Else

MsgBox "Failed reading the data from " & getFileName(file) & vbNewLine & _

"This may be caused by the following:" & vbNewLine & _

"- Wrong password." & vbNewLine & _

"- The image contain no data or corrupted.", vbCritical

'Screen.MousePointer = 0

file = ""

'frmMain.txtMain.Text = ""

smallsteg.rtbRevealMsg.Text = ""

'Call GetFile

End If

.fraProgressBar.Visible = False

End With

Exit Sub

errHandle:

'Screen.MousePointer = 0

'"Failed loading image: "

MsgBox "Failed loading the source image. Error description :" & vbNewLine & " - " &

err.Description, vbCritical

smallsteg.fraProgressBar.Visible = False

Exit Sub

errHandleSaveFile:

'Screen.MousePointer = 0

'"Failed loading image: "

MsgBox "Failed saving the extracted file." & vbNewLine & err.Description, vbCritical

smallsteg.fraProgressBar.Visible = False

file = ""

End Sub

Lampiran E

Private Sub cmdBrowseBMP_Click()

On Error GoTo err

If imgLoaded = True Then

'Me.Height = 7590

'Me.Height = formHeightImageLoaded

'value before = 8070

picThumbnail.Picture = LoadPicture("")

picThumbnail.Refresh

imgPreview.Stretch = False

imgPreview.Visible = False

Call lblUnloadImage_Click

End If

With CDialog

.FileName = ""

.DialogTitle = "Select image to be carrier"

.Filter = "Windows Bitmap (*.bmp)|*.bmp|"

.ShowOpen

If .CancelError = True Or err = 32755 Or cx.GetFileExt(.FileName) <> "bmp" Then

MsgBox "Bitmap file load failure. This might be caused by either" & vbNewLine &

_

"- Wrong file format loaded or" & vbNewLine & _

"- Cancellation process of loading bitmap", vbExclamation, "Error to load bitmap"

sFileName = ""

Exit Sub

Else

sFileName = .FileName

End If

End With

'loadImage

GetImage (sFileName)

If cx.GetFromINI("CRYPTO", "GetFileHashes", App.path & "/settings.ini") = "yes"

Then

FileManipulation.getFileMD5 (sFileName)

Else

Me.lblThumbnail.Caption = "-Image Thumbnail-"

Me.txtMD5.Text = "Not Generated"

End If

cmdCloseThumbnail.Visible = True

If imgLoaded = True Then

Me.Height = formHeightImageLoaded '10005

cmdBrowseBMP.Enabled = False

lblStegoInsertFile.Enabled = True

End If

smallsteg.txtLoadBMP.Text = sFileName

If sFileName = "" Then smallsteg.txtLoadBMP.Text = "Load bitmap image here..."

Exit Sub

err:

MsgBox "Fail to load the bmp image" & sFileName & vbCrLf & vbCrLf & err.Description,

vbCritical

If smallsteg.fraProgressBar.Visible = True Then smallsteg.fraProgressBar.Visible = False

End Sub

Lampiran F

Manual Pengguna

1. Menyembunyikan Mesej Rahsia

Mod Penyembunyian

- Menyembunyikan mesej rahsia

kedalam imej bitmap.

1. Klik butang Hide

2. Pada Kekotak Mesej, taip mesej rahsia ataupun

membuka fail teks (.txt) yang sedia ada. Seperti

Rajah A, fail EmailStudent.txt telah dipilih.

3. Kemudian Klik Butang Browse Bmp

Butang untuk memilih fail bitmap.

Kekotak seperti dibawah akan muncul, pilih fail

bitmap anda.

4. Selepas teks rahsia dan fail bitmap sudah sedia,

maka klik pada butang Hide message.Butang Hide message

5. Kekotak Mesej Confirmation akan muncul dan

klik Yes untuk menyembunyikan mesej anda.

6. Ikuti arahan berikutnya.

2. Mengekstrak Maklumat Rahsia

Mod Pengekstrakan

- Mengekstrak semula mesej

rahsia didalam fail bitmap

1. Klik pada butang Reveal

2. Pilih fail imej yang mengandungi data. Klik pada

butang seperti yang ditunjukkan dibawah:

Butang pemilihan fail bitmap yang

mempunyai mesej rahsia.3.

Pilih cara pengekstrakan mesej anda.

Normal: memerlukan

anda menaip kata laluan.

Advance: memerlukan

penggunaan kunci

(.skey)

** Cara mengekstrak mesej mestilah sama dengan cara

penyembunyian mesej anda. Anda boleh mengubahnya

dengan klik Settings -> Stegano -> tandakan always use

this method for stegano process4. Klik pada butang Reveal it!!

Butang pemilihan fail bitmap yang

mempunyai mesej rahsia.

5. Mesej rahsia kemudian akan dipaparkan pada kekotak

mesej.

3. Menukar Tetapan Aplikasi

Mod Tetapan

- Mengubah tetapan aplikasi

dan juga proses seperti

steganografi dan kriptografi

1. Klik pada butang Settings

2. Pilih Tetapan yang sedia ada

.Terdapat 3 jenis tetapan iaitu

- Application:

- Crypto

- Stegano

3. Untuk mengubah nilai tetapan, pilih petak yang

berkaitan dan tekan butang Save settings untuk

menyimpan nilai tetapan yang baru.

Butang Save settings.

4. Selepas itu, kekotak mesej akan dipaparkan, klik

OK.

4. Menghantar Data Menggunakan FTP

Mod Penghantaran

- menghantar data steganografi

ke Pelayan.

1. Klik pada butang Send.

2. Pilih FTP

3. Masukkan nama

pelayan, nama pengguna dan kata laluan.

4. Klik Butang Connect.

5. Beberapa Fungsi Tambahan Aplikasi

Mini skin

- untuk mengecilkan antaramuka

Tetapan kata laluan

- Pengguna boleh menetapkan penggunaan kata

laluan supaya aplikasi akan menggunakan kata

laluan yang sama untuk semua proses

penyembunyian.

Perbandingan nilai hash MD5 fail bitmap

- Pengguna boleh memeriksa samada bitmap

yang serupa adalah sama nilai hash nya ataupun

tidak.