LEMBAR PRAKTIKUM 9:
STEGANOGRAFI
NIM : 2210131210018
NAMA : Taufik Raihandani
TUJUAN PRAKTIKUM:
Peserta mampu memahami dan menerapkan Steganografi
AKTIVITAS
Jawablah pertanyaan berikut dengan benar dan tepat!
1. Buatlah source code untuk menerapkan Steganografi, kemudian terapkan pada sebuah
citra berukuran 512x512!
Jawab:
Source code:
pkg load image;
clear all;
clc;
img = imread('chica.png');
img = rgb2gray(img);
len = length(pesan) * 8;
###Mengambil / mengonvert dari message menjadi ascii value dengan fungsi uint8
ascii_value = uint8(pesan);
bin_message = bin_message(:);
###N adalah variabel untuk menyimpan length(banyak data/karakter yang ada didalam
message binary)
N = length(bin_message);
bin_num_message=str2num(bin_message);
output = img;
###Menginisasi tinggi dan lebar gambar secara menyeluruh disimpan kedalam variabel
height dan width
embed_counter = 1;
for i = 1 : height
for j = 1 : width
embed_counter = embed_counter+1;
end
end
end
imwrite(output, 'stego_raihan.png');
3
2. Buatlah Source code untuk bisa membaca isi pesan pada sebuah citra yang
terdapat pesan rahasia. Bertukarlah dengan teman kalian dengan citra mereka
yang sudah disisipkan pesan rahasia, tuliskan nama teman kalian yang kalian ajak
bertukar citra!
Jawab:
Source code:
Keterangan *Source code 2 harus tetap berlanjut dan pendefinisian inisialisasi
variabel lebih banyak pada source code pada nomor 1
##nomor 2
stego_image = imread('stego_alfi.png');
pesan_ekstrak = '';
for i = 1 : height
for j = 1 : width
##untuk mengekstrak bit paling tidak signifikan dari piksel saat ini
##untuk mengekstrak bit paling tidak signifikan dari piksel saat ini
##Jika panjang pesan yang diekstrak mencapai panjang pesan asli, maka akan
hentikan (break)
if length(pesan_ekstrak) == len
break;
end
end
##Jika panjang pesan yang diekstrak mencapai panjang pesan asli, maka akan
hentikan (break)
4
if length(pesan_ekstrak) == len
break;
end
end
nilai_ascii_diekstrak = bin2dec(pesan_ekstrak);
pesan_diekstrak = char(nilai_ascii_diekstrak.');
disp(pesan_diekstrak);
Berdimensi 512x512
Hasil pesan ekstraksi dari source code tersebut:
5
3. Jelaskan source code yang kalian buat pada nomor 1 dan 2, serta tampilkan isi
pesan rahasia teman kalian yang kalian ajak bertukar!
Jawab:
Penjelasan nomor 1:
● pesan = 'ayam cendana mama adi'; len = length(pesan) * 8; ascii_value =
uint8(pesan); bin_message = transpose(dec2bin(ascii_value, 8)); bin_message =
bin_message(:); Pesan yang akan disematkan diinisialisasi dan dihitung
panjangnya dalam bit. Pesan diubah menjadi nilai ASCII, kemudian diubah
menjadi representasi biner.
● N = length(bin_message); bin_num_message = str2num(bin_message); output =
img; height = size(img, 1); width = size(img, 2); embed_counter = 1; Variabel N
menyimpan panjang pesan biner. Pesan biner diubah menjadi bentuk numerik.
Output diinisialisasi sebagai gambar input (img). Variabel tinggi dan lebar gambar
dihitung.
for i = 1 : height
for j = 1 : width
embed_counter = embed_counter+1;
end
Terdapat loop untuk setiap piksel dalam gambar. Bit pesan disematkan ke
dalam LSB setiap piksel. Proses berhenti setelah semua bit pesan disematkan.
Kemudian disimpan dengan nama stego_raihan.png
Penjelasan nomor 2
6
Membaca Gambar Stego: Kode membaca gambar stego yang merupakan hasil dari proses
penyisipan pesan ke dalam gambar.
Inisialisasi Variabel dan Loop Ekstraksi: Variabel pesan_ekstrak diinisialisasi untuk
menyimpan bit-bit yang diekstrak. Dilakukan loop untuk iterasi melalui setiap piksel
dalam gambar stego.
Ekstraksi Bit Paling Tidak Signifikan (LSB): Dari setiap piksel, bit paling tidak
signifikan (LSB) diekstrak, yang merupakan bagian dari pesan yang tersembunyi. Bit
tersebut ditambahkan ke dalam variabel pesan_ekstrak.
Pengecekan Panjang Pesan yang Diekstrak: Diperiksa apakah panjang pesan yang
diekstrak sudah mencapai panjang pesan asli yang dihitung saat penyisipan pesan. Jika
panjang pesan yang diekstrak sudah mencapai panjang yang diinginkan, proses ekstraksi
dihentikan.
Reshape dan Konversi ke ASCII: Bit-bit yang diekstrak diubah bentuk menjadi matriks,
dengan setiap baris mewakili 8 bit (sebuah karakter ASCII). Matriks tersebut dikonversi
menjadi nilai ASCII menggunakan fungsi bin2dec.
Konversi ASCII ke Karakter dan Tampilan Pesan: Nilai-nilai ASCII yang diperoleh
diubah kembali menjadi karakter. Pesan yang diekstrak ditampilkan ke layar.