Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра БІТ
ЗВІТ
до лабораторної роботи №3
з дисципліни:
«Методи і засоби стеганографії»
на тему:
«Стеганографічні методи приховування
інформації в аудіофайлах»
Львів - 2013
Мета
Навчитися приховувати інформацію в аудіофайлах з розширенням .wav різними стеганографічними методами (наприклад метод НЗБ) , використовуючи середовище програми Matlab.
Хід роботи
1.Маємо контейнер у вигляді аудіофайлу та повідомлення у вигляді тексту.
2. Аналізуємо контейнер на можливість вбудовування в нього повідомлення. Тобто обчислюємо кількість інформації , яку можна вбудувати в найменш значущі біти. Також обчислюємо ,скільки біт необхідно для зберігання максимально можливого розміру файла.
3.Після отримання підтвердження , що у контейнер можна вбудувати повідомлення, приховуємо повідомлення у НЗБ контейнера. При цьому перевіряємо, чи не перевищує файл який ми вбудовуємо максимально допустимий розмір.
4. При вбудовуванні в аудіофайли секретного повідомлення, ми розбиваємо аудіофайл на послідовність відліків , потім кожен відлік переводимо у двійкове представлення і міняємо НЗБ в певних відліках, де це буде найменш помітно для людського вуха..
Аналогічним способом буде відбуватися видобування повідомлення зі заповненого контейнера:
1.Ми вже знаємо, що у перших бітах цього контейнера міститься інформація про розмір прихованого файлу.
2.Обчислюємо кількість інформації, яка може бути прихована.
3.Видобуваємо саме початкове зображення, виділяємо найменш значущі біти.
4.Виділяємо байти з прихованою інформацією,виділяємо найбільш значущі біти.
5.Після того, як отримаємо прямокутний масив бітів, записуємо послідовність даних в файл. Таким чином ми відновили вихідне секретне повідомлення.
Лістинг програми для вбудовування
f = fread(fopen('audio.wav'));
n = fread(fopen('text.doc'));
fclose all;
f_bin = dec2bin(f);
n_bin = dec2bin(n);
fBytesMax = size(f, 1)/8;
fRankMax = ceil(log2(fBytesMax));
nRankMax = ceil(log2(n));
nBitsSize = size(n, 1);
nRankSize = size(dec2bin(nBitsSize), 2);
if nBitsSize > fBytesMax
temp = 'Too big message'
else
a(1 : fRankMax) = dec2bin(0); % Holds mBitsSize binary representation in lower rank bits
a(fRankMax-nRankSize+1 : end) = dec2bin(nBitsSize);
k = 1;s = 512; % To prevent header modification
for e=(s + 1):1:(s + fRankMax)
f_bin(e, 8) = a(k); % Writing message length in bits into container
k = k + 1;
end
for i=1:1:nBitsSize
x = i*8 - 7 + s + fRankMax; % Position of bit to rewrite
for j=0:1:7 % Displacement
f_bin(x+j, 8) = n_bin(i, j+1); % Encoding process itself
end
end
fwrite(fopen('stego_audio.wav','w'),bin2dec(f_bin));
fclose all;
clear all;
end
Лістинг програми для видобування
f = fread(fopen('stego_audio.wav'));
fclose all;
f_bin = dec2bin (f);
fBytesMax = size(f, 1)/8;
fRankMax = ceil(log2(fBytesMax));
mBitsSize(1:fRankMax) = dec2bin(0);
t = 1; s= 512;
for e=(s+ 1):1:(s + fRankMax)
mBitsSize(t) = f_bin(e, 8);
t = t + 1;
end
mBitsSize = bin2dec(mBitsSize);
for i=1:1:mBitsSize
x = i*8 - 7 + fRankMax + s;
for j=0:1:7
m_bin(i, j+1) = f_bin(x+j, 8);
end
end
fwrite(fopen('textrenew2.doc','w'), bin2dec(m_bin));
fclose all;
clear all;
Висновок
На цій лабораторній роботі я навчився застосовувати стеганографічний метод НЗБ для вбудовування повідомлення в аудіофайл з розширенням .wav секретного текстового повідомлення.