Stegopy — Инструмент Стеганографии Lsb На Python



Предисловие Недавно я заметил, что на моем форуме люди заинтересовались темой стеганографии различных текстов в изображениях, mp3-файлах и видео.

И тогда у меня возникла идея написать собственный скрипт для стеганографии текста в изображениях.

Скажу сразу, что я никогда раньше не сталкивался с написанием подобных инструментов для стеганографии.

Прежде чем познакомиться со стеганографией LSB, я рассмотрел и другие методы, точнее, придумал свой.

Но придумать что-то свое сил не хватило, поэтому решил погуглить: младший бит — метод стеганографии, при котором младшие биты одного из цветов RGB в пикселе заменяются битами закодированного текста.

Затем я познакомился с библиотекой Pillow для работы с изображениями и Криптографией.

Второе, в моем случае, было нужно для создания DES-шифрования, которое впоследствии побитно закодировалось бы в изображение.



Кодирование

Свое детище я выложил на GitHub, поэтому для дальнейшей работы со StegoPy нам нужно будет просто клонировать проект с GitHub:
  
  
   

> git clone https://github.com/securityhigh/StegoPy > cd StegoPy > pip3 install -r requirements.txt > python3 stegopy.py



StegoPy — инструмент стеганографии LSB на Python

Однако в плане установки все как обычно.

Теперь давайте посмотрим на синтаксис команд запуска.



> python3 stegopy.py -e in.jpg data.txt

Этой командой мы закодируем текст из файла данные.

txt изображать in.jpg Но перед кодированием у нас спросят баланс, который может быть от 1 до 4. Это как раз одна из самых интересных вещей в программе.

Файл в формате .

jpg

StegoPy — инструмент стеганографии LSB на Python

Файл данных.

txt это личное сообщение Баланс — это количество младших битов, участвующих в стеганографии.

Оно варьируется от 1 до 4. Соответственно, чем больше баланс, тем:

  1. Меньше пикселей будет задействовано в кодировании
  2. Более заметные изменения в цветовых каналах
Отсюда можно сделать вывод, что чем меньше баланс, тем выше достоверность стеганографии и она будет незаметна для человеческого глаза.

Еще одним важным фактором является то, что меняется только синий канал, оттенки которого наименее заметны нашему глазу.

Как только мы определились с балансом, наш скрипт создаст два дополнительных файла:

  • out.png — изображение с закодированным текстом
  • key.dat — файл с ключом, необходимым для расшифровки
Файл out.png

StegoPy — инструмент стеганографии LSB на Python

Файл Key.dat 1$960$gxvZH4Q8Gq2qLGeA1aSCXIPRljJlJbihsvSBdzx-wSM=

StegoPy — инструмент стеганографии LSB на Python



Декодирование

Синтаксис команды в нашем случае такой:

> python3 .

/stegopy.py -d out.png

Затем нас спросят ключ, который мы получили при кодировании.

После декодирования расшифрованный текст будет сохранен в файле.

out.txt

StegoPy — инструмент стеганографии LSB на Python

Как вы могли заметить, входное изображение имеет формат JPEG, а выходное — PNG. Это недоработка программы, которая скоро будет исправлена и у вас появится возможность выбирать выходной формат. На входном изображении тестировались только JPEG и PNG, теоретически должно работать и на менее используемых, таких как bmp и так далее.

Кстати, Pylint оценил StegoPy на 10/10. Комментарии по коду и функционалу приветствуются, так как я планирую развивать приложение.

Проект доступен на GitHub. Теги: #информационная безопасность #python #открытый код #криптография #стеганография #lsb

Вместе с данным постом часто просматривают: