• Tidak ada hasil yang ditemukan

Gambar 5-1 Implementasi Jendela Utama Didalam jendela utama, terdapat beberapa tombol, dan kotak dialog yang nanti akan berfungsi sesuai kegunaannya.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Gambar 5-1 Implementasi Jendela Utama Didalam jendela utama, terdapat beberapa tombol, dan kotak dialog yang nanti akan berfungsi sesuai kegunaannya."

Copied!
12
0
0

Teks penuh

(1)

BAB 5.

IMPLEMENTASI DAN PENGUJIAN

Pada bab lima ini akan dijelaskan mengenai implementasi dan pengujian dari aplikasi yang dibuat

5.1. Lingkungan Implementasi

Pada lingkungan implementasi ini, akan dijelaskan mengenai perangkat yang digunakan saat pembuatan aplikasi ini. Berikut merupakan spesifikasi perangkat keras (hardware) dan perangkat lunak (software) yang digunakan pada saat pembuatan aplikasi audio steganografi ini:

5.1.1 Perangkat Keras

Laptop HP EliteBook 840 Notebook PC dengan spesifikasi sebagai berikut :

∑ Processesor : Intel (R) Core (TM) i5-4210U CPU @1.70GHz 2.40 GHz

∑ RAM : 4.00 GB RAM .

∑ Display Mode : 1366 x 768

∑ Monitor : 14 inch

5.1.2 Perangkat Lunak

Laptop HP EliteBook 840 Notebook PC

∑ Sistem Operasi: Microsoft Windows 8.1 64 bit

∑ Microsoft Visual Studio 2012

5.2. Hasil Implementasi 5.2.1 Implementasi Program

Aplikasi ini dibuat menggunakan aplikasi Visual Studio 2012. Di bab ini juga akan menerangkan fungsi dan keterangan-keterangan mengenai aplikasi yang dibuat oleh penulis.

5.2.2 Implementasi Jendela Utama Aplikasi

pada saat pembuatan aplikasi audio steganografi ini:

5.1.1 Perangkat Keras

Laptop HP EliteBook 840 Notebook PC dengan spesifikasi sebagai berikut :

∑ Processesor : Intel (R) Core (TM) i5-4210U CPU @1.70GHz 2.40 GHz

∑ RAM : 4.00 GB RAM .

∑ Display Mode : 1366 x 768

∑ Monitor : 14 inch

5.1.2 Perangkat Lunak

Laptop HP EliteBook 840 Notebook PC

(2)

Gambar 5-1 Implementasi Jendela Utama

Didalam jendela utama, terdapat beberapa tombol, dan kotak dialog yang nanti akan berfungsi sesuai kegunaannya.

Tombol browse berguna untuk mencari file yang nantinya akan disisipkan dengan teks data. Tombol cari file ini hanya bisa untuk file

dalam format .wav saja. Fungsi aplikasi ini tidak akan berjalan bagaimana semestinya apabila User belum memilih fileyang akan diubah datanya.

Didalam aplikasi ini terdapat kotak dialog, kotak dialog pada

source file, menampilkan direktori mana fileyang sudah dipilih oleh User. Sedangkan kotak dialog pada hidden text, User menulis teks yang akan disisipkan pada file audio yang akan encode pada proses encode. Sedangkan dalam proses extract, akan keluar tulisan dari fileyang sudah di

encode.

Tombol HIDE MESSAGE, berisi proses encode yang mana jika User sudah memilih file yang akan di encode, menulis teks yang akan disisipkan, dan memilih fileyang akan disimpan.

Tombol EXTRACT MESSAGE, berisi proses decode yang mana jika User sudah memilih fileyang akan di decode.

5.2.3 Implementasi Cari File

Gambar 5-1 Implementasi Jendela Utama

Didalam jendela utama, terdapat beberapa tombol, dan kotak dialog yang nanti akan berfungsi sesuai kegunaannya.

