Предисловие Недавно я заметил, что на моем форуме люди заинтересовались темой стеганографии различных текстов в изображениях, 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
Однако в плане установки все как обычно.
Теперь давайте посмотрим на синтаксис команд запуска.
> python3 stegopy.py -e in.jpg data.txt
Этой командой мы закодируем текст из файла данные.
txt изображать in.jpg Но перед кодированием у нас спросят баланс, который может быть от 1 до 4. Это как раз одна из самых интересных вещей в программе.
Файл в формате .
jpg
Файл данных.
txt это личное сообщение Баланс — это количество младших битов, участвующих в стеганографии.
Оно варьируется от 1 до 4. Соответственно, чем больше баланс, тем:
- Меньше пикселей будет задействовано в кодировании
- Более заметные изменения в цветовых каналах
Еще одним важным фактором является то, что меняется только синий канал, оттенки которого наименее заметны нашему глазу.
Как только мы определились с балансом, наш скрипт создаст два дополнительных файла:
- out.png — изображение с закодированным текстом
- key.dat — файл с ключом, необходимым для расшифровки
Файл Key.dat 1$960$gxvZH4Q8Gq2qLGeA1aSCXIPRljJlJbihsvSBdzx-wSM=
Декодирование
Синтаксис команды в нашем случае такой: > python3 .
/stegopy.py -d out.png
Затем нас спросят ключ, который мы получили при кодировании.
После декодирования расшифрованный текст будет сохранен в файле.
out.txt
Как вы могли заметить, входное изображение имеет формат JPEG, а выходное — PNG. Это недоработка программы, которая скоро будет исправлена и у вас появится возможность выбирать выходной формат.
На входном изображении тестировались только JPEG и PNG, теоретически должно работать и на менее используемых, таких как bmp и так далее.
Кстати, Pylint оценил StegoPy на 10/10. Комментарии по коду и функционалу приветствуются, так как я планирую развивать приложение.
→ Проект доступен на GitHub. Теги: #информационная безопасность #python #открытый код #криптография #стеганография #lsb
-
Сделать Интернет Безопасной Средой Для Детей
19 Oct, 24 -
Давайте Проведем Параллель С Brainfuck
19 Oct, 24 -
Секретная Фраза Аудитора
19 Oct, 24 -
Доступны Пробные Версии Cs5
19 Oct, 24 -
Умпутун. Два Года В Эфире.
19 Oct, 24