HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
d-shop

НОВОСТИ [Из песочницы] StegoPy — Инструмент LSB-стеганографии на Python

BDFpromo
Оффлайн

BDFpromo

.
.
Регистрация
23.09.18
Сообщения
12.347
Реакции
176
Репутация
0
Предисловие


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

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

LSB — метод стеганографии, при котором меняются младшие биты одного из RGB цветов в пикселе на биты кодируемого текста.

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

Кодирование


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


> git clone
> cd StegoPy
> pip3 install -r requirements.txt
> python3 stegopy.py

qxznf6zn2vkfu5c7wpnw_4kygnu.png


Впрочем все как обычно в плане установки. А сейчас давайте разберем синтаксис команд запуска.


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

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

Файл in.jpg
k_dli5ioqfusyzr9f733hmg9964.jpeg


Файл data.txt
this is private message


Баланс — это количество младших битов задействованных в стеганографии. Оно колеблется от 1 до 4.

Соответственно, чем больше баланс, тем:

  1. Меньше пикселей будет задействованно в кодировании
  2. Заметнее изменения в цветовых каналах

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

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

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

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

Файл out.png
5zwnviebct6da4wteh_xsvkd_n8.png


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


h6uoua5ewvqnztw_es1ixa6wbc8.png


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


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


> python3 ./stegopy.py -d out.png

Затем нас спросят ключ, который мы получили при кодировании. После декодирования расшифрованный текст сохранится в файле out.txt

2-3s2tt0kc6pdldndj3tmjledl4.png


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

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

К слову pylint оценил StegoPy на 10/10. Приветствуются замечания к коду и функционалу поскольку я не планирую останавливаться на достигнутом.

 
Сверху Снизу