Posted by
gie
| Posted in
tugas
Kelompok :
- Yugi Safari Nurhakim (50408890)
- Priska Setiyaji (50408659)
Saya akan membahas mengenai pengolahan citra, khususnya steganografi. Wikipedia : 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”.
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:
- Format image : bitmap (bmp), gif, pcx, jpeg, dll.
- Format audio : wav, voc, mp3, dll.
- Format lain : teks file, html, pdf, dll.
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.
Sekarang saya akan membahas mengenai tugas yang saya buat, yaitu steganografi untuk menyembunyikan suatu gambar dalam gambar lain. Yang pertama harus dilakukan adalah membuat interface aplikasi dengan menggunakan matlab. Berikut adalah desain interface aplikasi yang saya buat :
Selanjutnya kita harus menambahkan script agar interface diatas dapat berfungsi menjadi aplikasi steganografi. Berikut adalah potongan script yang digunakan :
Script untuk memilih cover image:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
lsb=1;
[handles.cfilename,handles.cpathname] = uigetfile( {'*.jpg';'*.png';'*.bmp';'*.*'}, ...
'Select cover image');
axes(handles.axes1);
I=imread([handles.cpathname handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname handles.cfilename]);
val_red=I(:,:,1);
if handles.rad2==1
emb=zeros(3,7);
emb(1,:)=bitget(val_red(1,50:56),lsb);
emb(2,:)=bitget(val_red(1,57:63),lsb);
emb(3,:)=bitget(val_red(1,64:70),lsb);
emb_double=bi2de(emb);
emb=char(emb_double);
emb=emb';
if ~strcmp(emb,'yes')
axes(handles.axes1);cla
errordlg(['No hidden image in ' handles.cfilename],'Select another Image');
else
image(I),axis off
set(handles.pushbutton3,'Enable','on');
end
else
image(I),axis off
image_height=imageinfo_cover.Height;
image_width=imageinfo_cover.Width;
handles.equ=((image_height-1)*(image_width-mod(image_width,8)))/8;
set(handles.pushbutton2,'Enable','on');
end
guidata(hObject, handles);
Script untuk memilih secret image:
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if handles.rad2==1
else
[handles.sfilename handles.spathname]=uigetfile({'*.jpg';'*.png'},'Select an Image');
imageinfo_cover=imfinfo([handles.spathname handles.sfilename]);
image_height=imageinfo_cover.Height;
image_width=imageinfo_cover.Width;
equ=image_width*image_height;
if equ <=handles.equ
I=imread([handles.spathname handles.sfilename]);
set(handles.pushbutton3,'Enable','on');
axes(handles.axes2);
image(I);axis off
else
errordlg('Select another Image','Image too big');
end
guidata(hObject, handles);
end
Script untuk menyembunyikan dan mengembalikan gambar :
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if handles.rad1==1
lsb=1;
I=imread([handles.cpathname handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname handles.cfilename]);
image_height=imageinfo_cover.Height;
image_width=imageinfo_cover.Width;
val_red=I(:,:,1); %get the red color matrix
I_sec=imread([handles.spathname handles.sfilename]);
imageinfo_sec=imfinfo([handles.spathname handles.sfilename]); %get information of secret image
i_sec_height=imageinfo_sec.Height; % secret image height
i_sec_width=imageinfo_sec.Width; % secret image width
val_red=double(val_red);
%hide the secret image height
i_sec_height_bin=de2bi(i_sec_height,16);
val_red(1,1:16)=bitset(val_red(1,1:16),1,i_sec_height_bin);
%hide the secret image width
i_sec_width_bin=de2bi(i_sec_width,16);
val_red(1,17:32)=bitset(val_red(1,17:32),1,i_sec_width_bin);
%hide an identity, that this image has a secret image.
emb=('yes');
emb_bin=de2bi(double(emb));
val_red(1,50:56)=bitset(val_red(1,50:56),lsb,emb_bin(1,1:7));
val_red(1,57:63)=bitset(val_red(1,57:63),lsb,emb_bin(2,1:7));
val_red(1,64:70)=bitset(val_red(1,64:70),lsb,emb_bin(3,1:7));
I(:,:,1)=val_red;
i_sec_length=i_sec_height*i_sec_width;
I_sec_bin=zeros(i_sec_length*3,8);
I_sec_bin=de2bi(double(I_sec)); %convert the secret image to binary
Ipix_counter=1; %set a counter for the pixels
len=mod(image_width,8);
len=image_width-len;
for count_hi=2:image_height
count_wi=1;
for count_wi=1:8:len-8
val_red(count_hi,count_wi:count_wi+7)=...
bitset(val_red(count_hi,count_wi:count_wi+7),1,I_sec_bin(Ipix_counter,:));
Ipix_counter=Ipix_counter+1;
if Ipix_counter>i_sec_length*3
break;
end
end
if Ipix_counter>i_sec_length*3
break;
end
end
I(:,:,1)=val_red;
[filename, pathname] = uiputfile('.png', 'Save Image as');
imwrite(I,[pathname filename ],'png');
set(handles.pushbutton3,'Enable','off');
set(handles.pushbutton2,'Enable','off');
axes(handles.axes1);cla
axes(handles.axes2);cla
msgbox(['The secret image ' handles.sfilename ' is in ' filename]);
else
%case 2:Dercyption(Reocver the secret image from cover image)
lsb=1;
I=imread([handles.cpathname handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname handles.cfilename]);%cover image information
image_height=imageinfo_cover.Height; %cover image height
image_width=imageinfo_cover.Width; %cover image width
val_red=I(:,:,1); %get the red color matrix
%extract the secret image height and width from 1st 32pixel of cover image
i_sec_height=bi2de(bitget(double(val_red(1,1:16)),1));
i_sec_width=bi2de(bitget(double(val_red(1,17:32)),1));
i_sec_length=i_sec_height*i_sec_width;
I_sec_bi=zeros(i_sec_length*3,8);%initialize a zero matrix
Ipix_counter=1; %counter for pixels
len=mod(image_width,8);
len=image_width-len;
for count_hi=2:image_height
count_wi=1;
for count_wi=1:8:len-8
I_sec_bi(Ipix_counter,1:8)=...
bitget(val_red(count_hi,count_wi:count_wi+7),1);
Ipix_counter=Ipix_counter+1;
if Ipix_counter>i_sec_length*3
break;
end
end
if Ipix_counter>i_sec_length*3
break;
end
end
image1=reshape(bi2de(I_sec_bi),i_sec_height,i_sec_width,3);
image1=uint8(image1);
rn=num2str(rand(1,1));
imwrite(image1,[num2str(rn(3:end)) '.png'],'png');
axes(handles.axes2);
image(image1);axis off
msgbox(['The image ' rn(3:end) '.png is extracted from ' handles.cfilename ' ,it is in your current directory']);
end
Script untuk radio button :
function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to uipanel1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
switch get(hObject,'Tag') % Get Tag of selected object
case 'radiobutton1'
handles.rad1=1;
handles.rad2=0;
guidata(hObject, handles);
% code piece when radiobutton1 is selected goes here
axes(handles.axes1);cla
axes(handles.axes2);cla
set(handles.pushbutton3,'String','Hide');
set(handles.pushbutton3,'Enable','off');
set(handles.pushbutton2,'Enable','off');
set(handles.pushbutton1,'Enable','on');
case 'radiobutton2'
% code piece when radiobutton2 is selected goes here
% ...
handles.rad2=1;
handles.rad1=0;
guidata(hObject, handles);
axes(handles.axes1);cla
axes(handles.axes2);cla
set(handles.pushbutton3,'String','Recover');
set(handles.pushbutton3,'Enable','off');
set(handles.pushbutton2,'Enable','off');
set(handles.pushbutton1,'Enable','on');
end
Menyembunyikan Gambar :
Setelah interface dan script siap, kita jalankan program yang telah dibuat. Berikut adalah tampilan awal saat program dijalankan :
Untuk menyembunyikan gambar dalam gambar lainnya, pertama-tama kita pilih radio button “Hide Image”, lalu untuk memasukkan gambar yang akan menjadi media yang menyembunyikan gambar lainnya, pilih button Select Cover Image. Untuk memasukkan gambar yang akan disembunyikan, pilih button Select Secret Image.
Setelah kedua gambar dimasukkan, maka lakukan steganografi dengan menekan button “Hide”.
Selanjutnya User diminta untuk menyimpan gambar yang sudah disisipi gambar rahasia.
Jika proses steganografi sukses, maka akan muncul pesan seperti dibawah ini :
Mengembalikan gambar yang disembunyikan
Selain menyembunyikan, aplikasi yang saya buat juga dapat mengekstrak atau mengembalikan kembali gambar yang telah disembunyikan sebelumnya. Caranya, pilih radio button “Recover Image”, lalu pilih gambar yang telah disisipi gambar rahasia dan terakhir pilih button “Recover”.
Jika proses pengembalian berhasil maka gambar yang telah disembunyikan sebelumnya akan ditampilkan kembali.
14 Juni 2012 pukul 21.20
based on the above article, the research could be a reference link below
http://repository.gunadarma.ac.id/bitstream/123456789/1094/1/50406655.pdf
thank you
10 Juni 2016 pukul 02.19
Asslamualaikum ? boleh saya minta scriptnya? hehe
viki.trinanda27@gmail.com