![]() |
Здрасте форумчане.вот пока выдалось свободное время, и перед тем когда мне наступит конец в связи с сессией, решил попробовать поделиться информацией по интересной для меня теме-стеганографии.Материалец не претендует на какую то мега-статью, скорее личные наблюдения или что.
тема навеяна этим /thread375855-miniduke.html и является продолжением этой http://bydood.blogspot.com/2013/05/hell-yeah.html т.к. доселе я не мог вразуметь как же так в мультимедиа заседают другие файлы.оказалось можно.хотя методика создана не для этого,но очевидно что тут применилась. В общем-то план таков: 1)немного истории,что являет собой стеганография, етц. 2)виды стеганографии( то что применим мы) 3)анализ застенографированных файлов. Писать будем на делфи, более-менее вменяемые куски кода нашел на делфи и С++ ТЕОРИЯ Итак стеганография- некий вид науки о сокрытой передаче информации, т.е. утаивании самого факта присутствия сообщения.Если криптография - это шифрование информации, то стеганография скрывает сам факт.обычно в данное время застеганографированная информация выглядит как нечто иное - к примеру файлы мультимедиа (изображения,звук,видео, даже исполняемые файлы). некоторые примеры стеганографии в допотопном мире можно прочесть на вики (довольно интересно я вам скажу ) современная стеганография подразделяется на несколько таких вот видов: 1)компьютерная стеганография: как правило сокрытие в зарезервированных полях файлов,пустых местах дисков,флешек етц, особенности файловых систем. (как пример- формат jpg имеет т.н. потоки данных (выделяет потоки для информации) т.е. можно создать отдельный поток в который записать сообщение- однако недостатки состоят в том что jpeg использует сжатие, во вторых объем файла увеличивается,в третьих производя манипуляции с изображением-можно угробить информацию) 2)современный наиболее распространенный вариант - внедрение информации в объекты вроде изображений,аудио,видео… Вызывает некоторые искажения в файлах-контейнерах, однако , как правило, не подвластно человеческому взгляду. Существует несколько алгоритмов, но самое простое и распростаненное для изображений - изменение последнего бита. суть методики в замене последнего бита файла-контейнера на биты нашей информации. рассмотрим на примере битмапа - у него там на одну точку приходится 3 байта- red , green, blue. и согласитесь что если будут точки допустим 135,58,44 и точки 136,58,45 то взгляд среднего (да любого) человека не отличит визуально. Попробуем написать разного рода код для сокрытия информации в: секторе, битмапе,тексте. 1)СЕКТОР. заранее определим нужные нам сектора, это могут быть также сектора заполненные подставными файлами, строки могут быть зашифрованы каким то не сложным алгоритмом.Подробно останавливаться не буду, т.к. тут все просто: открываем диск: Код:
CreateFile ('\\.\PhysicalDrive0',GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);идем на нужную позицию: Код:
SetFilePointer(f,10*512,nil,FILE_BEGIN);И запись в общем то как в обычный файл: Код:
WriteFile(f,somedata,sizeof(somedata),nw,nil);Тут напишем уже полноправную программку) Рассмотрим запись в «лоб» и замену битов. Заголовок битмапа=14 байтам + ширина*высоту - после этого смещения мы можем писать все что угодно,что бы при этом битмап открывался. но нужно создавать некий разброс если сообщение большое,потому что получается вот такой вот прикол: http://images.vfl.ru/ii/1370558000/8.../2478987_m.jpg http://images.vfl.ru/ii/1370557997/1.../2478981_m.jpg видим что изображение искажается. понятно что писать в ряд нельзя, что бы скрыть придется писать по 1-2 байта с определяющим знаком (для считывания) и через несколько байт\десятков байт, так что здесь описывать я подробно не буду. Заметил,что при дописывании в файле - рисунок не искажается (искажения идут снизу-вверх) http://images.vfl.ru/ii/1370557997/4.../2478982_m.jpg http://images.vfl.ru/ii/1370557998/5.../2478984_m.bmp что в целом может подойти как один из наипростейших методов. напишем тогда код алгоритм следующий: 1)открыть битмап 2)считать из хидера 2 параметр-размер битмапа (то есть получим нужное смещение) 3)сместиться на полученное смещение 4)записать строку с определенным идентификатором по считыванию назад 1)открыть битмап 2)считать из хидера 2 параметр 3)читать строку от начала конца (простите за тавтологию) до идентификатора 4)выдрать строку. имеем след. код: Код:
type bmpheader=packed recordСледующий метод-замена младших бит. алгоритм его работы таков: есть изображение 24 битов. 1 пиксель кодируется 3 каналами (=3 байтам) RGB меняя наименее значащий бит мы инкрементируем значение байта на 1. Сама методика считается простой, т.к. должны использоваться форматы данных без потерь.Как недостаток-любые манипуляции с файлом контейнером не допустимы.Как достоинства-простота, кол-во данных для внедрения. Естественно что обнаружить сокрытое сообщение закодированное таким методом можно только с помощью стегоанализа. если провести небольшие расчеты то можно подсчитать что каждая точка кодируется числом в диапазоне от 0 до 255 т.е. 3 байта на пиксел что составит 256^3 числа цветов. человеческий глаз различает около 4000 цветов\оттенков, так же человеческое зрение воспринимает лучше вариации зеленого цвета , по этому замену лучше проводить в синей или красной компоненте. окей и сейчас я начну писать как в этих симпотных книжках по делфи =^^= бросьте на форму: edit, label, 3 кнопочки, изображение, openpicturedialog, savepicturedialog что бы получилось примерно так: http://images.vfl.ru/ii/1370557998/7.../2478983_m.jpg у image cв-ва proportional и stretch ставим вtrue в диалогах убираем все кроме битмапки. и сразу пишем обработчики событий кнопочег Код:
// загружаем картинкуКод:
const процедура стеганографирования (нужные комментарии непосредственно в коде) Код:
procedure steanographthemall (BMP: TBitmap; Message: string);процедура извлечения Код:
procedure showmeyourself(BMP: TBitmap; var msg: string);я решил устроить просто небольшую фишку (если это вообще хоть кому-то интересно) я допустил ошибку в строке расшифровки, а именно вот тут Код:
Bit2:=Bit2 shl BC; // операции противополжны процедуре вышеМЕТОДЫ АНАЛИЗА как правило если это не такая студенческая поделка, как у меня, которую вскроет любая стегоаналитическая софтина, то методы атаки основаны на нехеровых мат. расчетах что мне объяснить не доступно ибо я не математик. если же это что то простое то обычно можно применить: прослушивание-просматривание файла известен пустой контейнер - например добавить шумы к изображению, проанализировать звуковой спектр в аудиофайле етц… я провел свое микроисследование этого же метода НЗБ вот что мы видим: http://images.vfl.ru/ii/1370557998/f.../2478985_m.jpg размер одинаков. а теперь засовываем в хекс редактор. http://images.vfl.ru/ii/1370557998/5.../2478986_m.jpg как можно наблюдать слева- зашированное, программа меняла последний бит картинки и ставила в соответствие 00 - 0 01 - 1 FF - 1 FE - 0 строчки снизу вверх, а так же в винде по-моему не как у людей RGB , а BGR. даа забыл указать, объемы скрываемых сообщений зависят от применяемых алгоритмов и обычно бывают ~ 1\5 от объема файла контейнера. ================================================== ============================================== вот и подошел момент истины что называется.Это такой миниквест если кому интересно(не только ж я себе мозги ебу). с помощью программки по НЗБ в этой картинке http://splashed.ucoz.ru/tomas.bmp зашифрован адрес на архив. а с помощью вот этого кода Код:
program Project1;всем спасибо за внимание. баклажанами не бросаться!) |
Пожалуй придется оставить сообщение, знаю, напишешь статью, она идет вниз, рейтинга просмотров почти нет, никто ничем не поинтересуется, не спросит, не предложит написать/добавить.
Почти не сталкивался с стеганографией поскольку это не было нужно, тема очень интересная, но её приходится использовать, как и искать в очень редких случаях, которые я практически за исключением основных не могу припомнить, - хотелось бы расширить область применения. DooD, эта статья - неплохое введение, но все её содержание больше относится к программированию на Dephi и ASM, что будет безусловно интересно читателем, но вероятно не при изучении стенографии. Так-же можно было-бы рассказать больше о используемых технологиях, структуре файлов, а не комментировать блоки кода подобным типом: Цитата:
Если вы будете писать продолжение, хотелось бы больше узнать о повседневном применении стенографии, ей обнаружении, и о том, как её применять что-бы никто и не думал что она используется, а она используется, и не просто так. |
2ХАМЕНА скажу,что я взял что то наиболее простое,потому что тема сложная,хорошие алгоритмы требуют математических знаний на высоком уровне. метод LSB подходит для множества форматов, однако опять же я взял bmp потому что это ОЧЕНЬ простой формат и тут не должно возникнуть больших сложностей с пониманием.
согласен что к оформлению отношусь небрежно,ну такой я а общие принципы применения я думаю не сильно важны или интересны,т.к. это может быть все что угодно,как шифрование для себя,так и обмен информацией между террористами. |
Цитата:
|
D00D , спасибо за статью , очень интересно почитать!
\\ до этого юзал так в консоли Код:
copy /b 1.jpg + 2.rar 3.jpg.было интересно узнать глубже про стенографию в целом! |
| Время: 20:00 |