
Стеганография наименьшего значащего бита для растровых изображений (.bmp и .png), звуковых файлов WAV и последовательностей байтов. Простой LSB-стеганализ (извлечение LSB) для растровых изображений.

Если вы не знакомы с методами стеганографии, я также написал базовый обзор этой области в статье Steganography: Hiding Data Inside Data.
Этот проект доступен на PyPI и может быть установлен с помощью
pip install stego-lsb
В качестве альтернативы, вы можете установить его напрямую из этого репозитория:
git clone https://github.com/ragibson/Steganography
cd Steganography
python3 setup.py install
После установки используйте команду stegolsb в терминале или импортируйте функции из stego_lsb в свой код.
bit_manipulation предоставляет возможность (быстро) перемежать байты полезной нагрузки непосредственно в наименее значимые биты байтовой последовательности-носителя.
В частности, он содержит четыре основные функции:
# Interleave the bytes of payload into the num_lsb LSBs of carrier.
lsb_interleave_bytes(carrier, payload, num_lsb, truncate=False)
# Deinterleave num_bits bits from the num_lsb LSBs of carrier.
lsb_deinterleave_bytes(carrier, num_bits, num_lsb)
# Runs lsb_interleave_bytes with a List[uint8] carrier.
lsb_interleave_list(carrier, payload, num_lsb)
# Runs lsb_deinterleave_bytes with a List[uint8] carrier.
lsb_deinterleave_list(carrier, num_bits, num_lsb)
Запуск bit_manipulation.py, непосредственный вызов его функции test() или выполнение stegolsb test должны выдать вывод, похожий на следующий:
Testing 1.0 MB payload -> 10.0 MB carrier...
Progress: [################################]
----------------------------------------
| # LSBs | Encode Rate | Decode rate |
| 1 | 60.6 MB/s | 95.9 MB/s |
| 2 | 56.6 MB/s | 52.7 MB/s |
| 3 | 82.5 MB/s | 77.4 MB/s |
| 4 | 112.4 MB/s | 105.9 MB/s |
| 5 | 135.9 MB/s | 129.8 MB/s |
| 6 | 159.9 MB/s | 152.4 MB/s |
| 7 | 181.7 MB/s | 174.6 MB/s |
| 8 | 372.8 MB/s | 1121.8 MB/s |
----------------------------------------
WavSteg использует стеганографию наименьшего значащего бита для сокрытия файла в отсчётах .wav файла.
Для каждого отсчёта в аудиофайле мы перезаписываем наименее значимые биты данными из нашего файла.
WavSteg требует Python 3
Запустите WavSteg со следующими аргументами командной строки:
Command Line Arguments:
-h, --hide To hide data in a sound file
-r, --recover To recover data from a sound file
-i, --input TEXT Path to a .wav file
-s, --secret TEXT Path to a file to hide in the sound file
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-b, --bytes INTEGER How many bytes to recover from the sound file
--help Show this message and exit.
Пример:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# OR
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000
Для сокрытия данных используются аргументы -h, -i, -s, -o и -n.
Следующая команда скроет содержимое file.txt в sound.wav и сохранит результат как sound_steg.wav. Команда также выводит, сколько байтов было использовано из теоретического максимума.
Пример:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
Using 2 LSBs, we can hide 6551441 bytes
Files read in 0.01s
5589889 bytes hidden in 0.24s
Output wav written in 0.03s
Если вы попытаетесь скрыть слишком много данных, WavSteg выведет минимальное количество LSB, необходимое для сокрытия ваших данных.
Для восстановления данных используются аргументы -r, -i, -o, -n и -b
Следующая команда восстановит скрытые данные из sound_steg.wav и сохранит их как output.txt. Для этого требуется точный размер скрытых данных в байтах, иначе результат может быть слишком коротким или содержать посторонние данные.
Пример:
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
Files read in 0.02s
Recovered 5589889 bytes in 0.18s
Written output file in 0.00s
LSBSteg использует стеганографию наименьшего значащего бита для сокрытия файла в цветовой информации RGB-изображения (.bmp или .png).
Для каждого цветового канала (например, R, G и B) в каждом пикселе изображения мы перезаписываем наименее значимые биты цветового значения данными из нашего файла. Чтобы упростить восстановление этих данных, мы также скрываем размер файла во входном файле в первых нескольких цветовых каналах изображения.
Вам понадобится Python 3 и Pillow, форк Python Imaging Library (PIL).
Запустите LSBSteg со следующими аргументами командной строки:
Command Line Arguments:
-h, --hide To hide data in an image file
-r, --recover To recover data from an image file
-a, --analyze Print how much data can be hidden within an image [default: False]
-i, --input TEXT Path to an bitmap (.bmp or .png) image
-s, --secret TEXT Path to a file to hide in the image
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-c, --compression INTEGER RANGE
1 (best speed) to 9 (smallest file size) [default: 1]
--help Show this message and exit.
Пример:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# OR
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# OR
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Перед сокрытием данных в изображении может быть полезно узнать, сколько данных можно скрыть. Следующая команда сделает это, выводя результат, похожий на:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
Image resolution: (2000, 1100, 3)
Using 2 LSBs, we can hide: 1650000 B
Size of input file: 1566763 B
File size tag: 3 B
Следующая команда скроет данные во входном изображении и запишет результат в стеганографированное изображение, выводя результат, похожий на:
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
Files read in 0.26s
1566763 bytes hidden in 0.31s
Image overwritten in 0.27s
Следующая команда восстановит данные из стеганографированного изображения и запишет результат в выходной файл, выводя результат, похожий на:
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Files read in 0.30s
1566763 bytes recovered in 0.28s
Output file written in 0.00s
StegDetect предоставляет один метод для обнаружения простой стеганографии в изображениях.
Вам понадобится Python 3 и Pillow, форк Python Imaging Library (PIL).
Запустите StegDetect со следующими аргументами командной строки:
Command Line Arguments:
-i, --input TEXT Path to an image
-n, --lsb-count INTEGER How many LSBs to display [default: 2]
--help Show this message and exit.
Мы суммируем наименее значимые n битов цветовых каналов RGB для каждого пикселя и нормализуем результат до диапазона 0–255. Затем это значение применяется к каждому цветовому каналу пикселя. Где n — количество отображаемых наименее значимых битов, следующая команда сохранит результирующее изображение, добавив к имени файла "_nLSBs", и выведет результат, похожий на следующий:
$ stegolsb stegdetect -i input_image.png -n 2
Runtime: 0.63s