Tombol browse berguna untuk mencari file yang nantinya akan disisipkan dengan teks data. Tombol cari file ini hanya bisa untuk dalam format .wav saja. Fungsi aplikasi ini tidak akan berjalan bagaimana semestinya apabila User belum memilih fileyang akan diubah datanya.

Didalam aplikasi ini terdapat kotak dialog, kotak dialog pada

source file, menampilkan direktori mana fileyang sudah dipilih oleh User. Sedangkan kotak dialog pada hidden text, User menulis teks yang akan disisipkan pada file audio yang akan encode pada proses encode.

(3)

Gambar 5-2 Implementasi Cari File

Setelah User mengklik tombol BROWSE, maka akan keluar jendela untuk mencari fileyang nantinya akan disisipkan dengan teks data. Tombol cari fileini hanya bisa untuk filedalam format .wav saja.

Berikut code untuk mendapatkan fileformat .wav :

private void GetFileName(FileDialog dialog, TextBox control,

bool useFilter) {

if (useFilter) { dialog.Filter = "WAV (*.wav)|*.wav"; }

if (dialog.ShowDialog(this) == DialogResult.OK) {

control.Text = dialog.FileName; }

}

5.2.4 Implementasi Menyisipkan Teks

Gambar 5-3 Implementasi Menyisipkan Teks Gambar 5-2 Implementasi Cari File

Setelah User mengklik tombol BROWSE, maka akan keluar jendela untuk mencari fileyang nantinya akan disisipkan dengan teks data. Tombol cari fileini hanya bisa untuk filedalam format .wav saja.

Berikut code untuk mendapatkan fileformat .wav :

private void GetFileName(FileDialog dialog, TextBox bool useFilter)

{

if (useFilter) { dialog.Filter = "WAV (*.wav)|*.wav" if (dialog.ShowDialog(this) == DialogResult.OK) {

control.Text = dialog.FileName; }

(4)

Setelah memilih file yang akan di encode, User menulis teks yang akan disisipkan dalam kotak dialog Hidden Text ini.

5.2.5 Implementasi Menyimpan File yang akan di Encode

Gambar 5-4 Implementasi Menyimpan File yang akan di Encode

Saat melakukan proses encode, user diminta untuk mengisi nama file yang akan dilakukan proses menyembunyikan pesan. File yang disimpan dalam format wav

5.2.6 Implementasi Encode File

Gambar 5-5 Implementasi Encode File

Button Hide Message adalah tombol untuk melakukan proses penyembunyian informasi. Jika pada proses encode ini proses dalam mencari file, menyisipkan teks dan menyimpan file yang akan di encode tidak diisi, maka akan keluar notifikasi sebagai berikut

Gambar 5-6 Notifikasi Belum Memilih File yang akan di Encode

Berikut code untuk melakukan proses encode

public void Hide(Stream messageStream, Stream keyStream) {

byte[] waveBuffer = new byte[bytesPerSample];

byte message, bit, waveByte;

5.2.6 Implementasi Encode File

Gambar 5-5 Implementasi Encode File

Button Hide Message adalah tombol untuk melakukan proses penyembunyian informasi. Jika pada proses encode ini proses dalam mencari file, menyisipkan teks dan menyimpan file yang akan di encode tidak diisi, maka akan keluar notifikasi sebagai berikut

(5)

int messageBuffer; //receives the next byte of the message or -1

int keyByte; //distance of the next carrier sample while ((messageBuffer = messageStream.ReadByte()) >= 0) {

//read one byte of the message stream

message = (byte)messageBuffer;

//for each bit in message

for (int bitIndex = 0; bitIndex < 8; bitIndex++) {

//read a byte from the key

keyByte = GetKeyValue(keyStream);

//skip a couple of samples

for (int n = 0; n < keyByte - 1; n++) {

//copy one sample from the clean stream to the carrier stream

sourceStream.Copy(waveBuffer, 0, waveBuffer.Length, destinationStream);

}

//read one sample from the wave stream

sourceStream.Read(waveBuffer, 0, waveBuffer.Length);

waveByte = waveBuffer[bytesPerSample - 1];

//get the next bit from the current message byte...

bit = (byte)(((message & (byte)(1 << bitIndex)) > 0) ? 1 : 0);

//...place it in the last bit of the sample if ((bit == 1) && ((waveByte % 2) == 0)) {

waveByte += 1; }

else if ((bit == 0) && ((waveByte % 2) == 1)) {

waveByte -= 1; }

waveBuffer[bytesPerSample - 1] = waveByte;

//write the result to destinationStream

destinationStream.Write(waveBuffer, 0, bytesPerSample);

} }

//copy the rest of the wave without changes

waveBuffer = new byte[sourceStream.Length -sourceStream.Position]; sourceStream.Read(waveBuffer, 0, waveBuffer.Length); destinationStream.Write(waveBuffer, 0, waveBuffer.Length); } {

//copy one sample from the clean stream to the carrier stream

sourceStream.Copy(waveBuffer, 0, waveBuffer.Length, destinationStream);

}

