Anda di halaman 1dari 7

17 November 2022 – PEMROSESAN CITRA DIGITAL | PENDIDIKAN KOMPUTER - FKIP ULM

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);

###Message untuk menyimpan pesan yang tersembunyi

pesan = 'ayam cendana mama adi';

###Membaca banyak pesan kemudian perkarakter itu dikali 8, karena 8 bit

len = length(pesan) * 8;
###Mengambil / mengonvert dari message menjadi ascii value dengan fungsi uint8

ascii_value = uint8(pesan);

###mengonvert desimal ke biner menggunakan fungsi dec2bin dan transpose

bin_message = transpose(dec2bin(ascii_value, 8));

###Mengambil binary digit perbaris/ tidak menurun kebawah

bin_message = bin_message(:);

###N adalah variabel untuk menyimpan length(banyak data/karakter yang ada didalam
message binary)

N = length(bin_message);

###Mengonvert perkarakter string binnary message tadi kedalam numeric

bin_num_message=str2num(bin_message);

output = img;

###Menginisasi tinggi dan lebar gambar secara menyeluruh disimpan kedalam variabel
height dan width

height = size(img, 1);

width = size(img, 2);

###Inisiasikan perulangan dengan embed_counter dimulai dari angka 1 (bits)

embed_counter = 1;

for i = 1 : height

for j = 1 : width

##Jika masih ada bit yang akan disematkan

if(embed_counter <= len)

##menemukan bit paling tidak signifikan dari piksel saat ini

LSB = mod(double(img(i, j)), 2);

##Menemukan apakah bit tersebut sama atau perlu diubah

temp = double(xor(LSB, bin_num_message(embed_counter)));


2
##Memperbarui output menjadi img + temp

output(i, j) = img(i, j)+temp;

##Menambahkan penghitung embed

embed_counter = embed_counter+1;

end

end

end

imwrite(output, 'stego_raihan.png');

Citra awal & Hasil citra stegano:

Citra berdimensi 512x512

Pesan yang terkandung didalamnya :


Dapat dilihat melalui workspace octave, atau diekstraksi melalui lanjutan source code
nomor 2 nanti

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

LSB = mod(double(stego_image(i, j)), 2);

##untuk mengekstrak bit paling tidak signifikan dari piksel saat ini

pesan_ekstrak = strcat(pesan_ekstrak, num2str(LSB));

##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

pesan_ekstrak = reshape(pesan_ekstrak, 8, []).';

nilai_ascii_diekstrak = bin2dec(pesan_ekstrak);

pesan_diekstrak = char(nilai_ascii_diekstrak.');

disp('Isi pesan tersembunyi:');

disp(pesan_diekstrak);

Hasil steganografi dari teman saya bernama Alfi yahya

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

##Jika masih ada bit yang akan disematkan

if(embed_counter <= len)

##menemukan bit paling tidak signifikan dari piksel saat ini

LSB = mod(double(img(i, j)), 2);

##Menemukan apakah bit tersebut sama atau perlu diubah

temp = double(xor(LSB, bin_num_message(embed_counter)));

##Memperbarui output menjadi img + temp

output(i, j) = img(i, j)+temp;

##Menambahkan penghitung embed

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.

Anda mungkin juga menyukai