STEGANOGRAFI GAMBAR DENGAN METODE LEAST SIGNIFICANT BIT UNTUK PROTEKSI KOMUNIKASI PADA MEDIA ONLINE
SKRIPSI Diajukan sebagai salah satu syarat untuk memeroleh Gelar Sarjana Teknik pada Jurusan Teknik Informatika Fakultas Sains dan Teknologi Universitas Islam Negri Sunan Gunung Djati Bandung
Oleh : Tri Prasetyo Utomo 207700476
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGRI SUNAN GUNUNG DJATI BANDUNG 2012 M / 1433 H
STEGANOGRAFI GAMBAR DENGAN METODE LEAST SIGNIFICANT BIT UNTUK PROTEKSI KOMUNIKASI PADA MEDIA ONLINE
Oleh: TRI PRASETYO UTOMO 207700476
Menyetujui:
Pembimbing I,
Pembimbing II,
Agung Wahana, SE., MT. NIP. 197305312009011003
Jumadi, ST. NIP. 1978050312007101001
Mengetahui
Dekan Fakultas Sains dan Teknologi,
Ketua Jurusan Teknik Informatika,
Dr. H. M. Subandi, Drs., Ir., MP. NIP. 195404241985031004
H. Cecep Nurul Alam, ST., MT. NIP. 197804172005011005
LEMBAR PENGESAHAN
Skripsi yang berjudul STEGANOGRAFI GAMBAR DENGAN METODE LEAST SIGNIFICANT BIT UNTUK PROTEKSI KOMUNIKASI PADA MEDIA ONLINE dinyatakan sah dan telah disidangkan dalam sidang MUNAQOSYAH Fakultas Sains dan Teknologi, Universitas Islam Negri Sunan Gunung Djati Bandung pada tanggal 20 Juli 2012 oleh Majelis Sidang yang terdiri dari:
Ketua Majelis,
Sekretaris,
Dr. M. Agus Salim, Drs., MP. NIP : 196708181993031003
Ichsan Taufik, MT. NIP : 198009132006041002
Mengetahui Penguji I,
Penguji II,
Undang Syaripudin, SH., M.Kom NIP : 197909302029121002
Mohamad Irfan, ST., M.Kom NIP : 198310232009121005
RIWAYAT HIDUP Tri Prasetyo Utomo, lahir di Bandung pada tanggal 6 April 1989. Penyusun skripsi ini adalah putra ketiga dari tiga bersaudara buah pernikahan dari Bapak Heri Purwanto dan Ibu Sukartik, yang beralamat di Jl. Hasan Saputra no.23, Kel. Turangga, Kec. Lengkong, Kota Bandung, Prov. Jawa Barat. Pendidikan dasarnya ditempuh di SDN Turangga 1 Kota Bandung dan lulus pada tahun 2001. Kemudian melanjutkan ke pendidikan menengah pertama di SMPN 4 Bandung dan lulus pada tahun 2004. Selanjutnya ia melanjutkan pendidikan menengah atas di SMAN 22 Bandung dan lulus pada tahun 2007. Setelah tamat pendidikan menengah atas, kemudian melanjutkan ke Program Strata Satu (S-1) di Universitas Islam Negri Sunan Gunung Djati Bandung pada Fakultas Sains dan Teknologi di Jurusan Teknik Informatika sejak tahun 2007. Penulis mengikuti program Strata satu (S-1) pada tahun akademik 2007/2008 – 2011/2012. Dalam menyelesaikan tugas akhir, ia menulis skripsi dengan judul : Steganografi Gambar Dengan Metode Least Significant Bit Untuk Proteksi Komunikasi Pada Media Online, dibawah bimbingan Bapak Agung Wahana, SE., MT. dan Bapak Jumadi, ST.
UCAPAN TERIMA KASIH Keberhasilan dari skripsi ini tidak terlepas dari bantuan dan bimbingan dari berbagai pihak, untuk itu penulis dengan tulus dan ikhlas menyampaikan ucapan terima kasih sebesar-besarnya kepada: 1. Allah SWT, karena atas rahmat dan maghfirah-Nya kepada penulis, penulis dapat menyelesaikan skripsi ini. 2. Penghargaan yang setinggi-tingginya kepada Ibunda, Sukartik yang tercinta yang telah banyak mendoakan dan memberikan baik materil, spirituil, motivasi serta harapan-harapannya kepada penulis agar bisa menyelesaikan skripsi ini. 3. Bapak Prof. Dr. Deddy Ismatullah, SH., M.H, selaku Rektor Universitas Islam Negri Sunan Gunung Djati Bandung. 4. Bapak Dr. H. M. Subandi, Drs. Ir., MP, selaku Dekan Fakultas Sains dan Teknologi Universitas Islam Negri Sunan Gunung Djati Bandung. 5. Bapak H. Cecep Nurul Alam, MT, selaku Ketua Jurusan Teknik Informatika Fakultas Sains dan Teknologi Universitas Islam Negri Sunan Gunung Djati Bandung. 6. Bapak Agung Wahana, SE., MT, selaku dosen pembimbing I, yang telah membimbing, mengarahkan serta memberi saran bagi penulis dalam menyelesaikan skripsi ini. 7. Bapak Jumadi, ST, selaku dosen pembimbing I, yang telah membimbing, mengarahkan serta memberi saran bagi penulis dalam menyelesaikan skripsi ini.
8. Bapak Undang Syaripudin, SH., M.Kom, selaku dosen penguji I, terimakasih telah mengoreksi kekurangan-kekurangan baik dari laporan maupun aplikasinya, sehingga penulis dapat memperbaikinya lagi. 9. Bapak Mohamad Irfan, ST., M.Kom, selaku dosen penguji I, terimakasih telah mengoreksi kekurangan-kekurangan baik dari laporan maupun aplikasinya, sehingga penulis dapat memperbaikinya lagi. 10. Kepada seluruh dosen Teknik Informatika Fakultas Sains dan Teknologi Universitas Islam Negri Sunan Gunung Djati Bandung. 11. Kepada seluruh staf dan karyawan Fakultas Sains dan Teknologi Universitas Islam Negri Sunan Gunung Djati Bandung. 12. Kepada kakak-kakakku dan adik-adikku, terimakasih atas doanya kepada penulis. 13. Kepada seluruh rekan-rekan seperjuangan Teknik Informatika D 2007, Universitas Islam Negri Sunan Gunung Djati Bandung, yang telah memberikan dukungan moril kepada penulis. 14. Semua pihak yang telah turut membantu penyelesaian skripsi ini yang tidak mungkin penulis sebutkan satu persatu karena keterbatasan ruang dan waktu. Akhirul kalam, penulis mengucapkan terima kasih kepada semua pihak yang telah membantu, semoga bantuan tersebut mendapat amal yang berlipat ganda, dan penulis berharap semoga skripsi ini bermanfaat bagi pembaca terutama bagi penulis sendiri. Amin Ya Rabbal Alamin Ya Allah.
ABSTRAK STEGANOGRAFI GAMBAR DENGAN METODE LEAST SIGNIFICANT BIT UNTUK PROTEKSI KOMUNIKASI PADA MEDIA ONLINE Tri Prasetyo Utomo – NIM 207 700 476 Jurusan Teknik Informatika Informasi adalah sebuah data mentah yang telah dipilah sedemikian rupa sehingga memiliki manfaat informatif bagi sebagian maupun banyak pihak. Di era internet ini, transaksi informasi merupakan hal yang lumrah dilakukan di dunia maya. Hal yang sering dilupakan oleh para user internet adalah keamanan data dimana informasi di internet bersifat terbuka dengan kemungkinan akses oleh user dari seluruh dunia. Dalam kasus yang sensitif, beberapa informasi ditujukan hanya untuk user atau pihak tertentu, dan dalam hal inilah diperlukan suatu proteksi untuk melindungi informasi dari pihak-pihak yang tidak berhak mengaksesnya. Steganografi adalah pendekatan proteksi data yang prosesnya adalah penyembunyian pesan dalam media gambar. Dengan steganografi ini proses transaksi data diharapkan akan menjadi lebih aman dari pihak-pihak yang tidak berhak mengaksesnya. Proses ini dilakukan dengan metode Least Significant Bit, yang dikembangkan dengan menggunakan aplikasi Embarcadero Delphi 2010. Kesimpulan yang dapat diambil dari penulisan skripsi ini adalah bahwa: 1) Steganografi dapat melindungi transaksi pengiriman pesan; dan 2) Steganografi menyamarkan pesan di dalam gambar. Saran untuk penyempurnaan program ini adalah sebagai berikut: 1) Aplikasi steganografi ini sebaiknya dikembangkan menjadi sebuah aplikasi yang lebih kompleks, baik penambahan input type file gambar, output type file gambar, dan fitur-fitur lain yang menunjang aplikasi ini; 2) Penyederhanaan proses penyisipan pesan dan pembacaan pesan rahasia; dan 3) Penambahan pop-up help untuk mempermudah user. Kata Kunci : Kriptografi, Steganografi, Gambar, Metode Least Significant Bit, Delphi.
i
ABSTRACT PICTURE STEGANOGRAPHY USING LEAST SIGNIFICANT BIT METHOD FOR COMMUNICATION PROTECTION AT THE ONLINE MEDIA Tri Prasetyo Utomo – NIM 207 700 476 Informatics Engineering Information is a raw data which has been properly selected so that it bore the informative usage for a lot of parties involved. In this Internet era, the information exchange is a common thing to happen in the virtual world. The thing that is often forgotten by the internet users is the data security, where information is rather openly available with the possibility to be accessed by users all over the world. In a sensitive case, some information are directed to some particular users or specific party, and in this area, the information needs a kind of protection to protect the information from the unauthorized parties. Steganography is a data protection approach which process is to hide some messages in a picture as a media. By this steganography, the transaction process is expected to be safer from the unauthorized parties. The process was done using Least Significant Bit method which was developed using Embarcadero Delphi 2010 application. There were two conclusions from the thesis, i.e.: 1) Steganography can protect the message exchange transaction; and 2) Steganography hides the message inside the picture. The suggestions given to perfect the application, were as follows: 1) This steganography application is better to be developed into a more complex application, from the addition of the picture input and output type files up to other features that support this application; 2) Simplification of the message insertion process and the secret message extraction; and 3) The addition of the pop-up help balloon to ease the user. Keywords: Cryptography, Steganography, Picture, Least Significant Bit method, Delphi
ii
KATA PENGANTAR
Bismillahhirahmannirahim Puji dan syukur penulis panjatkan ke hadirat Allah SWT, yang telah memberikan rahmat dan karunia-NYA sehingga penulis dapat menyelesaikan Tugas Akhir ini. Tidak lupa shalawat serta salam semoga selalu dicurahkan kepada junjungan kita Nabi Besar Muhammad SAW serta keluarga dan para pengikutnya hingga kita sekalian. Penulisan Tugas Akhir ini dimaksudkan untuk menyelesaikan program S1 di jurusan Teknik Informatika UIN SGD Bandung. Adapun judul Tugas Akhir yang penulis buat adalah “STEGANOGRAFI GAMBAR DENGAN METODE LEAST SIGNIFICANT BIT UNTUK PROTEKSI KOMUNIKASI PADA MEDIA ONLINE”. Penulis telah berusaha semaksimal mungkin dengan kemampuan yang dimiliki oleh penulis untuk membuat Tugas Akhir ini, namun demikian penulis menyadari, karena keterbatasan kemampuan tidak menutup kemungkinan masih ada kekurangan, karena itu saran-saran yang mengarah pada perbaikan akan diterima dengan senang hati. Merupakan suatu kebahagiaan bagi penulis atas selesainya Tugas Akhir ini dengan berbagai rintangan dan hambatan dalam proses penyusunannya, namun atas pertolongan Allah, penulis diberi kekuatan dan kesabaran untuk menyelesaikan permasalahan ini, serta tidak terlepas dari bantuan, bimbingan dan
iii
dorongan dari berbagai pihak, baik dorongan material maupun spiritual. Pada kesempatan ini dengan segala kerendahan hati penulis ingin menyampaikan penghargaan dan ucapan terima kasih yang tulus kepada :
Ibu dan Bapak tercinta atas segala bimbingan, arahan serta do’a yang senantiasa tiada henti dengan penuh kasih sayang yang tulus.
Bapak Dr. H. M. Subandi, Drs. M.P, Dekan Fakultas Sains dan Teknologi UIN Sunan Gunung Djati Bandung.
Bapak Cecep Nurul Alam, ST., MT. , Ketua Jurusan Informatika Fakultas Sains dan Teknologi UIN Sunan Gunung Djati Bandung.
Bapak Agung Wahana, SE., MT. Dan Bapak Jumadi, ST. Selaku dosen pembimbing yang dengan tulus hati telah meluangkan waktu untuk memberikan pengarahan dan bimbingan yang berharga dalam menyelesaikan laporan Tugas Akhir ini.
Bapak Aep Saefullah, M.Si, selaku dosen pembimbing akademik yang senantiasa terus memberikan dorongan semangat dan arahan guna terselesaikan laporan ini.
Teman-teman Informatika ’07 yang senantiasa memberikan sumbangan pemikiran dan ide-ide demi terselesaikannya Tugas Akhir ini.
Bandung, 08 Maret 2012
Penyusun
iv
DAFTAR ISI
ABSTRAK ..........................................................................................................i KATA PENGANTAR ........................................................................................iii DAFTAR ISI.......................................................................................................v DAFTAR GAMBAR ..........................................................................................viii DAFTAR SIMBOL.............................................................................................x DAFTAR TABEL...............................................................................................xii DAFTAR RUMUS .............................................................................................xiii DAFTAR FORMULA ........................................................................................xiv DAFTAR LISTING PROGRAM .......................................................................xv
BAB I PENDAHULUAN 1.1. Latar Belakang...........................................................................................1 1.2. Rumusan Masalah......................................................................................4 1.3. Tujuan ........................................................................................................4 1.4. Batasan Masalah ........................................................................................4 1.5. Metodologi Penelitian................................................................................5 1.6. Sistematika Penelitian................................................................................6
BAB II DASAR TEORI 2.1. Rekayasa Perangkat Lunak........................................................................8 2.1.1.
Tahapan RPL ...............................................................................10
2.2. Prototype....................................................................................................14 2.2.1.
Jenis-jenis Prototype....................................................................15
2.2.2.
Tahapan Prototype .......................................................................16
v
2.2.3.
Penggunaan Prototype .................................................................17
2.2.4.
Keunggulan dan Kelemahan Prototyping....................................18
2.3. Analysis .....................................................................................................20 2.3.1.
Data Flow Diagram (DFD)..........................................................20
2.3.2.
DFD Leveling ..............................................................................22
2.4. Kriptografi .................................................................................................23 2.5. Steganografi...............................................................................................26 2.5.1.
Metode Steganografi....................................................................28
2.5.2.
Steganalisis dan Stegosystem ......................................................30
2.6. Metode Least Significant Bit .....................................................................33 2.7. Media Online .............................................................................................36
BAB III ANALISIS DAN PERANCANGAN 3.1. Analisis Sistem ..........................................................................................39 3.1.1.
Analisis Permasalahan .................................................................39
3.1.2.
Sistem Yang Akan Dibuat ...........................................................39
3.2. Analisis Kebutuhan....................................................................................39 3.2.1.
Spesifikasi Rancangan IPOSC.....................................................40
3.2.2.
Perancangan Input .......................................................................40
3.2.3.
Perancangan Process....................................................................40
3.2.4.
Perancangan Output.....................................................................44
3.2.5.
Sasaran Sistem yang Dibutuhkan ................................................44
3.2.6.
Ruang Lingkup Sistem ................................................................45
3.2.7.
Evaluasi Kelayakan .....................................................................45
3.2.8.
Ruang Lingkup Dokumen............................................................46
3.3. Analisis Data..............................................................................................46 3.3.1.
Analisis Kebutuhan Input ............................................................46
3.3.2.
Analisis Kebutuhan Output..........................................................47
3.4. Analisis Kebutuhan Fungsional.................................................................47
vi
3.5. Analisis Kebutuhan Non Fungsional .........................................................47 3.6. Kebutuhan Sistem......................................................................................49 3.5.1.
Diagram Konteks (CD)................................................................49
3.5.2.
DFD Level 1 ................................................................................51
3.5.3.
DFD Level 2 ................................................................................52
3.7. Perancangan Sistem ...................................................................................56 3.6.1.
Struktur Menu..............................................................................56
3.6.2.
Rancangan Antar Muka (Interface) .............................................57
BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1. Implementasi Sistem..................................................................................66 4.1.1.
Kebutuhan Perangkat Keras (Hardware) .....................................66
4.1.2.
Kebutuhan Perangkat Lunak (Software) .....................................66
4.1.3.
Implementasi................................................................................67
4.1.4.
Konfigurasi Perangkat Keras.......................................................67
4.1.5.
Konfigurasi Perangkat Lunak ......................................................67
4.2. Pengujian Aplikasi.....................................................................................68 4.2.1.
Pelaksanaan Pengujian.................................................................68
4.2.2.
Pengujian Aplikasi.......................................................................70
BAB V KESIMPULAN DAN PENUTUP 5.1. Kesimpulan ................................................................................................79 5.2. Saran ..........................................................................................................80
DAFTAR PUSTAKA LAMPIRAN-LAMPIRAN
vii
DAFTAR GAMBAR
Gambar 2.1 Tipe-tipe perawatan.........................................................................13 Gambar 2.2 Tahapan prototype...........................................................................16 Gambar 2.3 Diagram proses enkripsi dan dekripsi .............................................25 Gambar 2.4 Deret biner pada pixel berwarna merah murni................................34 Gambar 2.5 Deret biner pada pixel berwarna hijau murni..................................34 Gambar 2.6 Deret biner pada pixel berwarna biru murni ...................................35 Gambar 3.1 Flow chart proses Embedding Pesan...............................................41 Gambar 3.2 Flow Chart proses Ekstraksi Pesan .................................................43 Gambar 3.3 Konteks Diagram.............................................................................50 Gambar 3.4 DFD Level 1 Aplikasi Steganografi................................................51 Gambar 3.5 DFD Level 2 Proses Cek Data ........................................................52 Gambar 3.6 DFD Level 2 Proses Embedding Teks ............................................53 Gambar 3.7 DFD Level 2 Proses Cek Stegotext.................................................54 Gambar 3.8 DFD Level 2 Proses Ekstraksi Text ................................................55 Gambar 3.9 Struktur menu Aplikasi Steganografi..............................................56 Gambar 3.10 Rancangan interface Menu Utama ................................................57 Gambar 3.11 Rancangan interface Menu Login .................................................58 Gambar 3.12 Rancangan interface menu Konfirmasi Exit .................................59 Gambar 3.13 Rancangan interface menu Embedding Pesan ..............................59 Gambar 3.14 Rancangan interface menu Extract Pesan .....................................63 Gambar 4.1 Menu Utama program .....................................................................70 Gambar 4.2 Form Login......................................................................................70 Gambar 4.3 Form Login setelah menginputkan password..................................71 Gambar 4.4 Form Login setelah melakukan verifikasi password.......................71 Gambar 4.5 Submenu Rubah password ..............................................................72
viii
Gambar 4.6 Form Rubah Password ....................................................................72 Gambar 4.7 Form Rubah Password setelah berhasil merubah password............73 Gambar 4.8 Menu Utama program setelah proses rubah password berhasil ......73 Gambar 4.9 Menu Utama program setelah proses login berhasil .......................74 Gambar 4.10 Form Tulis Pesan...........................................................................74 Gambar 4.11 Form Tulis Pesan setelah membuka gambar.................................75 Gambar 4.12 Tampilan save gambar ..................................................................75 Gambar 4.13 Tampilan Form Tulis Pesan setelah berhasil sisip pesan ..............76 Gambar 4.14 Form Baca Pesan...........................................................................77 Gambar 4.15 Form Baca Pesan setelah membuka gambar .................................77 Gambar 4.16 Form Baca Pesan setelah mengekstrak pesan ...............................78
ix
DAFTAR SIMBOL
1. DAFTAR SIMBOL FLOW CHART No 1.
Simbol
Keterangan Mulai (Start) / Finish (End) Simbol ini adalah state dimana proses dalam suatu sistem dimulai.
2.
Data Simbol ini menunjukkan data yang terlibat di dalam sistem.
3.
Proses Simbol ini menunjukkan proses yang terjadi di dalam sistem.
4.
Decision Simbol ini digunakan untuk menunjukkan percabangan, yaitu proses yang berkondisi dimana proses tersebut bergantung pada keputusan yang diambil.
x
2. DAFTAR SIMBOL DATA FLOW DIAGRAM (DFD) No 1.
Simbol
Keterangan Proses Simbol ini menggambarkan proses dimana aliran data yang masuk (input) akan diproses menjadi sebuah informasi dalam bentuk keluaran (output). External Entity Simbol ini menggambarkan batas sistem yang memisahkan suatu sistem dengan lingkungan luarnya, yang akan memberikan atau menerima keluaran (output) dari sistem (proses), biasa disebut entitas eksternal. Flow (aliran data) Simbol ini menggambarkan aliran data dengan arah tertentu dari tempat asal menuju tujuan dalam bentuk data (input) atau informasi (output) lainnya. Data Store Simbol ini menggambarkan tempat penyimpanan data. Semua data disimpan atau direferensi oleh suatu proses di dalam sistem.
2.
3.
4.
xi
DAFTAR TABEL
Tabel 4.1 Tabel pengujian Aplikasi Steganografi...............................................68
xii
DAFTAR RUMUS
Rumus 2.1 ...........................................................................................................25 Rumus 2.2 ...........................................................................................................25 Rumus 2.3 ...........................................................................................................25
xiii
DAFTAR FORMULA
Formula 2.1 Formula bilangan biner...................................................................33
xiv
DAFTAR LISTING PROGRAM
Listing Program 3.1 Verifikasi login Form Login ..............................................58 Listing Program 3.2 Cek fleck Tombol Tulis Pesan ...........................................60 Listing Program 3.3 Sisip fleck Tombol Tulis Pesan..........................................61 Listing Program 3.4 Sisip pesan Tombol Tulis Pesan ........................................62 Listing Program 3.5 Sisip baris Tombol Tulis Pesan..........................................62 Listing Program 3.6 Sisip kolom Tombol Tulis Pesan .......................................63 Listing Program 3.7 Cek fleck Tombol Extract Pesan........................................64 Listing Program 3.8 Ambil info baris Tombol Extract Pesan ............................64 Listing Program 3.9 Ambil info baris Tombol Extract Pesan ............................64 Listing Program 3.10 Ambil pesan dari gambar Tombol Extract Pesan ............65
xv
BAB I PENDAHULUAN
1.1 Latar Belakang Masalah Adalah kodrat manusia untuk saling berinteraksi dan salah satu cara untuk berinteraksi adalah dengan bertukar informasi. Awalnya manusia bertukar informasi dengan cara berbicara, kemudian menggunakan media tulisan berupa surat. Selain dengan media tulisan manusia mengenal media komunikasi berupa gambar. Dengan gambar sebuah informasi dapat disajikan dengan mudah dan berkesan estetik. Seiring kemajuan zaman, manusia memasuki era internet, dimana perkembangan pertukaran informasi pun berkembang pesat. Kini informasi berupa pesan dan gambar dapat dikirimkan sebagai surat elektronik melalui e-mail, dipajang di blog pribadi sebagai post berita, maupun yang belakangan ini populer adalah memajangnya di social networking seperti facebook, friendster, dan twitter. Dengan adanya layanan untuk bertukar informasi di internet dengan dengan memanfaatkan media online ini, maka dibukalah lembaran baru dalam metode bertukar informasi. Dengan media online ini, dapat dikirimkan pesan berupa tulisan, gambar, bahkan berupa file sisipan yang disertakan dalam pesan. Dalam perkembangan pertukaran informasi, salah satu kendala yang ditemukan adalah masalah keamanan. Beberapa hal yang harus dipenuhi saat
1
2
pesan dikirimkan hingga sampai pada penerima adalah confidentiality, integrity, availability, authenticity, dan non-repudiation. Kelima konsep keamanan komputer ini melindungi pesan yang dikirimkan sender kepada receiver agar pesan yang dikirimkan sampai dengan selamat tanpa kurang satu bit data pun. Confidentiality adalah istilah yang digunakan untuk mencegah diaksesnya informasi oleh individual atau sistem yang tidak berhak. Integrity dalam istilah keamanan informasi berarti data tidak dapat dimodifikasi tanpa terdeteksi. Availability menjelaskan tujuan dari pesan tersebut, dimana pada saat dibutuhkan informasi tersebut harus dapat diakses dan tersedia. Authenticity menjelaskan bahwa pesan yang dikirim adalah autentik, serta pengirim dan penerima adalah benar pihak yang benar-benar mengirimkan pesan tersebut. Non-repudiation adalah istilah untuk menjelaskan suatu pihak tidak bisa mengelak telah melakukan suatu transaksi, dalam hal ini mengirimkan pesan. Melihat dari masalah keamanan di atas, maka itu dikembangkanlah suatu metoda
pengamanan
pesan
elektronik
yang
dinamakan
steganografi
(steganography). Steganografi merupakan seni penyembunyian pesan ke dalam pesan lainnya sedemikian rupa sehingga orang lain tidak menyadari ada sesuatu di dalam pesan tersebut. Kata steganografi berasal dari bahasa Yunani yaitu steganos yang artinya tersembunyi atau terselubung dan graphein, yang artinya menulis, sehingga kurang lebih artinya adalah “menulis tulisan yang tersembunyi atau terselubung” (Sellars, 1996).
3
Pengaplikasian
steganografi
pada
media
online
adalah
dengan
menyisipkan pesan pada media gambar. Dengan metode ini pesan akan tersamarkan dengan baik pada file gambar yang dikirimkan, sehingga pengirim dapat dengan nyaman mengirimkan pesan rahasia pada gambar. Dengan cara ini akan sulit sekali untuk membaca secara kasat mata pesan yang disisipkan pada media gambar bila pesan tidak terlebih dahulu di ekstrak dari media gambarnya, dan pesan akan tersimpan dengan aman. Metode yang digunakan untuk penyembunyian pesan rahasia pada aplikasi yang akan dibuat adalah dengan cara menyisipkan pesan ke dalam bit rendah (LSB - Least Significant Bit) pada data pixel yang menyusun file gambar. Metode penyisipan LSB (Least Significant Bit) ini adalah menyisipi pesan dengan cara mengganti bit ke 8, 16 dan 24 pada representasi biner file gambar dengan representasi biner pesan rahasia yang akan disembunyikan. Dengan demikian pada setiap pixel file gambar BMP 24 bit dapat disisipkan 3 bit pesan (Masaleno, 2006). Pada kondisi seperti ini, maka diperlukan aplikasi yang dapat menyisipkan pesan pada media gambar, sehingga pesan akan tersamarkan dengan baik, dan pesan dapat dikirimkan dengan aman. Berdasarkan uraian di atas, akan dilakukan penelitian dan penyusunan tugas akhir yang berjudul “Steganografi Gambar Dengan Metode Least Significant Bit Untuk Proteksi Komunikasi Pada Media Online.”
4
1.2 Rumusan Masalah Berdasarkan latar belakang di atas, terdapat masalah yang dapat diidentifikasi, yaitu “Bagaimana cara untuk menyisipkan dan mengekstrak pesan dari dalam media gambar sesuai dengan pesan yang disisipkan?”.
1.3 Tujuan Berdasarkan rumusan masalah di atas, dapat disimpulkan bahwa penelitian ini bertujuan untuk : “Membuat sebuah aplikasi steganografi untuk menginput dan mengekstrak informasi pada media gambar dengan mengaplikasikan metode Least Significant Bit”.
1.4 Batasan Masalah Permasalahan yang ditemukan selama penelitian ini dibatasi oleh hal-hal yang tercantum berkut ini: 1.
Aplikasi yang dibuat mencakup aplikasi steganografi sederhana yang berfungsi untuk menyisipkan dan mengekstak informasi dari media gambar.
2.
Informasi yang dimaksud disini dibatasi hanya pada informasi berupa text.
3.
Text yang disisipkan pada media gambar menggunakan metode Least Significant Bit.
4.
Media gambar adalah file image dengan ekstensi bitmap (BMP), dan JPG.
5
1.5 Metodologi Penelitian Penelitian ini menggunakan metodologi penelitian sebagai berikut: 1. Metode pengembangan perangkat lunak Dalam proses pengembangan perangkat lunak, metode yang digunakan adalah metode pengembangan prototype (Wikipedia, 2011). Metode ini merupakan metode yang cepat dan cocok digunakan untuk aplikasi dengan deadline yang singkat. Prototype diambil karena telah ada penelitian sebelumnya tentang steganografi gambar dengan metode LSB. Langkah-langkah metode prototype yakni: a. Langkah pertama Mendefinisikan kebutuhan dan garis besar aplikasi yang akan dirancang. b. Langkah kedua Membangun aplikasi yang bersifat sementara namun berdasarkan kebutuhan dan keinginan user. c. Langkah ketiga Mengizinkan
user menggunakan
aplikasi tersebut. User
akan
memerikan masukan berupa saran atau kritik. Hal ini dimaksudkan untuk mengetahui apakah prototype sudah sesuai keinginan user. d. Langkah keempat Mengimplementasikan masukan dari user.Lalu kembali ke langkah ketiga hingga aplikasi sesuai dengan kebutuhan dan keinginan user.
6
2. Metode pengumpulan data a. Study komparasi b. Study Literatur
1.6 Sistematika Penulisan BAB I
PENDAHULUAN Bab ini berisi tentang latar belakang, identifikasi masalah yang dihadapi, tujuan penelitian, batasan masalah yang dihadapi, metodologi penelitian, teknik pengumpulan data serta sistematika penulisan.
BAB II
LANDASAN TEORI Menjelaskan tentang teori-teori yang digunakan dalam tugas akhir ini serta untuk menjelaskan dan menyelesaikan permasalahan yang akan dikaji.
BAB III ANALISIS DAN PERANCANGAN Bab ini membahas tentang rancangan aplikasi yang akan dibangun. BAB IV IMPLEMENTASI DAN PENGUJIAN Membahas proses implementasi dan pengujian perangkat lunak secara detil. Proses Implementasi meliputi Persiapan software dan hardware, installasi aplikasi, dan tampilan akhir aplikasi.sedangkan pengujian meliputi identifikasi software, rencana pengujian, kasus uji dan hasil uji, evaluasi pengujian.
7
BAB V
PENUTUP Membahas
tentang kesimpulan dan saran yang diperoleh dari
penulisan tugas akhir ini.
BAB II DASAR TEORI Pada landasan teori ini akan diterangkan teori-teori yang berhubungan dengan penelitian ini. 2.1. Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak (RPL, atau dalam bahasa Inggris : Software Engineering atau SE) adalah satu bidang profesi yang mendalami cara-cara pengembangan perangkat lunak termasuk pembuatan, pemeliharaan, manajemen organisasi pengembanganan perangkat lunak dan manajemen kualitas.
Abram, dkk (2004) di IEEE (Institute of Electrical and Electronics Engineers) Computer Society mendefinisikan Rekayasa Perangkat Lunak sebagai berikut:
Penerapan suatu pendekatan yang sistematis, disiplin dan terkuantifikasi atas pengembangan, penggunaan dan pemeliharaan perangkat lunak, serta studi atas pendekatan-pendekatan ini, yaitu penerapan pendekatan engineering atas perangkat lunak.
Rekayasa Perangkat Lunak telah berkembang sejak pertama kali diciptakan pada tahun 1940-an hingga kini. Fokus utama pengembangannya adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan produktivitas para praktisi pengembang perangkat luank dan kualitas aplikasi yang dapat digunakan oleh pemakai. 8
9
Istilah software engineering digunakan pertama kali pada akhir 1950-an dan awal 1960-an. Saat itu, masih terdapat perdebatan tajam mengenai aspek engineering dari pengembangan perangkat lunak. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap pengembangan rekayasa perangkat lunak. Banyak yang menganggap dua konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak. Istilah Rekayasa Perangkat Lunak (RPL) secara umum disepakati sebagai terjemahan dari istilah Software engineering. Istilah Software Engineering mulai dipopulerkan pada tahun 1968 pada Software Engineering Conference yang diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak (software) dan program komputer. Pressman (2004) mengemukakan bahwa: Software is: (1) instructions (computer programs) that when executed provide desired features, function and performance; (2) data structures that enable the program to adequately manipulate information, and (3) descriptive information in both hard copy and virtual forms that describes the operation and the use of the programs.
Pengertian RPL sendiri adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Dari pengertian ini jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program
10
komputer. Pernyataan ”semua aspek produksi” pada pengertian di atas, mempunyai arti semnua hal yang berhubungan dengan proses produksi seperti manajemen proyek, penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan pengguna merupakan bagian dari RPL. 2.1.1. Tahapan RPL Meskipun
dalam
pendekatan
berbeda-beda,
namun
model-model
pendekatan memiliki kesamaan, yaitu menggunakan pola tahapan analysis, design, coding (construction), testing dan maintenance. 1. Analisis sistem Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi komponen-komponennya dengan tujuan mempelajari seberapa bagus komponen-komponen tersebut bekerja dan berinteraksi untuk meraih tujuan mereka. Analisis mungkin adalah bagian terpenting dari proses rekayasa perangkat lunak. Karena semua proses lanjutan akan sangat bergantung pada baik tidaknya hasil analisis. Ada satu bagian penting yang biasanya dilakukan dalam tahapan analisis yaitu pemodelan proses bisnis. Harris (2003) mengemukakan bahwa: Model proses adalah model yang memfokuskan pada seluruh proses di dalam sistem yang mentransformasikan data menjadi informasi.
Model proses juga menunjukkan aliran data yang masuk dan keluar pada suatu proses. Biasanya model ini digambarkan dalam bentuk Diagram
11
Arus Data (Data Flow Diagram / DFD). DFD meyajikan gambaran apa yang manusia, proses dan prosedur lakukan untuk mentransformasi data menjadi informasi. 2. Disain sistem Whitten, dkk (2004) mengemukakan bahwa: Desain perangkat lunak adalah tugas, tahapan atau aktivitas yang difokuskan pada spesifikasi detil dari solusi berbasis komputer. Disain perangkat lunak sering juga disebut sebagai physical design. Jika tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka sebaliknya disain perangkat lunak fokus pada sisi teknis dan implementasi sebuah perangkat lunak . Output utama dari tahapan disain disain.
perangkat lunak adalah spesifikasi
Spesifikasi ini meliputi spesifikasi disain umum yang akan
disampaikan kepada stakeholder sistem dan spesifikasi disain rinci yang akan digunakan pada tahap implementasi. Spesifikasi disain umum hanya berisi gambaran umum agar stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun. Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting dibagian ini. Spesifikasi disain rinci atau kadang disebut disain arsitektur rinci perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi yang baik, proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya. Desain arsitektur ini terdiri dari desain database, desain proses, desain user interface yang mencakup desain input, output form dan report,
12
desain hardware, software dan jaringan.
Desain proses merupakan
kelanjutan dari pemodelan proses yang dilakukan pada tahapan analisis. 3. Konstruksi adalah tahapan menerjemahkan hasil disain logis dan fisik ke dalam kode-kode program komputer. 4. Pengujian sistem melibatkan semua
kelompok pengguna yang telah
direncanakan pada tahap sebelumnya. Pengujian tingkat penerimaan terhadap perangkat lunak akan berakhir ketika dirasa semua kelompok pengguna menyatakan bisa menerima perangkat
lunak tersebut
berdasarkan kriteria-kriteria yang telah ditetapkan. 5. Perawatan dan Konfigurasi. Ketika sebuah perangkat lunak telah dianggap layak untuk dijalankan, maka tahapan baru menjadi muncul yaitu perawatan perangkat lunak.
Ada beberapa tipe perawatan yang biasa
dikenal dalam dunia perangkat lunak seperti terlihat pada diagram di Gambar di bawah ini :
13
Gambar 2.1 Tipe-tipe perawatan (Sumber: Rekayasa Perangkat Lunak Jilid 1, 2009, hal. 31)
a. Tipe perawatan corrective dilakukan jika terjadi kesalahan atau biasa dikenal sebagai bugs. Perawatan bisa dilakukan dengan memperbaiki kode program, menambah bagian
yang dirasa perlu atau malah
menghilangkan bagian-bagian tertentu. b. Tipe perawatan
routine biasa juga disebut preventive maintenance
dilakukan secara rutin untuk melihat kinerja perangkat lunak ada atau tidak ada kesalahan. c. Tipe perawatan
system upgrade dilakukan jika ada perubahan dari
komponen-komponen yang terlibat
dalam perangkat lunak tersebut.
Sebagai contoh perubahan platform sistem operasi dari versi lama ke versi baru menyebabkan perangkat lunak harus diupgrade.
14
2.2. Prototype
Howard (1997) mengemukakan bahwa:
prototyping adalah salah satu pendekatan dalam rekayasa perangkat lunak yang secara langsung mendemonstrasikan bagaimana sebuah perangkat lunak atau komponen-komponen perangkat lunak akan bekerja dalam lingkungannya sebelum tahapan konstruksi aktual dilakukan. Prototyping merupakan salah satu metode pengembangan perangat lunak yang banyak digunakan. Metode ini akan menghasilkan suatu prototype yaitu rancang bangun sistem yang akan dibuat atau biasa disebut dengan blueprint.
Dalam dunia bisnis yang nyata, Prototype perlu digunakan karena sering terjadinya seorang pelanggan yang hanya mendefinisikan secara umum apa yang dikehendakinya tanpa menyebutkan secara detail output apa saja yang dibutuhkan, pemrosesan dan data-data apa saja yang dibutuhkan. Sebaliknya di sisi pengembang kurang memperhatikan efesiensi algoritma, kemampuan sistem operasi dan interface yang menghubungkan manusia dan komputer.
Untuk dapat mengatasi masalah tersebut di atas, maka harus dibutuhkan suatu prototype sebagai dasar acuan kerja. Dengan demikian pengembang akan mengetahui dengan benar apa yang dikehendaki oleh pelanggan dengan tidak mengesampingkan segi-segi teknis. Pelanggan juga dapat mengetahui prosesproses dalam menyelesaikan sistem yang diinginkan.
Kunci agar model prototype ini berhasil dengan baik adalah dengan mendefinisikan aturan-aturan main pada saat awal, yaitu pelanggan dan
15
pengembang harus setuju bahwa prototype dibangun untuk mendefinisikan kebutuhan. Prototype akan dihilangkan sebagian atau seluruhnya dan perangkat lunak aktual aktual direkayasa dengan kualitas dan implementasi yang sudah ditentukan.
2.2.1. Jenis-jenis Prototype
1. Reusable prototype : Prototype yang akan ditransformasikan menjadi produk final. 2. Throwaway prototype : Prototype yang akan dibuang begitu selesai menjalankan maksudnya. 3. Input/output prototype : Prototype yang terbatas pada antar muka pengguna (user interface). 4. Processing prototype : Prototype yang meliputi perawatan file dasar dan proses-proses transaksi. 5. System prototype : Prototype yang berupa model lengkap dari perangkat lunak.
16
2.2.2. Tahapan Prototype
Gambar 2.2 Tahapan prototype (Sumber: http://www.explow.com)
Tahapan-tahapan dalam Prototyping adalah sebagai berikut :
1. Planning Pelanggan dan pengembang bersama-sama mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat. 2. Analysis Pada tahap ini pengembang memilah antara kebutuhan dan keinginan pelanggan, dan mulai mendefinisikan kebutuhan sitem. 3. Design Membangun prototype dengan membuat perancangan sementara yang berfokus pada penyajian kepada pelanggan (misalnya dengan membuat input dan format output). Pada tahap ini juga pengembang memulai tahap coding.
17
4. Implementation (evaluasi prototyping) Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginann pelanggan. Jika sudah sesuai maka langkah 5 akan diambil. Jika tidak prototyping direvisi dengan mengulangi langkah 2, 3 , dan 4. 5. Menguji sistem Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. Pengujian ini dilakukan dengan White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain. 6. Implementation (evaluasi sistem) Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan. Jika ya, langkah 7 dilakukan; jika tidak, ulangi langkah 4 dan 5. 7. Menggunakan sistem Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan.
2.2.3. Penggunaan Prototype
Prototyping bekerja dengan baik pada penerapan-penerapan yang berciri sebagai berikut :
1. Sitem yang inovatif, yaitu sistem tersebut membutuhkan cara penyelesaian masalah dan penggunaan perangkat keras yang mutakhir
18
2. Interaksi pemakai penting, yaitu sistem harus menyediakan dialog on-line antara pelanggan dan komputer. 3. Resiko tinggi, yaitu untuk maslaha-masalah yang tidak terstruktur dengan baik, ada perubahan yang besar dari waktu ke waktu, dan adanya persyaratan data yang tidak menentu. 4. Perlunya penyelesaian yang cepat. 5. Perkiraan tahap penggunaan sistem yang pendek 6. Perilaku pemakai yang sulit ditebak.
2.2.4. Keunggulan dan Kelemahan Prototyping
Pendekatan ini memiliki beberapa keuntungan :
1. Pemodelan membutuhkan partisipasi aktif dari end-user. Hal ini akan meningkatkan sikap dan dukungan pengguna untuk pengerjaan proyek. Sikap moral pengguna akan meningkat karena system berhubungan nyata dengan mereka. 2. Perubahan dan iterasi merupakan konsekuensi alami dari pengembangan system-sehingga end user memiliki keinginan untuk merubah pola pikirnya. Prototyping lebih baik menempatkan situasi alamiah ini karena mengasumsikan perubahan model melalui iterasi kedalam system yang dibutuhkan. 3. Prototyping mematahkan folosofi “end user tidak mengetahui secara detail apa yang dibutuhkan sampai mereka melihat implementasinya”
19
4. Prototyping adalah model aktif, tidak pasif, sehingga end user dapat melihat, merasakan, dan mengalaminya. 5. Kesalahan yang terjadi dalam prototyping dapat dideteksi lebih dini 6. Prototyping dapat meningkatkan kreatifitas karena membolehkan adanya feedback dari end user. Hal ini akan memberikan solusi yang lebih baik. 7. Prototyping mempercepat beberapa fase hidup dari programmer.
McLeod dan Schell (2001) mengemukakan bahwa alasan-alasan pemakai maupun spesialis informasi menyukai model prototype adalah:
1. Komunikasi antara analis sistem dan pemakai membaik. 2. Analis dapat bekerja dengan lebih baik dalam menemukan kebutuhan pemakai. 3. Pemakai berperan lebih aktif dalam pengembangan sistem. 4. Spesialis informasi dan pemakai menghabiskan lebih sedikit waktu dan usaha dalam mengembangkan sistem. 5. Implementasi menjadi lebih mudah karena pemakai mengetahui sistem yang diharapkan. Tetapi, terdapat beberapa kelemahan dari prototyping, kelemahan tersebut antara lain :
1. Prototyping memungkinkan terjadinya pengembalian terhadap kode, implementasi, dan perbaikan siklus hidup yang dugunakan untuk mendominasi sistem informasi. 2. Prototyping tidak menolak kebutuhan dari fase analisis sistem. Prototype hanya dapat memecahkan masalah yang salah dan memberi kesempatan sebagai sistem pengembangan konvensional.
20
3. Perancangan isu numerik tidak dialamatkan oleh prototyping. Isu tersebut dapat dilupakan jika pengguna tidak berhati-hati. 4. Prototyping dapat mengurangi kreatifitas perancangan.
2.3. Analysis 2.3.1 Data Flow Diagram (DFD) Data Flow Diagram memodelkan kejadian dan proses (aktifitas yang mengubah data) dalam sebuah system. Dari DFD dapat terlihat bagaimana data mengalir kedalam, keluar dan didalam system tersebut. Prinsip dasar DFD : 1. Sistem dapat dipecah menjadi beberapa subsistem, dan subsistem dapat dipecah menjadi subsistem yang levelnya lebih rendah lagi, dan seterusnya. 2. Setiap subsistem mewakili / menggambarkan sebuah proses atau aktifitas dimana data diproses. 3. Pada level terendah subsistem, proses sudah tidak dapat dipecah lagi. 4. Setiap proses (subsistem/aktifitas) dalam DFD memiliki karakteristik dasar dari sistem yang dibentuknya. 5. Sebagaimana sebuah sistem harus memiliki input dan output, setiap proses juga harus memiliki input dan output. 6. Data masuk ke dalam sistem dari lingkungan sekitar sistem, data mengalir diantara proses di dalam sistem, dan data dihasilkan sebagai output keluar dari sistem.
21
Secara singkat, DFD memperlihatkan : 1. Proses di dalam sistem 2. Penyimpanan data (file) yang membantu operasi sistem tersebut 3. Informasi yang mengalir dalam sistem 4. Batasan sistem 5. Interaksi dengan pihak eksternal (External Entity)
Peraturan dasar DFD : 1. Entitas adalah sumber data input atau penampung data output (Originator or terminator) 2. Data mengalir dari entitas harus mengalir pada proses 3. Data mengalir pada entitas harus mengalir dari proses 4. Proses dan penyimpanan data harus memiliki baik input maupun output (Apa yang masuk harus bisa keluar) 5. Input pada penyimpanan data hanya berasal dari proses 6. Output dari penyimpanan data hanya menuju proses
Notasi DFD : a. Proses, mengubah atau memanipulasi data. Setiap kotak memiliki nomer unik sebagai pengidentifikasi dan nama yang unik pula. b. Data flow, menggambarkan data/informasi yang mengalir menuju atau dari sebuah proses. Setiap data flow harus memiliki nama. Penggunaan notasi panah bolak-balik harus diperhatikan secara seksama.
22
c. Entitas Eksternal, merupakan entitas yang menberikan kontribusi data atau inforamsi pada sistem atau yang menerima data/informasi dari sistem tersebut. d. Data Storage (Penyimpanan data), merupakan tempat dimana data disimpan secara sementara atau permanen. 2.3.2 DFD Leveling DFD terdiri atas satu set grafik, yaitu: 1. DFD Level 0, yang disebut juga dengan model sistem fundamentasi atau model konteks (Diagram Konteks), merepresentasikan seluruh elemen sistem sebagai sebuah bubble tunggal dengan data input dan output yang ditunjukan oleh anak panah. 2. Decomposition Diagram, alat untuk menggambarkan dekomposisis (pemecahan) dari system. Memiliki bentuk seperti hierarki organisasi. 3. DFD Level 1, DFD Level 2, …, DFD level 1 menunjukan rincian dari proses 0 pada Context Diagram (DFD level 0), DFD Level 2 menunjukan salah satu proses pada DFD level 1, dst. Pada DFD level 1 dan seterusnya, mulai muncul notasi penyimpanan data (data storage). Hal ini disebabkan data storage yang perlu didokumentasikan adalah data storage
yang
relevan bagi
sistem
terkait.
Strategi
kunci
dari
penyusunan DFD level 1 dan seterusnya ini adalah jumlah external entity dan data flow yang terkait dengan external entity tersebut harus memiliki jumlah dan nama yang sama. Batasan Level DFD yang
23
dapat dibuat untuk sebuah system adalah ketika suatu proses sudah tidak dapat di pecah lagi. 2.4. Kriptografi Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Schneier (1996) mengemukakan bahwa: Cryptography is the art and science of keeping messages secure. Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang mendasari kriptografi yakni : a. Confidentiality (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami. b. Data
integrity
(keutuhan
data)
yaitu
layanan
yang
mampu
mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain). c. Authentication (keotentikan) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi.
24
d. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya). Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya. Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi : a. Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli). b. Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi. c. Enkripsi (fungsi E) adalah proses pengubahan plaintext menjadi ciphertext. d. Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli. e. Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi. Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan di atas, proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti.
25
Gambar 2.3 Diagram proses enkripsi dan dekripsi (Sumber: Dasar Kriptografi, 2006, Hal. 2)
Peranan kunci sangatlah penting dalam proses enkripsi dan dekripsi (di samping pula algoritma yang digunakan) sehingga kerahasiaannya sangatlah penting, apabila kerahasiaannya terbongkar, maka isi dari pesan dapat diketahui. Secara matematis, proses enkripsi merupakan pengoperasian fungsi E (enkripsi) menggunakan e (kunci enkripsi) pada M (plaintext) sehingga dihasilkan C (ciphertext), notasinya : Ee(M) = C Rumus 2.1
Sedangkan untuk proses dekripsi, merupakan pengoperasian fungsi D (dekripsi) menggunakan d (kunci dekripsi) pada C (ciphertext) sehingga dihasilkan M (plaintext), notasinya : Dd(C) = M Rumus 2.2
Sehingga dari dua hubungan di atas berlaku : Dd(Ee(M)) = M Rumus 2.3
26
2.5. Steganografi
Steganografi adalah seni dan ilmu menulis pesan tersembunyi atau menyembunyikan pesan dengan suatu cara sehingga selain si pengirim dan si penerima, tidak ada seorangpun yang mengetahui atau menyadari bahwa ada suatu pesan rahasia. Sebaliknya, kriptografi menyamarkan arti dari suatu pesan, tapi tidak menyembunyikan bahwa ada suatu pesan. Kata "steganografi" berasal dari bahasa Yunani steganos, yang artinya “tersembunyi atau terselubung”, dan graphein, “menulis”.
Sellars (1996) mengatakan:
Steganography, from the Greek, means covered, or secret writing.
Kini, istilah steganografi termasuk penyembunyian data digital dalam berkas-berkas (file) komputer. Contohnya, si pengirim mulai dengan berkas gambar biasa, lalu mengatur warna setiap pixel ke-100 untuk menyesuaikan suatu huruf dalam alphabet (perubahannya begitu halus sehingga tidak ada seorangpun yang menyadarinya jika ia tidak benar-benar memperhatikannya).
Pada umumnya, pesan steganografi muncul dengan rupa lain seperti gambar, artikel, daftar belanjaan, atau pesan-pesan lainnya. Pesan yang tertulis ini merupakan tulisan yang menyelubungi atau menutupi. Contohnya, suatu pesan bisa disembunyikan dengan menggunakan tinta yang tidak terlihat di antara garisgaris yang kelihatan.
27
Teknik steganografi meliputi banyak sekali metode komunikasi untuk menyembunyikan pesan rahasia (teks atau gambar) di dalam berkas-berkas lain yang mengandung teks, image, bahkan audio tanpa menunjukkan ciri-ciri perubahan yang nyata atau terlihat dalam kualitas dan struktur dari berkas semula. Metode ini termasuk tinta yang tidak tampak, microdots, pengaturan kata, tanda tangan digital, jalur tersembunyi dan komunikasi spektrum lebar.
Tujuan dari steganografi adalah merahasiakan atau menyembunyikan keberadaan dari sebuah pesan tersembunyi atau sebuah informasi. Dalam prakteknya, kebanyakan pesan disembunyikan dengan membuat perubahan tipis terhadap data digital lain yang isinya tidak akan menarik perhatian dari penyerang potensial, sebagai contoh sebuah gambar yang terlihat tidak berbahaya. Perubahan ini bergantung pada kunci (sama pada kriptografi) dan pesan untuk disembunyikan. Orang yang menerima gambar kemudian dapat menyimpulkan informasi terselubung dengan cara mengganti kunci yang benar ke dalam algoritma yang digunakan.
Pada metode steganografi cara ini sangat berguna jika digunakan pada cara steganografi komputer karena banyak format berkas digital yang dapat dijadikan media untuk menyembunyikan pesan. Format yang biasa digunakan di antaranya :
a. Format image : bitmap (bmp), gif, pcx, jpeg, dll. b. Format audio : wav, voc, mp3, dll. c. Format lain : teks file, html, pdf, dll.
28
Kelebihan steganografi jika dibandingkan dengan kriptografi adalah pesan-pesannya tidak menarik perhatian orang lain. Pesan-pesan berkode dalam kriptografi yang tidak disembunyikan, walaupun tidak dapat dipecahkan, akan menimbulkan kecurigaan. Seringkali, steganografi dan kriptografi digunakan secara bersamaan untuk menjamin keamanan pesan rahasianya.
Sebuah
pesan
steganografi
(plaintext),
biasanya
pertama-tama
dienkripsikan dengan beberapa arti tradisional, yang menghasilkan ciphertext. Kemudian, covertext dimodifikasi dalam beberapa cara sehingga berisi ciphertext, yang menghasilkan stegotext. Contohnya, ukuran huruf, ukuran spasi, jenis huruf, atau karakteristik covertext lainnya dapat dimanipulasi untuk membawa pesan tersembunyi; hanya penerima (yang harus mengetahui teknik yang digunakan) dapat membuka pesan dan mendekripsikannya.
2.5.1. Metode Steganografi
Kebanyakan algoritma steganografi menggunakan sebuah kombinasi dari bidang jenis teknik untuk melakukan sebuah tugas dalam penyelubungan pesan rahasia dalam sebuah selubung berkas. Sebuah program steganografi dibutuhkan untuk melakukan hal-hal berikut (baik implisit melalui suatu perkiraan maupun eksplisit melalui sebuah perhitungan), menemukan kelebihan bits dalam selubung file yang dapat digunakan untuk menyelubungi pesan rahasia didalamnya, memilih beberapa diantaranya untuk digunakan dalam menyelubungi data dan penyelubungan data dalam bits dipilih sebelumnya.
29
Ada empat jenis metode Steganografi, yaitu :
1. Least Significant Bit Insertion (LSB) Metoda yang digunakan untuk menyembunyikan pesan pada media digital tersebut berbeda-beda. Contohnya, pada berkas image pesan dapat disembunyikan dengan menggunakan cara menyisipkannya pada bit rendah atau bit yang paling kanan (LSB) pada data pixel yang menyusun file tersebut. Pada berkas bitmap 24 bit, setiap pixel (titik) pada gambar tersebut terdiri dari susunan tiga warna merah, hijau dan biru (RGB) yang masing-masing disusun oleh bilangan 8 bit (byte) dari 0 sampai 255 atau dengan format biner 00000000 sampai 11111111. Dengan demikian, pada setiap pixel berkas bitmap 24 bit kita dapat menyisipkan 3 bit data. Kekurangan dari LSB Invertion : Dapat diambil kesimpulan dari contoh 8 bit pixel, menggunakan LSB Insertion dapat secara drastis mengubah unsur pokok warna dari pixel. Ini dapat menunjukkan perbedaan yang nyata dari cover image menjadi stego image, sehingga tanda tersebut menunjukkan keadaan dari steganografi. Variasi warna kurang jelas dengan 24 bit image, bagaimanapun file tersebut sangatlah besar. Antara 8 bit dan 24 bit image mudah diserang dalam pemrosesan image, seperti cropping (kegagalan) dan compression (pemampatan). Keuntungan dari LSB Insertion : Keuntungan yang paling besar dari algoritma LSB ini adalah cepat dan mudah. Dan juga algoritma tersebut memiliki software steganografi yang mendukung dengan bekerja di antara unsur pokok warna LSB melalui manipulasi pallete (lukisan).
30
2. Algorithms and Transformation Algoritma
compression
adalah
metode
steganografi
dengan
menyembunyikan data dalam fungsi matematika. Dua fungsi tersebut adalah
Discrete
Cosine
Transformation
(DCT)
dan
Wavelet
Transformation. Fungsi DCT dan Wavelet yaitu mentransformasi data dari satu tempat (domain) ke tempat (domain) yang lain. Fungsi DCT yaitu mentransformasi data dari tempat spatial (spatial domain) ke tempat frekuensi (frequency domain). 3. Redundant Pattern Encoding Redundant Pattern Encoding adalah menggambar pesan kecil pada kebanyakan gambar. Keuntungan dari metode ini adalah dapat bertahan dari cropping (kegagalan). Kerugiannya yaitu tidak dapat menggambar pesan yang lebih besar. 4. Spread Spectrum method Spread Spectrum steganografi terpencar-pencar sebagai pesan yang diacak (encrypted) melalui gambar (tidak seperti dalam LSB). Untuk membaca suatu pesan, penerima memerlukan algoritma yaitu crypto-key dan stegokey. Metode ini juga masih mudah diserang yaitu penghancuran atau pengrusakan dari kompresi dan proses image (gambar).
2.5.2. Steganalisis dan Stegosystem
Seperti Kriptografi dan Kriptanalisis, Steganalisis didefinisikan sebagai suatu seni dan ilmu dalam mendeteksi informasi tersembunyi. Sebagai tujuan dari
31
steganografi adalah untuk merahasiakan keberadaan dari sebuah pesan rahasia, satu keberhasilan penyerangan pada sebuah sistem steganografi terdiri dari pendeteksian bahwa sebuah berkas yang diyakini berisikan data terselubung. Seperti dalam Kriptanalisis, diasumsikan bahwa sistem steganografi telah diketahui oleh si penyerang. Maka dari itu, keamanan dari sistem steganografi bergantung hanya pada fakta bahwa kunci rahasia tidak diketahui oleh si penyerang.
Stegosystem di sini berisi tentang penyerangan-penyerangan yang dilakukan terhadap suatu sistem steganografi, sebuah perbedaan penting harus dibuat di antara penyerangan-penyerangan pasif di mana penyerang hanya dapat memotong data, dan penyerangan-penyerangan aktif di mana penyerang juga dapat memanipulasi data. Gambar di bawah ini menunjukkan sebuah diagram untuk menjelaskan sistem stego. Lingkaran-lingkaran menunjukkan tempattempat penyerang yang berpotensi memiliki jalan masuk ke satu atau lebih dari tempat-tempat tersebut akibat penyerangan-penyerangan yang berbeda jenis, dan juga berfungsi untuk melakukan sebuah penyerangan aktif. Jika lingkaran tidak terisi, penyerang hanya dapat melakukan penyerangan pasif yaitu menghalangi memotong data.
Penyerangan-penyerangan berikut memungkinkan dalam model dari stegosistem ini :
a. Stego-Only-Attack
(Penyerangan
hanya
Stego).
menghalangi stego data dan dapat menganalisisnya.
Penyerang
telah
32
b. Stego-Attack (Penyerangan Stego). Pengirim telah menggunakan cover yang sama berulangkali untuk data terselubung. Penyerang memiliki berkas stego yang berasal dari cover file yang sama. Dalam setiap berkas stego tersebut, sebuah pesan berbeda disembunyikan. c. Cover-Stego-Attack (Penyerangan selubung Stego). Penyerang telah menghalangi berkas stego dan mengetahui cover file mana yang digunakan untuk menghasilkan berkas stego ini. Ini menyediakan sebuah keuntungan melalui penyerangan stego-only untuk si penyerang. d. Manipulating the stego data (Memanipulasi data stego). Penyerang memiliki kemampuan untuk memanipulasi data stego. Jika penyerang hanya ingin menentukan sebuah pesan disembunyikan dalam berkas stego ini, biasanya ini tidak memberikan sebuah keuntungan, tapi memiliki kemampuan dalam memanipulasi data stego yang berarti bahwa si penyerang mampu memindahkan pesan rahasia dalam data stego (jika ada). e. Manipulating the cover data (Memanipulasi data terselubung). Penyerang dapat memanipulasi data terselubung dan menghalangi hasil data stego. Ini dapat membuat tugas dalam menentukan apakah data stego berisikan sebuah pesan rahasia lebih mudah bagi si penyerang.
33
2.6. Metode Least Significant Bit
Least significant bit adalah bagian dari barisan data biner (basis dua) yang mempunyai nilai paling tidak berarti/paling kecil. Letaknya adalah paling kanan dari barisan bit. Sedangkan most significant bit adalah sebaliknya, yaitu angka yang paling berarti/paling besar dan letaknya disebelah paling kiri.
Contohnya adalah bilangan biner dari 255 adalah 11111111 (kadangkadang diberi huruf b pada akhir bilangan menjadi 1111 1111b). Bilangan tersebut dapat berarti : N = Σra * 2(a-1)
1111 1111 = (1*27) + (1*26) + (1*25) + (1*24) + (1*23) + (1*22) + (1*21) + (1*20) 1111 1111 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
Dimana : N = Bilangan Biner r = Digit bilangan biner ke-a a = ordo biner (1 ke n)
1111 1111 = 255
Formula 2.1 Formula bilangan biner
Dari barisan angka 1 di atas, angka 1 paling kanan bernilai 1, dan itu adalah yang paling kecil. Bagian tersebut disebut dengan least significant bit (bit yang paling tidak berarti), sedangkan bagian paling kiri bernilai 128 dan disebut dengan most significant bit (bit yang paling berarti).
Least significant bit sering kali digunakan untuk kepentingan penyisipan data ke dalam suatu media digital lain, salah satu yang memanfaatkan Least
34
significant bit sebagai metode penyembunyian adalah steganografi audio dan gambar.
Metode yang digunakan untuk penyembunyian pesan rahasia pada aplikasi ini adalah dengan cara menyisipkan pesan ke dalam bit rendah (least significant bit) pada data pixel yang menyusun file gambar BMP 24 bit tersebut.
Pada file gambar BMP 24 bit setiap pixel pada gambar terdiri dari susunan tiga warna yaitu merah, hijau, biru (RGB) yang masing-masing disusun oleh bilangan 8 bit (1 byte) dari 0 sampai 255 atau dengan format biner 00000000 sampai 11111111. Sebagai contoh file gambar BMP 24 bit dengan warna merah murni dalam format biner akan terlihat sebagai berikut :
Gambar 2.4 Deret biner pada pixel berwarna merah murni
Sedangkan untuk warna hijau murni dalam format biner akan terlihat sebagai berikut :
Gambar 2.5 Deret biner pada pixel berwarna hijau murni
35
Sedangkan untuk warna biru murni dalam format biner akan terlihat sebagai berikut :
Gambar 2.6 Deret biner pada pixel berwarna biru murni
Dari uraian di atas dapat dilihat bahwa informasi dari warna biru berada pada bit pertama sampai bit delapan, dan informasi warna hijau berada pada bit sembilan sampai dengan bit 16, sedangkan informasi warna merah berada pada bit 17 sampai dengan bit 24. Metode penyisipan LSB (least significant bit) ini adalah menyisipi pesan dengan cara mengganti bit ke 8, 16 dan 24 pada representasi biner file gambar dengan representasi biner pesan rahasia yang akan disembunyikan. Dengan demikian pada setiap pixel file gambar BMP 24 bit dapat disisipkan 3 bit pesan, misalnya terdapat data raster original file gambar adalah sebagai berikut : 00100111 11101001 11001000 00100111 11001000 11101001 11001000 00100111 11101001 Sedangkan representasi biner huruf A adalah 01000001, dengan menyisipkannya ke dalam pixel di atas maka akan dihasilkan 00100110 11101001 11001000 00100110 11001000 11101000 11001000 00100111 11101001
36
Terlihat pada bit kedelapan, enambelas dan 24 diganti dengan representasi biner huruf A, dan hanya tiga bit rendah yang berubah (cetak tebal), untuk penglihatan mata manusia sangatlah mustahil untuk dapat membedakan warna pada file gambar yang sudah diisi pesan rahasia jika dibandingkan dengan file gambar asli sebelum disisipi dengan pesan rahasia. 2.7. Media Online Definisi media online menurut BusinessDictionary adalah: Digital media, which includes photos, video and music, distributed over the Internet, which are either non-copyrighted or copyrighted materials provided either freely or for a fee. Dari definisi di atas, media online merupakan media digital yang didistribusikan melalui internet. Dimana media digital ini adalah bentuk dari media elektronik yang tersimpan dalam bentuk digital. Media digital ini dapat merujuk pada aspek penyimpanannya dan media transmisi (contohnya hard disk drive atau jaringan komputer) dari informasi atau menuju “end product”, seperti video digital, augmented reality, sinyal digital atau seni digital. Media online atau dapat disebut internet media dapat mengambil berbagai macam bentuk, tetapi secara garis besar dapat digolongkan menjadi tiga kelompok:
a) E-zines or electronic magazines, like Slate and Salon. Often, an E-zine operates as both a Web site from which content is "pulled" by visitors and as a subscription service through which content is "pushed" to subscribers by regular e-mail, usually on a daily or weekly basis. b) E-mail newsletters or electronic newsletters. Yahoo! Delivers and newslinx. E-mail newsletters use only the "push" approach. They can be stand-alone publications or used to promote content on a linked Web site.
37
c) News sites of traditional "brick-and-mortar" publications or broadcasters, such as MSNBC.com, CNN.com, NYTimes.com, WashingtonPost.com and online versions of local newspapers and magazines. Most major media outlets now have a Web presence. Articles that are printed or broadcast off-line sometimes differ from the online versions because different staffs and resources are involved in each, although there have been some staff consolidations in recent months. Selain dari tiga kategori di atas, terdapat kategori yang berkembang dengan pesat beberapa tahun ini, yang dikenal dengan nama Social Media. Andeas (2010) mengatakan bahwa:
Social media adalah istilah yang digunakan untuk memayungi berbagai aktivitas dan interaksi sosial yang memanfaatkan teknologi internet, khususnya web 2.0. Social media ini turut serta dalam menyumbang transaksi media online. Dimana setiap harinya, jutaan user dari social media bertukar informasi berupa teks, gambar, suara dan video. Interaksi antar user
inilah yang mendorong
semakin berkembangnya media online.
Social media sendiri dapat digolongkan menjadi beberapa kategori :
1) Communication a. Blog b. Microblog c. Social Networking d. Forum 2) Collaboration a. Wiki b. Social Bookmark c. Social News d. Writing 3) Multimedia a. Image and Photo Sharing b. Video Sharing c. Audio and Music Sharing d. Design and Contest
38
4) Lain-lain a. Reviews b. Question and Answer c. Map and Directory d. Games Tujuan dari dibuatnya media online ini adalah kemudahan untuk pendistribusiannya, dimana dengan media online ini diharapkan kecepatan dan keamanan pengiriman media dapat tercapai.
BAB III ANALISIS DAN PERANCANGAN 3. Analisis Sistem 3.1.
Analisis Sistem Analisis sistem ini merupakan penguraian dari suatu sistem pengembangan
aplikasi steganografi, dengan maksud untuk mengidentifikasi dan mengevaluasi permasalahan-permasalahan, kesempatan-kesempatan, hambatan-hambatan dan kebutuhan-kebutuhan yang diharapkan. Tahap analisis ini merupakan tahap uuntuk menganalisis data dengan mengklasifikasi data yang telah di dapat dari tahap sebelumnya. 3.1.1
Analisis Permasalahan
Dalam sistem yang akan dibuat, masalah yang akan dikaji adalah sebagai berikut : “Cara untuk menyisipkan dan mengekstrak pesan dari dalam media gambar sesuai dengan pesan yang disisipkan”. 3.1.2
Sistem Yang Akan Dibuat
Dalam sistem yang akan dibangun, aplikasi steganografi yang dibuat akan mampu untuk menyisipkan pesan berupa teks dan mengekstraknya kembali sesuai dengan pesan teks yang disisipkan kedalam file gambar. 3.2.
Analisis Kebutuhan Merupakan tahap persiapan, dimana pada tahap ini dilakukan studi
literatur dan perbandingan dengan tujuan untuk mengidentifikasi hal-hal yang berkaitan dengan sistem yang akan dikembangkan.
39
40
3.2.1
Spesifikasi Rancangan IPOSC
Rancangan IPOSC (Input Process Output Storage Control) merupakan suatu rancangan yang dikemukakan oleh Sandra Donaldson Dewitz dengan tahapan-tahapan sebagai berikut : 3.2.2 Perancangan Input Masukan merupakan awal dimulainya suatu proses informasi. Bahan mentah dari informasi adalah pesan yang akan dikirimkan user kepada user lain. Dalam aplikasi ini yang didefinisikan sebagai input dibagi menjadi dua kategori : 1.
Input pada Proses Embedding Pesan : a. File Gambar b. File Teks yang berisi informasi
2.
Input pada Proses Extracting Pesan adalah File Stegotext
3.2.3 Perancangan Process Rancangan
ini
menyangkut
proses-proses
yang
pengembangan aplikasi steganografi, yaitu : 1.
Embedding Pesan Di dalamnya terdapat dua buah proses turunan, yaitu : a. Cek Data b. Embedding Teks
terlibat
dalam
41
2.
Ekstraksi Pesan Di dalamnya terdapat dua buah proses turunan, yaitu : a. Cek Stegotext b. Extract Teks
Berikut merupakan flow chart dari rancangan proses Embedding Pesan :
Gambar 3.1 Flow chart proses Embedding Pesan
42
Pada flow chart proses Embedding Pesan, proses dimulai dengan user membuka
covertext,
yaitu
file
gambar
yang
akan
digunakan
untuk
menyembunyikan pesan. Bila file gambar yang digunakan berupa file bitmap (*.bmp) maka akan dilakukan proses cek fleck, yaitu proses untuk mengetahui apakan pada file tersebut sudah terdapat pesan rahasia sebelumnya, bila terdapat fleck maka file gambar akan ditolak, dan proses dimulai dari awal kembali. Berbeda dengan file bitmap, bila user membuka file JPG (*.jpg, *.jpeg) maka file akan terlebih dahulu di convert ke file bitmap. Setelah user membuka file gambar, user dapat mengisi pesan, dan memutuskan apakah proses sisip pesan akan dijalankan atau tidak. Bila proses sisip pesan dijalankan maka akan ada dialog simpan gambar, bila disimpan gambar akan tersimpan sebagai stegotext, tetapi bila batalkan, maka seluruh proses harus dimulai dari awal kembali.
43
Berikut merupakan flow chart dari rancangan proses Ekstraksi Pesan :
Gambar 3.2 Flow chart proses Ekstraksi Pesan
Pada flow chart proses Ekstraksi Pesan, proses dimulai dengan user membuka file gambar yang berisi pesan (stegotext). Proses selanjutnya setelah stegotext dibuka adalah cek fleck, bila tidak terdapat fleck maka file gambar akan ditolak. Proses selanjutnya adalah mengkstrak pesan. Setelah pesan di ekstrak maka proses berakhir, dan proses dapat diulang kembali untuk membuka pesan pada stegotext lain.
44
3.2.4 Perancangan Output Keluaran atau Output dari sebuah sistem merupakan hal yang penting bagi user dalam menentukan digunakan tidaknya sistem tersebut. Dalam menentukan format keluaran diperlukan kecermatan, ketelitian, dan kesabaran dengan harapan keluaran yang dihasilkan merupaka informasi-informasi yang akurat, releval dan mudah dimengerti oleh para pengguna. Output yang akan dihasilkan dari aplikasi steganografi dibagi menjadi dua kategori : 1.
Output pada Proses Embedding Pesan adalah Stegotext.
2.
Output pada Proses Extracting Pesan
adalah File Teks dan File
Gambar. 3.2.5 Sasaran Sistem Yang Dibutuhkan Sasaran dari sistem ini adalah pembuktian metode Least Significant Bit (LSB) dengan mengaplikasikannya kedalam aplikasi steganografi gambar. Sistem yang akan dikembangkan merupakan sebuah aplikasi steganografi gambar yang berfungsi untuk menyembunyikan informasi berupa teks (tulisan) ke dalam sebuah file gambar BMP atau JPG dan kemudian mengekstraknya kembali. Adapun sasaran yang dibutuhkan adalah sebagai berikut : 1. Dapat memberikan kemudahan kepada user untuk menggunakan aplikasi steganografi gambar.
45
2. Dapat meningkatkan keamanan data dengan cara menyisipkan informasi pada media gambar melalui aplikasi steganografi gambar. 3.2.6 Ruang Lingkup Sistem Ruang lingkup dari sistem yang akan dibuat ini mencakup : 1.
User dapat menggunakan aplikasi ini untuk menyisipkan informasi berupa teks ke dalam file gambar.
2.
User dapat menggunakan aplikasi ini untuk mengekstrak informasi yang terkandung di dalam file gambar.
3.2.7 Evaluasi Kelayakan Tujuan dari evaluasi kelayakan yaitu melakukan pengkajian untuk menilai apakah sistem yang dikembangkan akan layak untuk digunakan atau tidak. Evaluasi kelayakan yang akan dilakukan meliputi teknik dan kelayakan operasi sebagai berikut : 1.
Kelayakan teknik, yaitu sistem yang akan dibangun harus memiliki kemudahan untuk dioperasikan.
2.
Kelayakan operasi yaitu sistem yang akan dibangun harus memiliki kemampuan untuk menghasilkan performa yang baik dan lebih efisien serta tersedianya personil yang mampu untuk mengopersikan sistem tersebut.
46
3.2.8 Ruang Lingkup Dokumen Entitas-entitas yang berhubungan dengan aplikasi ini meliputi data input dan output : 1.
Data input (masukan) mencakup informasi yang ada di dalam file teks yang akan disisipkan kedalam file gambar.
2.
Data output (keluaran) mencakup informasi berupa file teks yang diekstrak dari dalam file gambar.
3.3.
Analisis Data Analisis suatu data merupakan uraian mengenai data-data yang masuk
ataupun keluar. Adapun analisis data dapat diuraikan dari analisis kebutuhan, yaitu analisis kebutuhan input dan analisis kebutuhan output. 3.3.1 Analisis Kebutuhan Input Analisis kebutuhan ini dilakukan untuk menentukan input apa saja yang dibutuhkan oleh sistem yang akan dibangun. Adapun input yang dibutuhkan oleh sistem adalah sebagai berikut : 1.
Informasi dalam bentuk file teks
2.
File gambar untuk media disisipkannya file teks.
47
3.3.2 Analisis Kebutuhan Output Adapun output yang dibutuhkan adalah Informasi yang diekstrak dari file gambar berupa file teks. 3.4.
Analisis Kebutuhan Fungsional Tujuan dibuatnya aplikasi ini adalah untuk memenuhi permasalahan yang
dirumuskan sebelumnya dalam rumusan masalah. Adapun analisis kebutuhan fungsional dari Aplikasi Steganografi ini adalah:
3.5.
1.
Aplikasi mampu menyisipkan pesan ke dalam gambar.
2.
Aplikasi mampu mengekstrak pesan dari dalam gambar.
Analisis Kebutuhan Non Fungsional Analisis merupakan penguraian dari suatu masalah atau objek yang
akhirnya menghasilkan suatu kesimpulan. Hal ini dimaksudkan untuk mengidentifikasi dan mengavaluasi masalah atau objek. Analisis terhadap pembuatan aplikasi steganogafi ini yaitu untuk memproteksi user dalam berkomunikasi melalui media online. Maka analisis perancangan/pembuatan aplikasi steganografi adalah sebagai berikut : a.
User Aplikasi steganografi yang dibuat akan digunakan oleh user yaitu pengguna media online. Dibuatnya aplikasi ini adalah untuk memproteksi komunikasi media online. Diharapkan setelah adanya aplikasi ini, user dapat terlindungi proses komunikasi melalui media online-nya.
48
User
yang
menggunakan
aplikasi
steganografi
ini
memiliki
karakteristik setidaknya dapat mengoperasikan aplikasi ini, baik proses penyisipan informasi maupun ekstrak data. b.
Hardware Hardware (perangkat keras) adalah seluruh komponen fisik yang berada di komputer yang digunakan untuk menunjang pembangunan sistem informasi. Hardware yang digunakan dalam menerapkan sistem informasi ini secara optimal memerlukan spesifikasi minimum sebagai berikut : 1. Processor Intel Pentium IV dengan clock minimal 2.0 Ghz 2. RAM sebesar 512 MB 3. Harddisk berkapasitas 80 GB 4. Monitor dengan resolusi layar 1024 x 768
c.
Software Software adalah komponen logical dalam pengolahan data yang berupa perangkat lunak. Perangkat lunak yang digunakan dalam membangun sistem ini adalah sebagai berikut : 1. Sistem Operasi Windows 7 2. Borland Delphi 2010
49
3.6.
Kebutuhan Sistem Tujuan dari desain sistem secara umum adalah untuk memberikan
gambaran secara umum kepada user tentang sistem yang akan dibangun. Arus data sistem yang diusulkan akan tersajikan dalam bentuk Data Flow Diagram (DFD). DFD merupakan teknik grafis untuk menggambarkan suatu sistem baik yang sudah ada atau sistem yang akan dikembangkan. Untuk memudahkan dalam memahami pembacaannya, maka DFD dibuat secara bertingkat dari level konteks sampai dengan level-level yang dibutuhkan. 3.5.1 Diagram Konteks (CD) Diagram Konteks yaitu diagram yang menggambarkan sistem secara umum serta memberikan gambaran mengenai hubungan antara lingkungan di dalam sistem (Internal Entity) dengan lingkungan di luar sistem (External Entity), seperti di bawah ini : a.
Internal Entity yaitu Admin, karena user utama merupakan pihak yang berinteraksi langsung dalam melakukan pembaharuan aplikasi, mengenai semua hal yang berkaitan dengan aplikasi steganografi.
b.
External Entity yaitu User, karena user hanya melakukan pengaksesan aplikasi berupa penyisipan informasi dan pengekstrakan informasi dari dalam file gambar.
50
Adapun diagram konteks dari aplikasi steganografi ini adalah sebagai berikut :
Covertext User Pengirim
1
File Teks Asli
Aplikasi Steganografi
File Gambar Hasil Ekstrak
+
File Teks hasil Ektraksi
User Penerima
Gambar 3.3 Konteks Diagram
Pada konteks diagram diatas, dapat dilihat bahwa proses steganografi ini berlangsung 2 arah. User pengirim menginputkan file gambar dan file teks sedangkan user penerima menerima file gambar dan file teks dalam satu buah file berupa stegotext.
51
3.5.2 DFD Level 1 DFD level 1 dari pengembangan aplikasi steganografi adalah sebagai berikut : 1
4
File Teks hasil Ektraksi
Cek Data
Ekstraksi teks
+
+
File Teks Asli Covertext
File Gambar Hasil Ekstrak
File Teks Asli Covertext Stegotext Tersimpan
User Pengirim
User Penerima 2 Embedding Teks
3 Stegotext Stegotext Tersimpan
+
Cek Stegotext
+
Stegotext
Gambar 3.4 DFD Level 1 Aplikasi Steganografi
Pada DFD Level 1 Aplikasi Steganografi ini terdapat 4 proses, yaitu Cek data, Embedding teks, Cek stegotext dan Ekstraksi teks. Pada proses cek data, file gambar di cek apakah terdapat fleck, dimana fleck adalah tanda bahwa file gambar telah disisipkan pesan rahasia sebelumnya. Bila di dalam file gambar tidak terdapat fleck maka proses Embedding teks dapat dilakukan. Kemudian proses cek stegotext ini sama dengan proses 1. Cek data, dimana gambar di cek apakah terdapat fleck. Bila pada gambar terdapat fleck maka terdapat pesan di dalamnya dan proses ekstraksi pesan dapat dilakukan.
52
3.5.3 DFD Level 2 DFD level 2 dari Proses 1.1 Cek Data adalah sebagai berikut :
Gambar 3.5 DFD Level 2 Proses Cek Data
Pada DFD Level 2 proses Cek Data ini terdapat 4 proses, yaitu proses Load covertext, Cek covertext, Load file teks, dan cek file teks. Proses load coverteks adalah proses dimana user membuka file gambar untuk dijadikan covertext. Proses cek covertext adalah proses mengecek apakah terdapat fleck di dalam file gambar yang di load. Proses load file teks adalah proses dimana user menuliskan pesan rahasia dan proses cek file teks adalah proses yang mengecek apakah file teks dapat disisipkan ke dalam file gambar.
53
DFD level 2 dari Proses 1.2 Embedding Teks adalah sebagai berikut :
Gambar 3.6 DFD Level 2 Proses Embedding Teks
Pada DFD Level 2 proses Embedding teks ini terdapat 5 proses, yaitu Baca struktur covertext, Konversi covertext ke biner, Baca struktur file teks, Konversi file teks ke biner, dan Spreading biner file teks. Pada proses baca struktur coverteks, gambar di cek dapat menampung seberapa banyak karakter pesan. Proses konversi covertext ke biner membaca atribut RGB dari covertext dan diterjemahkan ke biner. Pada proses baca struktur file teks, pesan dibaca seberapa banyak karakter yang akan disisipkan, lalu pesan dikonversi ke biner pada proses
54
konversi file teks ke biner. Selanjutnya setelah file teks di konversi ke biner, lalu di sebarkan ke biner-biner covertext. DFD level 2 dari Proses 2.1 Cek Stegotext adalah sebagai berikut :
Gambar 3.7 DFD Level 2 Proses Cek Stegotext DFD
Level 2 proses Cek stegotext memiliki 3 proses, yaitu Load stegotext,
Cek stegotext, dan Cek file teks dalam stegotext. Load stegotext dilakukan saat user membuka file gambar. Dilanjutkan dengan cek stegotext yaitu proses cek fleck, dimana bila terdapat fleck maka stegotext memiliki pesan rahasia.
55
DFD level 2 dari Proses 2.2 Ekstraksi Teks adalah sebagai berikut :
Gambar 3.8 DFD Level 2 Proses Ekstraksi Teks
DFD Level 2 Proses Ekstraksi Teks memiliki 5 proses, yaitu Baca struktur stegotext, Konversi stegotext ke biner, Baca biner, Konversi biner hasil despreading ke byte, dan Baca biner. User penerima yang menerima stegotext membaca pesan dengan melewati 5 proses ini, pertama stegotext dibaca strukturnya, berapa pixel yang berisi pesan, lalu stegotext di konversi ke biner,
56
lalu biner diterjemahkan ke pesan melalui 3 proses, Baca biner, Konversi biner hasil despreading ke byte, dan Baca biner. 3.7.
Perancangan Sistem
3.6.1 Struktur Menu Perancangan
struktur
menu
dibuat
dalam
bentuk
bagan
untuk
mengidentifikasi dan mengilustrasikan aplikasi ke dalam bentuk modul-modul serta menggambarkan hierarki kontrol di antara modul-modul tersebut. Struktur menu ini merupakan rancangan program menu utama yang terdiri dari beberapa menu yang digunakan dalam aplikasi ini. Untuk lebih jelasnya lihat gambar di bawah ini :
Gambar 3.9 Struktur menu Aplikasi Steganografi
57
Aplikasi steganografi yang dibuat mempunyai struktur sebagai berikut, mempunyai 4 form, yaitu form utama, form tulis pesan, form baca pesan dan form about. Pada form utama terdapat tombol ke form tulis pesan, form baca pesan dan exit. Pada form tulis pesan terdapat tombol buka BMP, buka JPG, ke baca pesan dan Exit. Pada form baca pesan terdapat tombol buka gambar, baca pesan, ke tulis pesan dan exit. 3.6.2 Rancangan Antar Muka (Interface) Perancangan interface ini merupakan struktur gambaran aplikasi yang akan dibuat, adapun rancangan-rancangan aplikasi steganografi, yaitu : 1.
Tampilan Menu Utama
Gambar 3.10 Rancangan interface Menu Utama
58
2.
Tampilan Menu Login
Gambar 3.11 Rancangan interface Menu Login
Algoritma yang dijalankan oleh form ini pada saat user melakukan klik pada tombol login adalah sebagai berikut: begin if passwordEdit.Text='' then begin MessageDlg('Password belum diisi!',mtError, [mbOK], 0); exit; end; memo1.Lines.clear; EnDecryptFile('testing3.pasw', 'testing3.pasw', StrToInt('1234')); AssignFile(SomeTxtFile, 'testing3.pasw') ; Reset(SomeTxtFile) ; ReadLn(SomeTxtFile, buffer) ; Memo1.Lines.Add(buffer) ; CloseFile(SomeTxtFile) ; if passwordEdit.Text = buffer then begin MessageDlg('Password benar, silakan masuk.' ,mtInformation, [mbOK],0); EnDecryptFile('testing3.pasw', 'testing3.pasw', StrToInt('1234')); frmUtama.Show; with frmUtama do begin RubahPassword1.Visible:=True; btnBacaPesan1.Visible:=True; btnTulisPesan1.Visible:=True; btnLogout1.Visible:=True; btnLogin1.Visible:=False; btnKeluar1.Visible:=False; end; passwordEdit.Text:=''; frmLogin.Close end else begin MessageDlg('Password salah, coba lagi!',mtError,[mbOK],0); EnDecryptFile('testing3.pasw', 'testing3.pasw', StrToInt('1234'));
Listing Program 3.1 Verifikasi login Form Login
59
Listing program di atas, menjelaskas algoritma login. Pada saat tombol login di klik, program mengecek apakah password sesuai dengan password yang ada di dalam database, setelah sebelumnya database di decrypt terlebih dahulu. Bila sesuai maka program akan memberikan hak akses kepada user untuk masuk ke menu utama, selanjutnya setelah di cek, database akan di encrypt kembali untuk menjaga kerahasiaan password. 3.
Tampilan Menu Konfirmasi Exit
Gambar 3.12 Rancangan interface menu Konfirmasi Exit
4.
Tampilan Menu Embedding Pesan
Gambar 3.13 Rancangan interface menu Embedding Pesan
60
Algoritma tulis pesan yang dieksekusi pada saat user mengklik tombol Tulis Pesan : //cek fleck for i:=0 to 7 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,0)); CekBiner:=CekBiner+(biner(biru))[8]+(biner(hijau))[8]+ (biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck ='@#$' then begin MessageDlg('File gambar sudah berisi pesan, cari File yang lain!', mtError, [mbOK], 0); ImageFile.Picture.Bitmap:=nil; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Clear; EditSisa.Clear; exit; end
Listing Program 3.2 Cek fleck Tombol Tulis Pesan
Pada listing program di atas, program mengecek apakah pada gambar terdapat fleck, berupa 3 karakter unik ‘@#$’. Bila terdapat fleck, maka gambar telah berisi pesan sebelumnya, dan gambar akan ditolak oleh program. //sisip fleck Screen.Cursor:=CrHourGlass; fleck:='@#$'; BinerFleck:=''; n:=1; for i:=1 to 3 do BinerFleck:=BinerFleck+biner(ord(fleck[i])); z:=0; for i:=0 to 7 do begin inc(z); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,0)); BinerMerah:=biner(merah); BinerHijau:=biner(hijau); BinerBiru:=biner(biru); delete(BinerMerah,8,1); delete(BinerHijau,8,1); delete(BinerBiru,8,1);
61
BinerBiru:=BinerBiru+BinerFleck[n]; BinerHijau:=BinerHijau+BinerFleck [n+1]; BinerMerah:=BinerMerah+BinerFleck [n+2]; n:=n+3; MerahBaru:=decimal(BinerMerah); HijauBaru:=decimal(BinerHijau); BiruBaru:=decimal(BinerBiru); setpixelV(hdc1,i,0,RGB(MerahBaru,HijauBaru, BiruBaru)); end;
Listing Program 3.3 Sisip fleck Tombol Tulis Pesan
Listing program di atas dilakukan bila listing sebelumnya berjalan dengan seharusnya, yaitu tidak terdapat fleck. Maka program akan menyisipkan 3 karakter unik ‘@#$’ ke gambar. Hal ini dilakukan untuk memberi suatu tanda (flag), bahwa gambar sudah terdapat pesan di dalamnya. Dengan demikian tidak akan terjadi pemberian pesan ganda ke dalam satu gambar yang telah berisi pesan sebelumnya. //sisip_pesan pesan:=memoTulisPesan.Lines.Text; BinerPesan:=''; PanjangText:=length(memoTulisPesan.Lines.Text); for i:=1 to PanjangText do begin BinerPesan:=BinerPesan+biner(ord(pesan[i])); end; n:=1; for j:=1 to ImageFile.Height-1 do begin for i:=0 to ImageFile.Width-1 do begin inc(z); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,j)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,j)); biru:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,j)); BinerMerah:=biner(merah); BinerHijau:=biner(hijau); BinerBiru:=biner(biru); delete(BinerMerah,8,1); delete(BinerHijau,8,1); delete(BinerBiru,8,1); BinerBiru:=BinerBiru+BinerPesan[n]; BinerHijau:=BinerHijau+BinerPesan[n+1]; BinerMerah:=BinerMerah+BinerPesan[n+2]; n:=n+3;
62
MerahBaru:=decimal(BinerMerah); HijauBaru:=decimal(BinerHijau); BiruBaru:=decimal(BinerBiru); setpixelV(hdc1,i,j,RGB(MerahBaru,HijauBaru,BiruBaru)); if n>length(BinerPesan) then break; end; if n>length(BinerPesan) then break; end;
Listing Program 3.4 Sisip pesan Tombol Tulis Pesan
Pada listing di atas, program mulai menyisipkan pesan ke dalam gambar, dengan cara menyisipkannya ke dalam pixel-pixel gambar. //sisip baris InfoBaris:=j; BinerBaris:=biner16(InfoBaris); n:=1; for x:=8 to 15 do begin inc(z); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,x,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,x,0)); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,x,0)); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); delete(BinerHijau,8,1); delete(BinerMerah,8,1); BinerHijau:=BinerHijau+BinerBaris[n]; BinerMerah:=BinerMerah+BinerBaris[n+1]; HijauBaru:=decimal(BinerHijau); MerahBaru:=decimal(BinerMerah); n:=n+2; setpixelV(ImageFile.Canvas.Handle,x,0,RGB(MerahBaru,HijauBaru, biru)); end;
Listing Program 3.5 Sisip baris Tombol Tulis Pesan
Pada listing program di atas, pesan disisipkan ke dalam baris pixel-pixel gambar. //sisip_kolom InfoKolom:= i; BinerKolom:=biner16(InfoKolom); n:=1; for x:=16 to 23 do begin inc(z); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,x,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,x,0)); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,x,0)); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); delete(BinerHijau,8,1); delete(BinerMerah,8,1);
63
BinerHijau:=BinerHijau+BinerKolom[n]; BinerMerah:=BinerMerah+BinerKolom[n+1]; HijauBaru:=decimal(BinerHijau); MerahBaru:=decimal(BinerMerah); n:=n+2; setpixelV(ImageFile.Canvas.Handle,x,0,RGB(MerahBaru,HijauBaru,biru)); end;
Listing Program 3.6 Sisip kolom Tombol Tulis Pesan
Pada listing program di atas, pesan disisipkan ke dalam kolom pixel-pixel gambar. 5.
Tampilan Menu Extract Pesan
Gambar 3.14 Rancangan interface menu Extract Pesan
64
Algoritma baca pesan yang dieksekusi pada saat user mengklik tombol Baca Pesan : //cek fleck for i:=0 to 7 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,0)); CekBiner:=CekBiner+(biner(biru))[8]+(biner(hijau))[8]+ (biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck='@#$' then begin
Listing Program 3.7 Cek fleck Tombol Extract Pesan
Listing program di atas adalah algoritma pengecekan fleck. Bila terdapat fleck, maka pada stegotext terdapat pesan yang dapat diekstrak. //ambil info baris BinerBaris:=''; for i:=8 to 15 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); BinerBaris:=BinerBaris+(biner(hijau))[8]+(biner(merah))[8]; end; InfoBaris:=decimal(BinerBaris);
Listing Program 3.8 Ambil info baris Tombol Extract Pesan
Pada listing program di atas dijelaskan tentang pengambilan biner-biner pesan di dalam baris pixel-pixel stegotext. //ambil info kolom BinerKolom:=''; for i:=16 to 23 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); BinerKolom:=BinerKolom+(biner(hijau))[8]+(biner(merah))[8]; end; InfoKolom:=decimal(BinerKolom);
Listing Program 3.9 Ambil info baris Tombol Extract Pesan
Pada listing program di atas dijelaskan tentang pengambilan biner-biner pesan di dalam kolom pixel-pixel stegotext.
65
//ambil pesan dari gambar BinerPesan:=''; begin total:=(ImageFile.Width*(infobaris-1))+ InfoKolom +1; for j:=1 to ImageFile.Height - 1 do begin for i:=0 to ImageFile.Width-1 do begin inc(z); biru:=GetBValue(getpixel (ImageFile.Canvas.Handle,i,j)); hijau:=GetGValue(getpixel (ImageFile.Canvas.Handle,i,j)); merah:=GetRValue(getpixel (ImageFile.Canvas.Handle,i,j)); BinerBiru:=biner(biru); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); BinerPesan:=BinerPesan+copy(BinerBiru,8,1)+ copy(binerhijau,8,1)+ copy(binermerah,8,1); if (j=InfoBaris) and (i=InfoKolom) then break; end; if (j=InfoBaris) and (i=InfoKolom) then break; end; n:=1; pesan:=''; for i:=1 to (round(length(BinerPesan)/8)) do begin inc(z); pesan:=pesan+chr(decimal(copy(BinerPesan,n,8))); n:=n+8; end; MemoBacaPesan.Visible:=True; MemoBacaPesan.Lines.Text:=pesan; Screen.Cursor:=crdefault; end; TextMaks:=(lebar*(tinggi-1)*3) div 8; MemoBacaPesan.MaxLength := TextMaks; EditMaks.Text:=Format('%.0n', [TextMaks + 0.0]); x:=length(MemoBacaPesan.Lines.Text); EditPakai.Text:=Format('%.0n', [x + 0.0]); sisa:=TextMaks-x; EditSisa.Text:=Format('%.0n', [sisa + 0.0]); end
Listing Program 3.10 Ambil pesan dari gambar Tombol Extract Pesan
Pada listing program di atas, program menerjemahkan biner-biner yang didapat dari baris dan kolom ke dalam karakter, dan pesan rahasia ditampilkan dalam text box.
BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1.
Implementasi Sistem Pada bab ini akan dibahas mengenai implementasi sistem berdasarkan
analisis dan perancangan yang telah dilakukan pada bab sebelumnya, dan dilanjutkan dengan pengujian terhadap aplikasi. Kebutuhan perangkat pendukung dalam sistem ini terdiri dari : 1. Kebutuhan perangkat keras (hardware) 2. Kebutuhan perangkat lunak (software) 4.1.1. Kebutuhan Perangkat Keras (Hardware) Perangkat keras yang akan digunakan pengembang dalam mendukung perangkat lunak yang dirancang adalah : a. CPU AMD Phenom II X6 1055 2,8 GHz b. RAM 4 GB DDR3 PC 10600 1333 MHz c. VGA AMD Radeon 4850 512 MB d. Monitor LG 17” e. Harddisk 500 GB f. Keyboard dan Mouse 4.1.2. Kebutuhan Perangkat Lunak (Software) Dalam pengembangan sistem ini pengembang menggunakan perangkat lunak sebagai berikut : a. OS Windows 7 64 Bit b. Borland Delphi 2010
66
67
c. Power Designer 6 4.1.3. Implementasi Tahap selanjutnya adalah tahap implementasi rancangan sistem ke kode (syntax) program. Syntax-syntax program tersebut diintegrasikan ke dalam beberapa file menurut prosedur-prosedur modul aplikasi yang terkait. Program ini diimplementasikan menggunakan aplikasi pemrograman Borland Delphi 2010 yang terdiri dari beberapa form (layer) yang akan menjadi layer antar muka program. 4.1.4. Konfigurasi Perangkat Keras Spesifikasi perangkat keras yang diperlukan untuk aplikasi steganografi adalah sebagai berikut : a. Processor
: Intel Pentium IV dengan clock minimal 2.0 Ghz
b. RAM
: 512 MB
c. Harddisk
: 80 GB (ruang kosong)
d. Monitor
: dengan resolusi layar 1024 x 768
4.1.5. Konfigurasi Perangkat Lunak Perangkat lunak yang dibutuhkan dalam implemantasi adalah sebagai berikut : a. OS
: Windows XP SP1 atau lebih tinggi
b. Aplikasi
: Steganografi Program
68
4.2.
Pengujian Aplikasi
4.2.1. Pelaksanaan Pengujian Pada bagian ini akan dejelaskan bentuk-bentuk pengujian perangkat lunak yang dilaksanakan. Pengujian ini menggunakan metode Black Box. Pengujian Black Box yang dipilih adalah tipe Decision Table. Pengujian dengan metode Decision Table ini dilakukan menggunakan tabel berisi skenario-skenario pengujian yang bertujuan untuk menemukan kesalahan dalam kategori sebagai berikut : fungsi-fungsi yang salah atau hilang, kesalahan interface, kesalahan dalam struktur data, kesalahan kinerja dan kesalahan terminasi. Tabel 4.1 Tabel pengujian Aplikasi Steganografi
No. 1
Proses yang diuji Eksekusi program
Pengujian Login 2 Klik tombol Login 3 Klik tombol Login (di form Login)
Skenario Pengujian User mengeksekusi executable program.
Hasil yang diharapkan
Hasil pengujian Sesuai
file
Program menampilkan menu utama sesuai dengan perancangan program.
User mengklik tombol Login. User mengklik tombol Login (di form Login).
Program menampilkan form login. Program melakukan verifikasi password, bila password benar maka akan tampil menu utama dengan tombol-tombol yang aktif.
Sesuai
Program menampilkan form Rubah Password.
Sesuai
Program melakukan verifikasi password lama, bila password lama benar maka password akan diperbaharui dengan password baru yang user inputkan sebelumnya.
Sesuai
Saat di klik, program akan menampilkanForm Tulis Pesan.
Sesuai
Pengujian Rubah Password 4 Klik tombol User mengklik tombol Rubah Rubah Password. Password 5 Klik tombol User mengklik tombol Rubah (di Rubah (di form Rubah form Rubah Password). Password)
Pengujian Embedding Pesan 6 Klik tombol User mengklik Tulis Pesan Tulis Pesan.
tombol
Sesuai
69
No. 7
Proses yang diuji Buka Gambar BMP
Skenario Pengujian
Hasil yang diharapkan
User membuka gambar BMP dengan mengklik tombol Buka BMP.
Saat di klik, program akan menampilkan dialog open picture, user memilih gambar bitmap, dan gambar terbuka di Image Box. Saat di klik, program akan menampilkan dialog open picture, user memilih gambar JPG untuk kemudian di convert dan disimpan sebagai BMP, dan gambar akan ditampilkan di Image Box. Setelah sebelumnya menulis pesan di Text Box, user mengklik tombol Tulis Pesan. Proses tulis pesan berhasil bila label proses berubah menjadi ‘Penulisan pesan berhasil’. Selanjutnya user menyimpan hasil gambar yang telah disisipkan pesan melalui dialog save gambar. Text box, Image Box, tombol Tulis Pesan dan Batal akan non-aktif, sedangkan tombol Buka BMP dan Buka JPG akan aktif.
8
Buka Gambar JPG
User membuka gambar JPG dengan mengklik tombol Buka JPG.
9
Tulis Pesan
User mengklik tombol Tulis Pesan untuk menyisipkan pesan.
10
Batal
User mengklik Batal.
tombol
Pengujian Ekstraksi Pesan 11 Klik tombol User mengklik Baca Pesan Baca Pesan.
tombol
12
Buka Gambar (di form Baca Pesan)
User mengklik Buka Gambar.
tombol
13
Baca Pesan
tombol
14
About
User mengklik Baca Pesan. User mengklik About.
tombol
Saat di klik, program akan menampilkan FormBaca Pesan. Akan keluar dialog open picture, user memilih gambar yang akan dibaca pesannya. Bila gambar sebelumnya telah disisipkan pesan, maka akan ditampilkan di Image Box dan siap untuk di baca pesannya. Bila gambar yang dibuka tidak berisi pesan, maka gambar akan ditolak. Pesan rahasia akan tampil di Text Box. Form About akan tampil, menampilkan informasi program.
Hasil pengujian Sesuai
Sesuai
Sesuai
Sesuai
Sesuai
Sesuai
Sesuai Sesuai
70
4.2.2. PengujianAplikasi Setelah melakukan perancangan dan pembuatan aplikasi, pengembang melakukan beberapa pengujian terhadap aplikasi steganografi ini, dimulai dari tahap embedding pesan hingga tahap ekstraksi pesan. Adapun proses pengujian dijelaskan dalam beberapa gambar di bawah ini : 1. Login
Gambar 4.1 Menu Utama program
User dapat melakukan login dengan melakukan klik pada tombol login.
Gambar 4.2 Form Login
71
User dapat menginputkan password pada textbox yang terdapat di form Login.
Gambar 4.3 Form Login setelah menginputkan password
Pada saat user menekan tombol Login untuk melakukan verifikasi password, aplikasi akan membuka database password yang berupa file teks yang terenkripsi, file database dibaca setelah sebelumnya di decrypt terlebih dahulu. Password kemudian dicocokkan dengan data password di dalam database, bila cocok, user akan diberikan hak akses untuk memasuki aplikasi. Setelah password tersebut diverifikasi, file database tersebut akan kembali di encrypt untuk menjaga kerahasiannya.
Gambar 4.4 Form Login setelah melakukan verifikasi password
72
2. Rubah Password
Gambar 4.5 Submenu Rubah password
Setelah mendapat hak akses ke dalam aplikasi, user dapat masuk ke form Rubah Password dengan mengklik submenu Rubah Password.
Gambar 4.6 Form Rubah Password
User dapat merubah password yang ada di dalam database aplikasi melalui form Rubah Password ini. Untuk merubah password, user harus menginputkan password lama dan password baru.
73
Gambar 4.7 Form Rubah Password setelah berhasil merubah password
Setelah berhasil merubah password, form akan menampilkan popup informasi bahwa password telah dirubah, dan akan user secara otomatis dibawa masuk kembali ke form utama.
Gambar 4.8 Menu Utama program setelah proses rubah password berhasil
Setelah kembali ke menu utama, user dapat melanjutkan aktivitasnya untuk menyisipkan pesan maupun membaca pesan dari dalam gambar.
74
3. Embedding Pesan Pada tahap ini, pesan akan disisipkan ke dalam gambar.
Gambar 4.9 Menu Utama program setelah proses login berhasil
User dapat membuka Form Tulis Pesan dengan mengklik tombol Tulis Pesan.
Gambar 4.10 Form Tulis Pesan
75
Di form ini user membuka gambar yang akan disisipkan pesan.
Gambar 4.11 Form Tulis Pesan setelah membuka gambar
User membuka gambar dengan mengklik tombol Buka BMP atau Buka JPG, lalu memilih gambar yang akan disisipkan pesan. Gambar akan ditampilkan di Image Box. Selanjutnya user menulis pesan rahasia di Text Box.
Gambar 4.12 Tampilan save gambar
76
Ini adalah tampilan save dialog setelah user mengklik tombol Tulis Pesan. Saat user mengklik tombol Tulis Pesan, ada 2 proses yang dijalankan, yaitu proses sisip pesan ke gambar dan proses simpan gambar. Saat tampil dialog simpan gambar, proses sisip pesan telah berhasil dijalankan.
Gambar 4.13 Tampilan Form Tulis Pesan setelah berhasil sisip pesan
Setelah user selesai menyimpan gambar, label status akan berubah menjadi ‘Penulisan Pesan Berhasil’ dan ‘Silakan ke Form Baca Pesan untuk membaca pesan’.
77
4. Ekstraksi Pesan
Gambar 4.14 Form Baca Pesan
Pada form ini user dapat membaca pesan rahasia dengan membuka gambar yang sebelumnya telah disisipkan pesan.
Gambar 4.15 Form Baca Pesan setelah membuka gambar
78
Setelah user membuka gambar yang akan di ekstrak pesannya, gambar akan ditampilkan di Image Box dan siap untuk diekstrak pesannya.
Gambar 4.16 Form Baca Pesan setelah mengekstrak pesan
Pesan akan ditampilkan setelah user mengklik tombol Baca Pesan. Pada tombol ini ada 2 proses, yang pertama cek fleck, yaitu proses untuk mengecek apakah pada gambar terdapat pesan rahasia, dan proses ekstrak pesan, dimana pesan rahasia di ekstrak dari gambar dan ditampilkan di Text Box.
BAB V KESIMPULAN DAN SARAN
5.1.
Kesimpulan Berdasarkan hasil penelitian yang penulis lakukan dengan tema
steganografi, dengan mengambil judul aplikasi steganografi ini, diharapkan dapat digunakan untuk membantu user internet dalam bertukar pesan dengan tingkat keamanan yang lebih baik. Berdasarkan analisis yang telah penulis buat, maka dapat diambil kesimpulan : 1. Dengan aplikasi steganografi ini dapat melindungi transaksi pengiriman pesan antara dua pihak yang saling bertukar pesan. 2. Aplikasi ini dapat menyamarkan pesan, karena secara kasat mata pesan tidak akan terlihat, dan terlihat sebagai gambar biasa. Di era internet ini, transaksi pengiriman pesan sudah sangat maju, baik itu melalui pesan elektronik (e-mail), jejaring sosial (Facebook, Twitter, Google+, dll), forum, dll. Kelemahan proses transaksi pesan dalam media-media tersebut adalah kerahasiaannya, dimana bila pesan dikimkan ke tujuan maka pesan tersebut secara jelas akan berbentuk pesan, dan rentan untuk diserang setiap saat. Dengan aplikasi steganografi ini, pesan disisipkan ke dalam media gambar, dan secara
79
80
kasat mata pesan tidak akan terlihat, dengan begitu transaksi pengiriman pesan akan lebih aman. 5.2.
Saran Berdasarkan informasi yang telah penulis dapat, serta kesimpulan yang
telah diuraikan sebelumnya, maka penulis memberikan saran : 1. Aplikasi steganografi ini sebaiknya dikembangkan menjadi sebuah aplikasi yang lebih kompleks, baik penambahan input type file gambar, output type file gambar, dan fitur-fitur lain yang menunjang aplikasi ini. 2. Penyederhanaan proses penyisipan pesan dan pembacaan pesan rahasia. 3. Penambahan pop-up help untuk mempermudah user. Penulis menyadari masih terdapat kekurangan-kekurangan dalam aplikasi yang penulis bangun ini, salah satunya adalah pengoptimalisasian script aplikasi, dan manajemen memory yang lebih baik. Diharapkan di masa datang, dapat dilakukan penyempurnaan-penyempurnaan pada aplikasi ini sehingga tingkat kepuasan user akan semakin tercapai. Semoga hasil penelitian tugas akhir ini dapat bermanfaat bagi rekan-rekan adik kelas dan pembaca. Akhir kata penulis ucapkan terima kasih kepada bapak dosen pembimbing yang dengan setia telah membantu dan membimbing penulis, sehingga penulis dapat menyelesaikan tugas akhir ini.
DAFTAR PUSTAKA
Cole, Eric, 2003, Hiding in Plain Sight : Steganoraphy and the Art of Covert Communication, United States of America, Wiley Publishing. J.Cox, Ingremar, 2008, Digital Watermarking and Steganography, United States of America, Morgan Kaufmann. Katzenbeisser, Stefan, 2000, Information Hiding Techniques for Steganography and Digital Watermarking, United States of America, Arctech House. Kipper, Greg, 2003, Investigator’s Guide to Steganography, United States of America, Aurbach Publications. Lu, Chun-Shien, 2005, Multimedia Security : Steganography and Digital Watermarking Techniques for Protecting of Intellectual Property, Taiwan, Idea Group Publising. Machanda, Sanjeev, Dave, Mayank, and Singh, S. B., 2011, Customized and Secure Image Steganography Through Random Numbers Logic, India, Computer Science Journals. Masaleno, Andino, 2006, Pengantar Steganografi, www.ilmukomputer.com, 2006, diakses 16 Mei 2011. Morkel, T., Eloffm J. H. P., and Oliver, M. S., 2005, An Overview of Image Steganography, South Africa, Published electronically. Munir, Rinaldi, 2006, Kriptografi, Bandung, Informatika.
Q.Shi, Yun, 2009, Transaction on Data Hiding and Multimedia Security IV, Germany, Springer. Sellars, Duncan, An Introduction to Steganography, www.cs.uct.ac.za/courses/CS400W/NIS/papers99/dsellars/stego.html, 2009, diakses 13 Juli 2011.
Wayner, Peter.2009, Dissapearing Cryptography, United States of America, Morgan Kaufmann.
LAMPIRAN
EditMaks.Color:=clSilver; EditMaks.Clear; EditSisa.Enabled:=False; EditSisa.Color:=clSilver; EditSisa.Clear;
Form Utama unit FormUtama; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TfrmUtama = class(TForm) Label1: TLabel; BtnTulisPesan: TButton; BtnBacaPesan: TButton; BtnKeluar: TButton; procedure BtnTulisPesanClick(Sender: TObject); procedure BtnBacaPesanClick(Sender: TObject); procedure BtnKeluarClick(Sender: TObject); procedure FormCreate(Sender: TObject); //procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmUtama: TfrmUtama; implementation uses FormTulisPesan, FormBacaPesan; {$R *.dfm} procedure TfrmUtama.BtnTulisPesanClick(Sender: TObject); begin frmTulisPesan.Show; with frmTulisPesan do begin ImageFile.Picture.Bitmap:=nil; //BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; //BtnCekGambar.Enabled:=False; //MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Enabled:=False;
end; end; procedure TfrmUtama.BtnBacaPesanClick(Sender: TObject); begin frmBacaPesan.Show; with frmBacaPesan do begin ImageFile.Picture.Bitmap:=nil; BtnBacaPesan.Enabled:=False; MemoBacaPesan.Visible:=False; MemoBacaPesan.Lines.Clear; EditMaks.Enabled:=False; EditMaks.Color:=clSilver; EditMaks.Clear; EditPakai.Enabled:=False; EditPakai.Color:=clSilver; EditPakai.Clear; EditSisa.Enabled:=False; EditSisa.Color:=clSilver; EditSisa.Clear; end; end; procedure TfrmUtama.BtnKeluarClick(Sender: TObject); var TombolMessageDlg : word; begin TombolMessageDlg:=MessageDlg('Keluar dari Aplikasi ?', mtConfirmation,[mbYes,mbNo], 0); if TombolMessageDlg = mrYes then Application.Terminate; end; procedure TfrmUtama.FormCreate(Sender: TObject); var MyBitmap: TBitmap; begin frmUtama.Width:=600;
frmUtama.Height:=425; MyBitmap:=TBitmap.Create; MyBitmap.LoadFromFile('formmainbg.bmp' ); frmUtama.Brush.Bitmap:=MyBitmap; end; end.
Form Tulis Pesan unit FormTulisPesan; interface uses JPEG, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtDlgs, ExtCtrls; type TfrmTulisPesan = class(TForm) MainMTPesan: TMainMenu; MenuFile: TMenuItem; MenuHelp: TMenuItem; DialogBukaGambar: TOpenPictureDialog; DialogSimpanGambar: TSavePictureDialog; EditSisa: TEdit; EditMaks: TEdit; Label1: TLabel; Label2: TLabel; MenuExit: TMenuItem; MenuAbout: TMenuItem; BtnClose: TButton; BtnKeBacaPesan: TButton; Label3: TLabel; Label4: TLabel; GroupHelp: TGroupBox; Label5: TLabel; MemoHelp: TMemo; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Label6: TLabel; MemoTulisPesan: TMemo; BtnBukaBmp: TButton; BtnBukaJpg: TButton; ScrollBox1: TScrollBox; ImageFile: TImage;
BtnTulisPesan: TButton; BtnBatal: TButton; procedure MenuExitClick(Sender: TObject); procedure BtnTulisPesanClick(Sender: TObject); procedure BtnBatalClick(Sender: TObject); procedure MemoTulisPesanKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure MenuAboutClick(Sender: TObject); procedure BtnCloseClick(Sender: TObject); procedure BtnKeBacaPesanClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BtnBukaJpgClick(Sender: TObject); procedure BtnBukaBmpClick(Sender: TObject); procedure SaveGambar; procedure CekGambar; procedure ButtonControl; procedure ButtonControl2; procedure Convert; procedure TampilGambar; private { Private declarations } public { Public declarations } end; var frmTulisPesan: TfrmTulisPesan; MaxChar, InfoBaris, InfoKolom, tinggi, lebar, PanjangText : integer; NamaFile : string; hdc1 : hdc; Awal, Selesai : TDateTime; JPEGImage: TJPEGImage; NamaFileJpg,NamaFileBmp : string; implementation uses FormBacaPesan, FormAbout, FormUtama; {$R *.dfm} Type DataPixel = Array [0..1000, 0..1000] of integer;
function biner(angka:byte): string; var a, sisa : integer; car : string[1]; hasil : string[8]; begin hasil:='00000000'; a:=0; if angka <> 0 then begin while angka <> 1 do begin sisa:=angka mod 2; str(sisa,car); hasil[8-a]:=car[1]; angka:=trunc(angka/2); inc(a); end; str(angka,car); hasil[8-a]:=car[1]; end; biner:=hasil; end; function pangkat (x,y:integer):integer; var i, hasil : integer; begin hasil:=1; if y=0 then hasil:=1; for i:=1 to y do hasil:=hasil*x; pangkat:=hasil; end; function biner16(angka:word): string; var a, sisa : integer; car : string[1]; hasil : string[16]; begin hasil:='0000000000000000'; a:=0; if angka <> 0 then begin while angka <> 1 do begin sisa:=angka mod 2; str(sisa, car); hasil[16-a]:=car[1]; angka:=trunc(angka/2); inc(a); end; str(angka,car);
hasil[16-a]:=car[1]; end; biner16:=hasil; end; function decimal (bnr:string):integer; var hasil, panjang, x:integer; begin hasil:=0; panjang:=length(bnr); for x:=1 to panjang do if bnr[x]='1' then hasil:=hasil+pangkat(2,panjang-x); decimal:=hasil; end; procedure TfrmTulisPesan.BtnTulisPesanClick(Sender : TObject); var i, merah, hijau, biru, MerahBaru, BiruBaru, HijauBaru, InfoKolom, InfoBaris, n, j, z, x: integer; fleck, BinerMerah, BinerHijau, BinerBiru, CekBiner, BinerPesan, huruf1, huruf2, huruf3, BinerFleck, BinerBaris, BinerKolom, pesan: string; begin ImageFile.Height:=ImageFile.Picture.Height ; ImageFile.Width:=ImageFile.Picture.Width; tinggi:=ImageFile.Height; lebar:=ImageFile.Width; if memoTulisPesan.Lines.Text='' then begin MessageDlg('Pesan belum diisi !',mtError, [mbOK], 0); exit; end else //BtnTulisPesan.Enabled:=False; //BtnBatal.Enabled:=False; hdc1:=ImageFile.Canvas.Handle; //cek fleck for i:=0 to 7 do begin merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0));
hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,i,0)); CekBiner:=CekBiner+(biner(biru))[8]+(bine r(hijau))[8]+ (biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck ='@#$' then begin MessageDlg('File gambar sudah berisi pesan, cari File yang lain!', mtError, [mbOK], 0); ImageFile.Picture.Bitmap:=nil; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Clear; EditSisa.Clear; exit; end else //sisip fleck Screen.Cursor:=CrHourGlass; fleck:='@#$'; BinerFleck:=''; n:=1; for i:=1 to 3 do BinerFleck:=BinerFleck+biner(ord(fleck[i])) ; z:=0; for i:=0 to 7 do begin inc(z); merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0));
biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,i,0)); BinerMerah:=biner(merah); BinerHijau:=biner(hijau); BinerBiru:=biner(biru); delete(BinerMerah,8,1); delete(BinerHijau,8,1); delete(BinerBiru,8,1); BinerBiru:=BinerBiru+BinerFleck[n]; BinerHijau:=BinerHijau+BinerFleck [n+1]; BinerMerah:=BinerMerah+BinerFleck [n+2]; n:=n+3; MerahBaru:=decimal(BinerMerah); HijauBaru:=decimal(BinerHijau); BiruBaru:=decimal(BinerBiru); setpixelV(hdc1,i,0,RGB(MerahBaru,HijauB aru, BiruBaru)); end; //sisip_pesan pesan:=memoTulisPesan.Lines.Text; BinerPesan:=''; PanjangText:=length(memoTulisPesan.Line s.Text); for i:=1 to PanjangText do begin BinerPesan:=BinerPesan+biner(ord(pesan[i] )); end; n:=1; for j:=1 to ImageFile.Height-1 do begin for i:=0 to ImageFile.Width-1 do begin inc(z); merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,j)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,j)); biru:=GetGValue(getpixel(ImageFile.Canva s.Handle,i,j)); BinerMerah:=biner(merah); BinerHijau:=biner(hijau); BinerBiru:=biner(biru); delete(BinerMerah,8,1); delete(BinerHijau,8,1); delete(BinerBiru,8,1);
BinerBiru:=BinerBiru+BinerPesan[n]; BinerHijau:=BinerHijau+BinerPesan[n+1]; BinerMerah:=BinerMerah+BinerPesan[n+2] ; n:=n+3; MerahBaru:=decimal(BinerMerah); HijauBaru:=decimal(BinerHijau); BiruBaru:=decimal(BinerBiru); setpixelV(hdc1,i,j,RGB(MerahBaru,HijauBa ru,BiruBaru)); if n>length(BinerPesan) then break; end; if n>length(BinerPesan) then break; end; //sisip baris InfoBaris:=j; BinerBaris:=biner16(InfoBaris); n:=1; for x:=8 to 15 do begin inc(z); biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,x,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,x,0)); merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,x,0)); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); delete(BinerHijau,8,1); delete(BinerMerah,8,1); BinerHijau:=BinerHijau+BinerBaris[n]; BinerMerah:=BinerMerah+BinerBaris[n+1]; HijauBaru:=decimal(BinerHijau); MerahBaru:=decimal(BinerMerah); n:=n+2; setpixelV(ImageFile.Canvas.Handle,x,0,RG B(MerahBaru,HijauBaru, biru)); end; //sisip_kolom InfoKolom:= i; BinerKolom:=biner16(InfoKolom); n:=1; for x:=16 to 23 do begin
inc(z); biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,x,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,x,0)); merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,x,0)); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); delete(BinerHijau,8,1); delete(BinerMerah,8,1); BinerHijau:=BinerHijau+BinerKolom[n]; BinerMerah:=BinerMerah+BinerKolom[n+1 ]; HijauBaru:=decimal(BinerHijau); MerahBaru:=decimal(BinerMerah); n:=n+2; setpixelV(ImageFile.Canvas.Handle,x,0,RG B(MerahBaru,HijauBaru,biru)); end; Screen.Cursor:=crdefault; ImageFile.Refresh; EditMaks.Clear; EditSisa.Clear; SaveGambar; end; procedure TfrmTulisPesan.SaveGambar; var BisaDisimpan,flag : boolean; begin ImageFile.Height:=ImageFile.Picture.Height ; ImageFile.Width:=ImageFile.Picture.Width; tinggi:= ImageFile.Height; lebar:=ImageFile.Width; DialogSimpanGambar.Filter := 'Image File (*.bmp)|*.bmp'; DialogSimpanGambar.DefaultExt:='bmp'; DialogSimpanGambar.FilterIndex := 1; if DialogSimpanGambar.Execute then begin NamaFile:=DialogSimpanGambar.FileName ;
if not FileExists(DialogSimpanGambar.FileName) then BisaDisimpan:=true else BisaDisimpan:=MessageDlg('File'+NamaFil e+'sudah ada, tetap simpan ?', mtConfirmation,[mbYes,mbNo],0)=mrYes; if BisaDisimpan then begin ImageFile.Picture.SaveToFile(NamaFile); ImageFile.Picture.Bitmap:= nil; Label3.Caption:='Status : Penulisan Pesan Berhasil'; Label4.Visible:=True; Label4.Caption:='Silakan ke Form Baca Pesan untuk membaca pesan'; flag:=True; end else BtnTulisPesan.Enabled:=True; end; if flag=True then begin ButtonControl2; MemoTulisPesan.Lines.clear; MemoTulisPesan.Visible:=False; end else begin BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=True; Label3.Caption:='Status : Penulisan Pesan Berhasil'; Label4.Visible:=True; Label6.Visible:=True; Label4.Caption:='Tetapi proses save gambar di batalkan'; Label6.Caption:='silakan menekan tombol Batal, dan ulangi kembali'; end; end; procedure TfrmTulisPesan.BtnBatalClick(Sender: TObject); begin ImageFile.Picture.Bitmap:=nil; MemoTulisPesan.Lines.Clear; MemoTulisPesan.Visible:=False; BtnBatal.Enabled:=False; BtnTulisPesan.Enabled:=False;
BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; EditMaks.Clear; EditSisa.Clear; Label3.Caption:='Status : Tulis Pesan Pending'; Label4.Visible:=False; Label6.Visible:=False; Label4.Caption:=''; Label6.Caption:=''; end; procedure TfrmTulisPesan.MemoTulisPesanKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); var sisa, x : integer; begin EditSisa.Text:=EditMaks.Text; x:=length(MemoTulisPesan.Lines.Text)+1; Sisa:=MemoTulisPesan.MaxLength-x; EditSisa.Text:=Format('%.0n', [Sisa + 0.0]); end; procedure TfrmTulisPesan.MenuExitClick(Sender: TObject); var TombolMessageDlg : word; begin TombolMessageDlg:=MessageDlg('Keluar dari form Tulis Pesan ?', mtConfirmation,[mbYes,mbNo], 0); if TombolMessageDlg = mrYes then frmTulisPesan.Close; end; procedure TfrmTulisPesan.MenuAboutClick(Sender: TObject); begin frmAbout.ShowModal; end; procedure TfrmTulisPesan.BtnCloseClick(Sender: TObject); var
TombolMessageDlg : word; begin Label3.Caption:='Status : Tulis Pesan Pending'; Label4.Caption:=''; TombolMessageDlg:=MessageDlg('Keluar dari form Tulis Pesan ?', mtConfirmation,[mbYes,mbNo], 0); BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; ImageFile.Picture.Bitmap:= nil; EditMaks.Clear; EditSisa.Clear; MemoTulisPesan.Lines.Clear; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; Label3.Caption:='Status : Tulis Pesan Pending'; Label4.Visible:=False; Label6.Visible:=False; Label4.Caption:=''; Label6.Caption:=''; if TombolMessageDlg = mrYes then frmTulisPesan.Close; end; procedure TfrmTulisPesan.BtnKeBacaPesanClick(Sen der: TObject); var TombolMessageDlg: word; begin Label3.Caption:='Status : Tulis Pesan Pending'; Label4.Caption:=''; TombolMessageDlg := MessageDlg('Berpindah ke form Baca Pesan ?', mtConfirmation,[mbYes,mbNo],0); if TombolMessageDlg = mrYes then begin frmBacaPesan.Show; with frmBacaPesan do begin ImageFile.Picture.Bitmap:=nil; EditMaks.Clear; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; MemoBacaPesan.Lines.Clear; MemoBacaPesan.Visible:=False; EditMaks.Enabled:=False; EditMaks.Color:=clSilver; EditPakai.Enabled:=False; EditPakai.Color:=clSilver; EditSisa.Enabled:=False; EditSisa.Color:=clSilver;
Label3.Caption:='Status : Tulis Pesan Pending'; Label4.Visible:=False; Label6.Visible:=False; Label4.Caption:=''; Label6.Caption:=''; frmTulisPesan.Close; end; end else frmTulisPesan.Show; MemoTulisPesan.Lines.Clear; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; ImageFile.Picture.Bitmap:= nil; EditMaks.Clear; EditSisa.Clear; Label3.Caption:='Status : Tulis Pesan Pending'; Label4.Visible:=False; Label6.Visible:=False; Label4.Caption:=''; Label6.Caption:=''; end; procedure TfrmTulisPesan.FormCreate(Sender: TObject); var MyBitmap: TBitmap; begin frmTulisPesan.Width:=963; frmTulisPesan.Height:=753; MyBitmap:=TBitmap.Create; MyBitmap.LoadFromFile('formtulisbg.bmp' ); frmTulisPesan.Brush.Bitmap:=MyBitmap; BtnTulisPesan.Enabled:=False; end; procedure TfrmTulisPesan.BtnBukaJpgClick(Sender: TObject); var tinggi,lebar,TextMaks : integer; flag1 : boolean; begin flag1:=False; JPEGImage:=TJPEGImage.Create;
openDialog1.Filter := 'Image File (*.jpg, *.jpeg)|*.jpg;*.jpeg'; openDialog1.FilterIndex := 1; if OpenDialog1.Execute then begin JPEGImage.LoadFromFile(OpenDialog1.Fil eName); NamaFileJpg:=OpenDialog1.FileName; NamaFileJpg:= StringReplace(NamaFileJpg, '.jpg', '.bmp',[rfReplaceAll, rfIgnoreCase]); flag1:=True; end; if flag1=True then begin Convert; end; end; procedure TfrmTulisPesan.Convert; var Bitmap: TBitmap; flag2 : boolean; begin flag2:=False; try Bitmap:=TBitmap.Create; with Bitmap do begin PixelFormat:=pf24bit; Height:=JPEGImage.Height; Width:=JPEGImage.Width; Canvas.Draw(0,0, JPEGImage); end; SaveDialog1.FileName:=(NamaFileJpg); SaveDialog1.Filter := 'Image File (*.bmp)|*.bmp'; SaveDialog1.DefaultExt:='bmp'; SaveDialog1.FilterIndex := 1; //if SaveDialog1.Execute then begin Bitmap.SaveToFile(SaveDialog1.FileName) ; flag2:=True; end; finally Bitmap.Free; JPEGImage.Free; NamaFileBmp:=SaveDialog1.FileName; end; if flag2=True then begin
TampilGambar; end; end; procedure TfrmTulisPesan.TampilGambar; var TextMaks : integer; begin begin ImageFile.Picture.LoadFromFile(NamaFile Bmp); ImageFile.Height:=ImageFile.Picture.Height ; ImageFile.Width:=ImageFile.Picture.Width; tinggi:=ImageFile.Height; lebar:=ImageFile.Width; if (lebar<24) or (tinggi<2) then begin MessageDlg('File Gambar harus lebar >=24 & tinggi>2, Cari File yang lain !',mtError, [mbOK],0); ImageFile.Picture.Bitmap:=nil; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Clear; EditSisa.Clear; exit; end; MemoTulisPesan.Visible:=True; MemoTulisPesan.Lines.Clear; TextMaks:=(lebar*(tinggi-1)*3) div 8; MemoTulisPesan.MaxLength := TextMaks; EditMaks.Text:=Format('%.0n', [TextMaks + 0.0]); EditSisa.Text:=Format('%.0n', [TextMaks + 0.0]); end; Begin ButtonControl; CekGambar; end; end; procedure TfrmTulisPesan.BtnBukaBmpClick(Sender: TObject);
var NamaFile : string; tinggi,lebar,TextMaks : integer; flag : boolean; begin DialogBukaGambar.Filter := 'Image File (*.bmp)|*.bmp'; DialogBukaGambar.FilterIndex := 1; if DialogBukaGambar.Execute then begin
end; procedure TfrmTulisPesan.CekGambar; var i, merah, hijau, biru: integer; fleck, CekBiner, huruf1, huruf2, huruf3: string; begin for i:=0 to 7 do begin
NamaFile:=DialogBukaGambar.FileName; ImageFile.Picture.LoadFromFile(NamaFile); //ImageFile.Canvas.StretchDraw(Rect(0, 0, ImageFile.Width-1, ImageFile.Height-1), NamaFile);
merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0));
ImageFile.Height:=ImageFile.Picture.Height ;
biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,i,0));
ImageFile.Width:=ImageFile.Picture.Width; tinggi:=ImageFile.Height; lebar:=ImageFile.Width; if (lebar<24) or (tinggi<2) then begin MessageDlg('File Gambar harus lebar >=24 & tinggi>2, Cari File yang lain !',mtError, [mbOK],0); ImageFile.Picture.Bitmap:=nil; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Clear; EditSisa.Clear; exit; end; MemoTulisPesan.Visible:=True; MemoTulisPesan.Lines.Clear; TextMaks:=(lebar*(tinggi-1)*3) div 8; MemoTulisPesan.MaxLength := TextMaks; EditMaks.Text:=Format('%.0n', [TextMaks + 0.0]); EditSisa.Text:=Format('%.0n', [TextMaks + 0.0]); flag:=True; end; if flag=True then Begin ButtonControl; CekGambar; end;
CekBiner:=CekBiner+(biner(biru))[8]+(bine r(hijau))[8]+ (biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck ='@#$' then begin MessageDlg('File gambar sudah berisi pesan, cari file gambar lain !', mtError, [mbOK],0); ImageFile.Picture.Bitmap:=nil; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Clear; EditSisa.Clear; end {else begin MessageDlg('File gambar belum berisi pesan!',mtConfirmation,[mbOK],0); end;} end; procedure TfrmTulisPesan.ButtonControl; Begin
BtnTulisPesan.Enabled:=True; BtnBatal.Enabled:=True; BtnBukaBmp.Enabled:=False; BtnBukaJpg.Enabled:=False; end; procedure TfrmTulisPesan.ButtonControl2; Begin BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; BtnBukaBmp.Enabled:=True; BtnBukaJpg.Enabled:=True; end; end.
Form Baca Pesan
procedure MenuExitClick(Sender: TObject); procedure MenuAboutClick(Sender: TObject); procedure BtnBacaPesanClick(Sender: TObject); procedure BtnBukaGambarClick(Sender: TObject); procedure BtnKeTulisPesanClick(Sender: TObject); procedure BtnCloseClick(Sender: TObject); procedure CekGambar; private { Private declarations } public { Public declarations } tinggi,lebar : Integer; end;
unit FormBacaPesan;
var frmBacaPesan: TfrmBacaPesan;
interface
implementation
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ExtDlgs, Menus;
uses FormTulisPesan, FormAbout;
type TfrmBacaPesan = class(TForm) MainMenuBacaPesan: TMainMenu; MenuFile: TMenuItem; MenuExit: TMenuItem; MenuHelp: TMenuItem; MenuAbout: TMenuItem; Label1: TLabel; Label2: TLabel; Label3: TLabel; EditMaks: TEdit; EditPakai: TEdit; EditSisa: TEdit; DialogBukaGambar: TOpenPictureDialog; BtnClose: TButton; BtnKeTulisPesan: TButton; BtnBukaGambar: TButton; BtnBacaPesan: TButton; ScrollBox1: TScrollBox; ImageFile: TImage; MemoBacaPesan: TMemo; procedure FormCreate(Sender: TObject);
{$R *.dfm} procedure TfrmBacaPesan.FormCreate(Sender: TObject); var frmBacaPesan: TfrmBacaPesan; PanjangText: integer; MyBitmap: TBitmap; begin frmBacaPesan.Width:=870; frmBacaPesan.Height:=655; MyBitmap:=TBitmap.Create; MyBitmap.LoadFromFile('formbacabg.bmp' ); frmBacaPesan.Brush.Bitmap:=MyBitmap; MemoBacaPesan.Visible:=True; end; function biner(angka:byte): string; var a, sisa : integer; car : string[1]; hasil : string[8]; begin
hasil:='00000000'; a:=0; if angka <> 0 then begin while angka <> 1 do begin sisa:=angka mod 2; str(sisa,car); hasil[8-a]:=car[1]; angka:=trunc(angka/2); inc(a); end; str(angka,car); hasil[8-a]:=car[1]; end; biner:=hasil; end; function biner16(angka:word): string; var a, sisa : integer; car : string[1]; hasil : string[16]; begin hasil:='0000000000000000'; a:=0; if angka <> 0 then begin while angka <> 1 do begin sisa:=angka mod 2; str(sisa, car); hasil[16-a]:=car[1]; angka:=trunc(angka/2); inc(a); end; str(angka,car); hasil[16-a]:=car[1]; end; biner16:=hasil; end; function pangkat (x,y:integer):integer; var i, hasil : integer; begin hasil:=1; if y=0 then hasil:=1; for i:=1 to y do hasil:=hasil*x; pangkat:=hasil; end;
function decimal (bnr:string):integer; var hasil, panjang, x:integer; begin hasil:=0; panjang:=length(bnr); for x:=1 to panjang do if bnr[x]='1' then hasil:=hasil+pangkat(2,panjang-x); decimal:=hasil; end; procedure TfrmBacaPesan.MenuExitClick(Sender: TObject); var TombolMessageDlg: word; begin TombolMessageDlg:=MessageDlg('Keluar dari form Baca Pesan?',mtConfirmation,[mbYes,mbNo],0); if TombolMessageDlg = mrYes then frmBacaPesan.Close; end; procedure TfrmBacaPesan.MenuAboutClick(Sender: TObject); begin frmAbout.ShowModal; end; procedure TfrmBacaPesan.CekGambar; var i, merah, hijau, biru : integer; fleck, CekBiner, huruf1, huruf2, huruf3 : string; begin for i:=0 to 7 do begin merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,i,0));
CekBiner:=CekBiner+(biner(biru))[8]+(bine r(hijau))[8]+ (biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck = '@#$' then {begin MessageDlg('File gambar berisi pesan',mtConfirmation,[mbOK],0); end} else begin MessageDlg('File gambar tidak berisi pesan, cari file gambar lain!',mtError,[mbOK],0); ImageFile.Picture.Bitmap:=nil; BtnBukaGambar.Enabled:=True; BtnBacaPesan.Enabled:=False; EditMaks.Clear; EditPakai.Clear; EditSisa.Clear; end; end; procedure TfrmBacaPesan.BtnBacaPesanClick(Sender: TObject); var i, merah, hijau, biru, n, j, z, InfoBaris, InfoKolom, total, lebar, tinggi, x, TextMaks, sisa, KonvNMaks, KonvNPakai : integer; fleck, BinerMerah, BinerHijau, BinerBiru, CekBiner, BinerPesan, huruf1, huruf2, huruf3, BinerBaris, BinerKolom, pesan, AmbilNMaks, AmbilNPakai: string; begin ImageFile.Height:=ImageFile.Picture.Height ; ImageFile.Width:= ImageFile.Picture.Width; tinggi:=ImageFile.Height; lebar:=ImageFile.Width; BtnBacaPesan.Enabled:=True; //cek fleck for i:=0 to 7 do begin
merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canva s.Handle,i,0)); CekBiner:=CekBiner+(biner(biru))[8]+(bine r(hijau))[8]+ (biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck='@#$' then begin //ambil info baris BinerBaris:=''; for i:=8 to 15 do begin merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0)); BinerBaris:=BinerBaris+(biner(hijau))[8]+(b iner(merah))[8]; end; InfoBaris:=decimal(BinerBaris); //ambil info kolom BinerKolom:=''; for i:=16 to 23 do begin merah:=GetRValue(getpixel(ImageFile.Can vas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canv as.Handle,i,0)); BinerKolom:=BinerKolom+(biner(hijau))[8] +(biner(merah))[8]; end; InfoKolom:=decimal(BinerKolom); //ambil pesan dari gambar BinerPesan:=''; begin
total:=(ImageFile.Width*(infobaris1))+ InfoKolom +1; for j:=1 to ImageFile.Height - 1 do begin for i:=0 to ImageFile.Width-1 do begin inc(z); biru:=GetBValue(getpixel (ImageFile.Canvas.Handle,i,j)); hijau:=GetGValue(getpixel (ImageFile.Canvas.Handle,i,j)); merah:=GetRValue(getpixel (ImageFile.Canvas.Handle,i,j)); BinerBiru:=biner(biru); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); BinerPesan:=BinerPesan+copy(BinerBiru,8, 1)+ copy(binerhijau,8,1)+ copy(binermerah,8,1); if (j=InfoBaris) and (i=InfoKolom) then break; end; if (j=InfoBaris) and (i=InfoKolom) then break; end; n:=1; pesan:=''; for i:=1 to (round(length(BinerPesan)/8)) do begin inc(z); pesan:=pesan+chr(decimal(copy(BinerPesan ,n,8))); n:=n+8; end; MemoBacaPesan.Visible:=True; MemoBacaPesan.Lines.Text:=pesan; Screen.Cursor:=crdefault; end; TextMaks:=(lebar*(tinggi-1)*3) div 8; MemoBacaPesan.MaxLength := TextMaks; EditMaks.Text:=Format('%.0n', [TextMaks + 0.0]); x:=length(MemoBacaPesan.Lines.Text); EditPakai.Text:=Format('%.0n', [x + 0.0]); sisa:=TextMaks-x;
EditSisa.Text:=Format('%.0n', [sisa + 0.0]); end else begin MessageDlg('File gambar tidak berisi pesan, cari file yang lain!',mtError,[mbOK],0); ImageFile.Picture.Bitmap:=nil; BtnBukaGambar.Enabled:=True; BtnBacaPesan.Enabled:=False; exit; end; BtnBukaGambar.Enabled:=True; BtnBacaPesan.Enabled:=False; end; procedure TfrmBacaPesan.BtnBukaGambarClick(Send er: TObject); var NamaFile, pesan: string; flag : boolean; begin DialogBukagambar.Filter := 'Image File (*.bmp)|*.bmp'; DialogBukagambar.FilterIndex := 1; if DialogBukagambar.Execute then begin NamaFile := DialogBukaGambar.FileName; ImageFile.Picture.LoadFromFile(NamaFile); ImageFile.Height:=ImageFile.Picture.Height ; ImageFile.Width:=ImageFile.Picture.Width; tinggi:=ImageFile.Height; lebar:=ImageFile.Width; if (lebar<24) or (tinggi<2) then begin MessageDlg('File gambar harus lebar>=24 & tinggi>2, Cari file yang lain!', mtError,[mbOK],0); ImageFile.Picture.Bitmap:=nil; BtnBacaPesan.Enabled:=False; {MemoBacaPesan.Visible:=False; MemoBacaPesan.Lines.Clear; } exit; end; BtnBukaGambar.Enabled:=False; BtnBacaPesan.Enabled:=True; MemoBacaPesan.Visible:=False;
MemoBacaPesan.Lines.Clear; EditMaks.Clear; EditPakai.Clear; EditSisa.Clear; flag:=True; end; if flag=True then Begin CekGambar; end; end;
TombolMessageDlg:=MessageDlg('Keluar dari form Baca Pesan?',mtConfirmation,[mbYes,mbNo],0); if TombolMessageDlg = mrYes then frmBacaPesan.Close; end;
procedure TfrmBacaPesan.BtnKeTulisPesanClick(Sen der: TObject); var TombolMessageDlg: word; begin
Form About
TombolMessageDlg:=MessageDlg('Berpind ah ke form Tulis Pesan?',mtConfirmation,[mbYes,mbNo],0); if TombolMessageDlg= mrYes then begin frmTulisPesan.Show; with frmTulisPesan do begin ImageFile.Picture.Bitmap:=nil; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; MemoTulisPesan.Visible:=False; EditMaks.Enabled:=False; EditMaks.Color:=clSilver; EditSisa.Enabled:=False; EditSisa.Color:=clSilver; frmBacaPesan.Close; end; end else frmBacaPesan.Show; ImageFile.Picture.Bitmap:=nil; BtnBacaPesan.Enabled:=False; EditMaks.Clear; EditPakai.Clear; EditSisa.Clear; end; procedure TfrmBacaPesan.BtnCloseClick(Sender: TObject); var TombolMessageDlg: word; begin
end.
unit FormAbout; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TfrmAbout = class(TForm) Memo1: TMemo; BtnOk: TButton; GroupBox1: TGroupBox; procedure BtnOkClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmAbout: TfrmAbout; implementation {$R *.dfm} procedure Tfrmabout.BtnOkClick(Sender: TObject); begin frmAbout.Close; end; procedure TfrmAbout.FormCreate(Sender: TObject); var MyBitmap: TBitmap; begin
frmAbout.Width:=356; frmAbout.Height:=274; MyBitmap:=TBitmap.Create; MyBitmap.LoadFromFile('formaboutbg.bmp '); frmAbout.Brush.Bitmap:=MyBitmap; end; end.