//read one sample from the wave stream sourceStream.Read(waveBuffer, 0, waveBuffer.Length);

waveByte = waveBuffer[bytesPerSample - 1]; //get the next bit from the current message byte...

bit = (byte)(((message & (byte)(1 << bitIndex)) > 0) ? 1 : 0);

//...place it in the last bit of the sample if ((bit == 1) && ((waveByte % 2) == 0)) {

waveByte += 1; }

else if ((bit == 0) && ((waveByte % 2) == 1)) {

(6)

private void btnHdn_Click(object sender, EventArgs e) {

keyfilepath =

"C:\\Users\\3013040625\\Downloads\\temp.txt"; //jangan dihapus Stream sourceStream = null;

FileStream destinationStream = null;

WaveStream audioStream = null;

//create a stream that contains the message, preceeded by its length

Stream messageStream = GetMessageStream();

//open the key file

Stream keyStream = new FileStream(keyfilepath,

FileMode.Open);

try

{

//how man samples do we need? long countSamplesRequired =

WaveUtility.CheckKeyForMessage(keyStream, messageStream.Length);

if (countSamplesRequired > Int32.MaxValue) {

throw new Exception("Message too long, or bad key! This message/key combination requires " + countSamplesRequired + " samples, only " + Int32.MaxValue + " samples are allowed.");

}

//if (rdoSrcFile.Checked)

//{ //use a .wav file as the carrier

sourceStream = new FileStream(txtSrcFile.Text,

FileMode.Open);

//} //else

//{ //record a carrier wave // frmRecorder recorder = new frmRecorder(countSamplesRequired);

// recorder.ShowDialog(this);

// sourceStream = recorder.RecordedStream; //}

this.Cursor = Cursors.WaitCursor;

//create an empty file for the carrier wave

destinationStream = new FileStream(txtDstFile.Text,

FileMode.Create);

//copy the carrier file's header

audioStream = new WaveStream(sourceStream, destinationStream);

if (audioStream.Length <= 0) {

throw new Exception("Invalid WAV file"); }

try {

//how man samples do we need? long countSamplesRequired = WaveUtility

WaveUtility.CheckKeyForMessage(keyStream, messageStream.Length); if (countSamplesRequired > Int32.MaxValue) {

throw new Exception("Message too long, or bad key! This message/key combination requires " + countSamplesRequired + " samples, only " + Int32.MaxValue + " samples are allowed."

}

//if (rdoSrcFile.Checked)

//{ //use a .wav file as the carrier

sourceStream = new FileStream(txtSrcFile.Text, FileMode.Open);

//} //else

//{ //record a carrier wave // frmRecorder recorder = new frmRecorder(countSamplesRequired);

(7)

//are there enough samples in the carrier wave? if (countSamplesRequired > audioStream.CountSamples) {

String errorReport = "The carrier file is too small for this message and key!\r\n"

+ "Samples available: " + audioStream.CountSamples + "\r\n"

+ "Samples needed: " + countSamplesRequired;

throw new Exception(errorReport); }

//hide the message

WaveUtility utility = new WaveUtility(audioStream, destinationStream);

utility.Hide(messageStream, keyStream); //test

}

catch (Exception ex) {

this.Cursor = Cursors.Default;

MessageBox.Show(ex.Message); }

finally

{

if (keyStream != null) { keyStream.Close(); }

if (messageStream != null) { messageStream.Close(); }

if (audioStream != null) { audioStream.Close(); }

if (sourceStream != null) { sourceStream.Close(); }

if (destinationStream != null) { destinationStream.Close(); }

this.Cursor = Cursors.Default; }

}

5.2.7 Implementasi Extract File

Gambar 5-7 Implementasi Extract File

Button Extract untuk melakukan extract pada file audio dan teks yang telah disisipkan. Dalam proses extract ini, User perlu menginput file yang akan di extract, jika tidak akan mendapat notifikasi sebagai berikut:

this.Cursor = Cursors.Default; MessageBox.Show(ex.Message); }

finally {

if (keyStream != null) { keyStream.Close(); }

if (messageStream != null) { messageStream.Close(); } if (audioStream != null) { audioStream.Close(); } if (sourceStream != null) { sourceStream.Close(); } if (destinationStream != null) {

destinationStream.Close(); }

this.Cursor = Cursors.Default; }

}

