Всем привет. Решил всё-таки выложить исходники программы по стеганографии. Приложение INFINPIC(information in picture) предназначено для стеганографического сокрытия данных в графических файлах форматов BMP, PNG с помощью метода относительной замены величин коэффициентов дискретно-косинусного преобразования.
Приложение кодирует,декодирует информацию в изображения. Также возможны сравнение изображений и "очистка" изображения(если вдруг есть информация закодированная, чтобы она была некорректно раскодирована).
Метод относительной замены величин коэффициентов дискретно-косинусного преобразования (ДКП) (метод Коха и Жао). Один из наиболее распространенных на сегодня методов сокрытия конфиденциальной информации в частотной области изображения заключается в относительной замене величин коэффициентов ДКП. На начальном этапе первичное изображение разбивается на блоки размерностью 8×8 пикселей. ДКП применяется к каждому блоку, в результате чего получают матрицы 8×8 коэффициентов ДКП, которые зачастую обозначают Ωb(υ,ν), где b – номер блока контейнера С, a (υ,ν)– позиция коэффициента в этом блоке. Каждый блок при этом предназначен для сокрытия одного бита данных. Было предложено две реализации алгоритма: псевдослучайно могут выбираться два или три коэффициента ДКП. Рассмотрим первый вариант. Во время организации секретного канала абоненты должны предварительно договориться о двух конкретных коэффициентах ДКП из каждого блока, которые будут использоваться для сокрытия данных. Зададим данные коэффициенты их координатами в массивах коэффициентов ДКП: (υ1, ν1) и (υ2, ν2). Кроме этого, указанные коэффициенты должны отвечать косинус-функциям со средними частотами, что обеспечит скрытость информации в существенных для зрительной системы человека областях сигнала, к тому же информация не будет искажаться при JPEG-компрессии с малым коэффициентом сжатия. Непосредственно процесс сокрытия начинается со случайного выбора блока Сb изображения, предназначенного для кодирования b-го бита сообщения. Встраивание информации осуществляется таким образом: для передачи бита "0" стремятся, чтобы разница абсолютных значений коэффициентов ДКП превышала некоторую положительную величину, а для передачи бита "1" эта разница делается меньшей по сравнению с некоторой отрицательной величиной. Таким образом, первичное изображение искажается за счет внесения изменений в коэффициенты ДКП, если их относительная величина не отвечает скрываемому биту. Чем больше значение Р, тем стеганосистема, созданная на основе данного метода, является более стойкой к компрессии, однако качество изображения при этом значительно ухудшается. После соответствующего внесения коррекции в значения коэффициентов, которые должны удовлетворять неравенству, проводится обратное ДКП. Для извлечения данных, в декодере выполняется аналогичная процедура выбора коэффициентов, а решение о переданном бите принимается в соответствии со следующим правилом... Достоинство метода Коха-Жао: устойчивость к большинству известных стеганоатак, в том числе к атаке сжатием, к аффинным преобразованиям, геометрическим атакам. Недостатки метода: 1) низкая пропускная способность: 64 пикселя; 64 байта контейнера несут 1 бит информации; 2) некоторые блоки 8*8 слабо приспособлены к встраиванию данных, а именно: - блоки с резкими перепадами яркости содержат большие абсолютные значения в ВЧ области, что может привести к очень большим искажениям при встраивании информации; - монотонные изображения содержат в НЧ и СЧ области, как правило, нулевые компоненты. Модификация СЧ области приведет к внесению видимых искажений. [6] Данный метод будем использовать при разработке программы для сокрытия информации в изображениях форматов BMP, PNG, т.к. метод Коха и Жао обладает существенным достоинством, описанным выше. Недостаток низкой пропускной способности метода было решено исправить путем выбора на начальном этапе размерности блоков (осуществим разбиение изображения не только 8×8 пикселей, но и 4×4, 2×2).
В приложении есть некоторые недостатки, но буду рад выслушать Вашу критику,какие-либо пожелания. Если будет у кого-нибудь желание отредактировать,отрефакторить, буду признателен.
>>42407 Попытался перекомпилировать: >диск:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe INFINPIC.sln Софтина сбилдилась, и прога запустилась на win32, но дальше она просит .NET Framework 4.5...
Framework 4.5 на ХР не поставится! Если на XP не запускается, значит нет обратной совместимости...
>45145 Как это не нужно? Как это, блядь, не нужно? Значит надо, чтобы было нужно! >>45144 >Ну и как это билдить? Выше, уже была описана - строчка для компиляции: >>42410 >диск:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe INFINPIC.sln У меня, тогда, не получилось... Теперь, распишу реально-рабочий способ ко-ко-ко-нпеляции: 1. Программа просит .NET Framework 4.5 и компилируется в x64-версию, которая "не является приложением win32" 2. Но всё-же, я попытаюсь скомпилировать софтину на Windows XP с .NET Framework 4.0, при помощи MSBuild.exe. 3. Качаю исходник с github: https://github.com/Fyzek/INFINPIC -> "Clone or download" -> "download zip" 4. распаковываю zip-архив. 5. Вижу файлы проекта. Основная программа - в папке KochZhao. Там есть две папки - "bin" и "obj", с уже скомпилированными exe-шниками, которые хуёво пашут на xp, так как являются x64-прогами, а не win32 (x86). 6. Сношу нафиг папку "obj", потому что она не нужна. 7. Сношу нафиг папку "bin/Release" - потому что тоже не нравится чё-т. 8. Вижу в папке "bin/Debug" - какие-то интересные файлы. Решил не сносить её, вдруг там библиотеки?.. 9. Вернулся в самое начало, в папку, где лежит INFINPIC.sln. Создал там compile.cmd с текстом: set fdir=%WINDIR%\Microsoft.NET\Framework set msbuild=%fdir%\v4.0.30319\msbuild.exe %msbuild% INFINPIC.sln pause 10. Сохранил, запустил. Результат: Предупреждений: 19 Ошибок: 0 Затраченное время: 00:00:06.82 11. Иду в папку "KochZhao". И вижу, что появилась папка "obj" в ней, и папка "Debug", внутри. 12. Открываю её... И вижу... Среди кучи всякого говна какого-то... Рабочий x86, win32 exe-шник INFINPIC.exe! 13. Запускаю... Сразу - появляется 4 папки: "Декодирование", "Кодирование", "Очистка изображений", "Сравнение изображений". 14. Судя по тестам - софтина работает без выебонов. Пикрил.
>>45156 >Судя по тестам - софтина работает без выебонов. Пикрил. Всё-же медленно пашет. Ключи простые - легко подобрать. Вот эти вот папки, ебучие, с датами - каскадом, бля, создаются, одна внутри другой - что загромождает pathway. И как же долго вайпается рандомом пикча. Пиздец просто. Почему бы не потереть инфу - шустрейшим LSB? Просто один бит, для каждого субпикселя, рандомно, либо инвертировать, либо не инвертировать, чтобы эти вот коэффициенты не вычислять по три часа... Как-то так это можно сделать: >Random rnd = new Random(); >for(int i = 0; i<10; i++){//for 10 bytes > int byte_value = rnd.Next(0,256); //generate random byte > //then generate random int in range [0, 1], and XOR byte value on this. > Console.WriteLine("byte_value: "+byte_value+", changed: "+(byte_value ^ rnd.Next(0, 2))); >}
>>45157 Заебенил свой standalone зашумлятор PNG-шек, в одном ".cs"-файле. Конпелируется при помощи csc.exe. Вот код, если кому надо: https://rextester.com/USHMS79060
Приложение кодирует,декодирует информацию в изображения. Также возможны сравнение изображений и "очистка" изображения(если вдруг есть информация закодированная, чтобы она была некорректно раскодирована).
Метод относительной замены величин коэффициентов дискретно-косинусного преобразования (ДКП) (метод Коха и Жао).
Один из наиболее распространенных на сегодня методов сокрытия конфиденциальной информации в частотной области изображения заключается в относительной замене величин коэффициентов ДКП.
На начальном этапе первичное изображение разбивается на блоки размерностью 8×8 пикселей.
ДКП применяется к каждому блоку, в результате чего получают матрицы 8×8 коэффициентов ДКП, которые зачастую обозначают Ωb(υ,ν), где b – номер блока контейнера С, a (υ,ν)– позиция коэффициента в этом блоке. Каждый блок при этом предназначен для сокрытия одного бита данных.
Было предложено две реализации алгоритма: псевдослучайно могут выбираться два или три коэффициента ДКП. Рассмотрим первый вариант.
Во время организации секретного канала абоненты должны предварительно договориться о двух конкретных коэффициентах ДКП из каждого блока, которые будут использоваться для сокрытия данных.
Зададим данные коэффициенты их координатами в массивах коэффициентов ДКП: (υ1, ν1) и (υ2, ν2). Кроме этого, указанные коэффициенты должны отвечать косинус-функциям со средними частотами, что обеспечит скрытость информации в существенных для зрительной системы человека областях сигнала, к тому же информация не будет искажаться при JPEG-компрессии с малым коэффициентом сжатия.
Непосредственно процесс сокрытия начинается со случайного выбора блока Сb изображения, предназначенного для кодирования b-го бита сообщения. Встраивание информации осуществляется таким образом: для передачи бита "0" стремятся, чтобы разница абсолютных значений коэффициентов ДКП превышала некоторую положительную величину, а для передачи бита "1" эта разница делается меньшей по сравнению с некоторой отрицательной величиной.
Таким образом, первичное изображение искажается за счет внесения изменений в коэффициенты ДКП, если их относительная величина не отвечает скрываемому биту. Чем больше значение Р, тем стеганосистема, созданная на основе данного метода, является более стойкой к компрессии, однако качество изображения при этом значительно ухудшается.
После соответствующего внесения коррекции в значения коэффициентов, которые должны удовлетворять неравенству, проводится обратное ДКП.
Для извлечения данных, в декодере выполняется аналогичная процедура выбора коэффициентов, а решение о переданном бите принимается в соответствии со следующим правилом...
Достоинство метода Коха-Жао: устойчивость к большинству известных стеганоатак, в том числе к атаке сжатием, к аффинным преобразованиям, геометрическим атакам.
Недостатки метода:
1) низкая пропускная способность: 64 пикселя; 64 байта контейнера несут 1 бит информации;
2) некоторые блоки 8*8 слабо приспособлены к встраиванию данных, а именно:
- блоки с резкими перепадами яркости содержат большие абсолютные значения в ВЧ области, что может привести к очень большим искажениям при встраивании информации;
- монотонные изображения содержат в НЧ и СЧ области, как правило, нулевые компоненты. Модификация СЧ области приведет к внесению видимых искажений. [6]
Данный метод будем использовать при разработке программы для сокрытия информации в изображениях форматов BMP, PNG, т.к. метод Коха и Жао обладает существенным достоинством, описанным выше. Недостаток низкой пропускной способности метода было решено исправить путем выбора на начальном этапе размерности блоков (осуществим разбиение изображения не только 8×8 пикселей, но и 4×4, 2×2).
В приложении есть некоторые недостатки, но буду рад выслушать Вашу критику,какие-либо пожелания. Если будет у кого-нибудь желание отредактировать,отрефакторить, буду признателен.
Ссылка на гитхаб:
https://github.com/Fyzek/INFINPIC