(8)

Gambar 5-8 Notifikasi Belum Memilih File yang akan di Extract

Berikut code untuk melakukan extractfile:

private void btnEct_Click(object sender, EventArgs e) {

//extract the message from the carrier wave if (txtSrcFile.Text.Length == 0)

{

errorProvider.SetError(txtSrcFile, "You forgot to choose a carrier file.");

}

//else if (txtHdnFile.Text.Length ==0) //{

// errorProvider.SetError(txtHdnFile, "You forgot to choose a key file.");

//} else

{

this.Cursor = Cursors.WaitCursor;

FileStream sourceStream = null;

WaveStream audioStream = null;

//create an empty stream to receive the extracted message

MemoryStream messageStream = new MemoryStream();

//open the key file

Stream keyStream = new FileStream(keyfilepath,

FileMode.Open);

try

{

//open the carrier file

sourceStream = new FileStream(txtSrcFile.Text,

FileMode.Open);

audioStream = new WaveStream(sourceStream);

WaveUtility utility = new WaveUtility(audioStream);

//exctract the message from the carrier wave

utility.Extract(messageStream, keyStream); messageStream.Seek(0, SeekOrigin.Begin);

txtHdnFile.Text = new

StreamReader(messageStream).ReadToEnd(); {

//extract the message from the carrier wave if (txtSrcFile.Text.Length == 0)

{

errorProvider.SetError(txtSrcFile, "You forgot to choose a carrier file.");

}

//else if (txtHdnFile.Text.Length ==0) //{

// errorProvider.SetError(txtHdnFile, "You forgot to choose a key file.");

//} else {

this.Cursor = Cursors.WaitCursor; FileStream sourceStream = null; WaveStream audioStream = null;

//create an empty stream to receive the extracted message

MemoryStream messageStream = new MemoryStream //open the key file

(9)

//}

}

catch (Exception ex) {

this.Cursor = Cursors.Default;

MessageBox.Show(ex.Message); }

finally

{

if (keyStream != null) { keyStream.Close(); }

if (messageStream != null) { messageStream.Close(); }

if (audioStream != null) { audioStream.Close(); }

if (sourceStream != null) { sourceStream.Close(); }

this.Cursor = Cursors.Default; }

} }

5.2.8 Implementasi Menghapus Kotak Dialog

Gambar 5-9 Implementasi Menghapus Kotak Dialog Tombol Clear berfungsi untuk menghapus semua kotak dialog

5.3. Hasil Pengujian

Hasil Pengujian dilakukan untuk memastikan apakah sistem yang dikembangkan sesuai dengan yang diharapakan. Metode yang digunakan untuk pengujian ini adalah metode Blackbox, yaitu metode yang menguji perangkat lunak dari segi fungsionalnya tanpa menguji dari sisi desain dan kode program. Pengujian dimaksudkan untuk mengetahui apakah fungsi-fungsi, masukan dan keluaran dari aplikasi tersebut sudah sesuai dengan spesifikasi yang dibutuhkan.

5.3.1 Skenario Uji Coba

Skenario pengujian dilakukan dengan memilih dari setiap pilihan yang ada pada aplikasi. Kemudian dilakukan pengujian dengan menekan tombol yang ada pada halaman tersebut. apakah tombol sudah sesuai

}

5.2.8 Implementasi Menghapus Kotak Dialog

Gambar 5-9 Implementasi Menghapus Kotak Dialog Tombol Clear berfungsi untuk menghapus semua kotak dialog

5.3. Hasil Pengujian

Hasil Pengujian dilakukan untuk memastikan apakah sistem yang dikembangkan sesuai dengan yang diharapakan. Metode yang digunakan untuk pengujian ini adalah metode Blackbox, yaitu metode yang menguji

(10)

dengan kegunaan yang diharapakan atau belum. Selain itu juga akan diuji fungsi dari aplikasi ini sesuai dengan tujuan pembuatan aplikasi ini.

Tabel 5-1 Skenario Uji Coba

ID UJI

Nama Uji Fungsi yang Diuji

Skenario Pengujian Hasil yang Diharapkan

1 Jendela Utama Proses Cari File

(BROWSE)

Mencari dan memuat file ke dalam aplikasi

File yang dipilih oleh User dimuat oleh aplikasi

2 Jendela Utama Proses Menyisipkan Teks

Menulis teks pada kotak dialog

Aplikasi membaca teks yang ditulis

3 Jendela Utama Proses Menyimpan File (BROWSE)

Membuat file baru yang akan disimpan

Ke direktori file untuk membuat file baru dengan format .wav

4 Jendela Utama Proses Encode (Hide Message)

Meng klik tombol HIDE MESSAGE

File audio yang sudah dipilih dan teks yang sudah ditulis pada kotak dialog hidden text, menghasilkan file baru sesuai dengan yang dibuat pada Save File As

5 Jendela Utama Proses Extract

Meng klik tombol EXTRACT

MESSAGE

File audio yang sudah di encode sebelumnya dipilih, lalu di extract, sehingga pada kotak dialog keluar teks yang ditulis sebelumnya

6 Jendela Utama Proses Clear Meng klik tombol CLEAR

Kotak dialog kosong, terhapus dengan sendiri nya

5.3.2 Hasil Uji Coba

Setelah melakukan pengujian secara menyeluruh terhadap aplikasi yang dikembangkan, maka dapat disimpulkan bahwa pengujian telah menunjukan hasil keluaran (output) yang sesuai dengan rancangan yang

3 Jendela Utama Proses Menyimpan File (BROWSE)

Membuat file baru yang akan disimpan

Ke direktori file untuk membuat file baru dengan format .wav

4 Jendela Utama Proses Encode (Hide Message)

Meng klik tombol HIDE MESSAGE

File audio yang sudah dipilih dan teks yang sudah ditulis pada kotak dialog hidden text, menghasilkan file baru sesuai dengan yang dibuat pada Save File As

5 Jendela Utama Proses Extract

Meng klik tombol EXTRACT

MESSAGE

File audio yang sudah di encode sebelumnya dipilih, lalu di extract, sehingga pada kotak

(11)

telah dibuat sebelumnya. Hasil dari pengujian ini dapat dikatakan bahwa aplikasi ini dapat berfungsi dengan baik dan seusai dengan kebutuhannya karena telah dibuktikan dengan skenario pengujian.

Tabel 5-2 Hasil Uji Coba

ID UJI Nama Uji Fungsi yang Diuji

Hasil Pengujian

1 Jendela Utama

Proses Cari File (BROWSE)

File dipilih berhasil di input dalam aplikasi 2 Jendela utama Proses Menyisipkan Teks Berhasil menampilkan teks yang sudah ditulis

3 Jendela Utama Proses Menyimpan File (BROWSE)

File berhasil dibuat

4 Jendela Utama

Proses Encode (Hide Message)

File berhasil dibuat

5 Jendela Utama

Proses Extract Teks berhasil muncul

6 Jendela Utama

Proses Clear Kotak dialog kosong

5.4. Analisa Hasil Pengujian

Setelah melakukan pengujian terhadap aplikasi yang dikembangkan, maka dapat disimpulkan bahwa file audio yang diproses harus lebih besar daripada teks yang akan di sembunyikan pesan nya. Berikut tabel hasil pengujian dengan 2 file audio yang berbeda :

Tabel 5 -3 Hasil Pengujian 1

Besar File Audio Jumlah Teks Hasil Analisa

88 KB 1-60 huruf (1 – 60 bytes)

Berhasil ter encode

88 KB >60 huruf Tidak berhasil encode utama Menyisipkan

Teks

teks yang sudah ditulis

3 Jendela Utama Proses Menyimpan File (BROWSE)

File berhasil dibuat

4 Jendela Utama

Proses Encode (Hide Message)

File berhasil dibuat

5 Jendela Utama

Proses Extract Teks berhasil muncul

6 Jendela Utama

Proses Clear Kotak dialog kosong

5.4. Analisa Hasil Pengujian

(12)

Tabel 5 -4 Hasil Pengujian 2

Besar File Audio Jumlah Teks Hasil Analisa

308 KB 1 - 190 huruf (<= 190 bytes)

Berhasil ter encode

Gambar

Gambar 5-1 Implementasi Jendela Utama
Gambar 5-2 Implementasi Cari File
Gambar 5-4 Implementasi Menyimpan File yang akan di Encode
Gambar 5-7 Implementasi Extract File
+6

Referensi

Dokumen terkait

Berikut ini yang kurang tepat tentang resusitasi cairan pada pasien luka bakar adalah: a.. Resusitasi yang cepat dan tepat dapat mencegah terjadinya gagal ginjal

Hasil penelitian menunjukkan bahwa penerapan model pembelajaran kontekstual dengan pendekatan Snowball Throwing dapat meningkatkan perkembangan karakter komunikatif dan

Pengaruh Psikoedukasi Keluarga Terhadap Harga Diri Penderita TBC sebelum perlakuan Dari penelitian yang sudah dilakukan tersebut, dapat diketahui bahwa sebelum

Variabel Mesin N Mean Variance Min. Mesin 5 mengalami kerusakan se- banyak 20 kali dalam periode 2012-2016 yang lebih banyak terjadi dibandingkan mesin 6 yaitu

Merekomendasikan penyelesaian masalah pelanggaran disiplin dan masalah etik dalam kehidupan profesi &amp; asuhan keperawatan &amp; asuhan kebidanan. Merekomendasikan

Pengalaman di sektor publik lebih dari 27 tahun dalam penugasan asurans yang berkaitan dengan pelaporan keuangan, kinerja, dan audit tujuan tertentu, serta.. penugasan

Berdasarkan selisih hasil rata-rata nilai posttest pada kelas eksperimen dan kelas kontrol serta hasil analisis dengan teknik uji t-tes, maka dapat disimpulkan