
비트맵 이미지(.bmp 및 .png), WAV 사운드 파일 및 바이트 시퀀스를 위한 최하위 비트 스테가노그래피. 비트맵 이미지를 위한 간단한 LSB 스테가날리시스(LSB 추출).

스테가노그래피 기술에 익숙하지 않다면, 스테가노그래피: 데이터 안에 데이터 숨기기에서 이 분야에 대한 기본 개요를 작성했습니다.
이 프로젝트는 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 | 인코딩 속도 | 디코딩 속도 |
| 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 사운드 파일에 데이터를 숨기려면
-r, --recover 사운드 파일에서 데이터를 복구하려면
-i, --input TEXT .wav 파일 경로
-s, --secret TEXT 사운드 파일에 숨길 파일 경로
-o, --output TEXT 출력 파일 경로
-n, --lsb-count INTEGER 사용할 LSB 개수 [기본값: 2]
-b, --bytes INTEGER 사운드 파일에서 복구할 바이트 수
--help 이 메시지를 표시하고 종료합니다.
예시:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# 또는
$ 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와 Python Imaging Library(PIL)의 포크인 Pillow가 필요합니다.
다음 명령줄 인수와 함께 LSBSteg를 실행하세요:
Command Line Arguments:
-h, --hide 이미지 파일에 데이터를 숨기려면
-r, --recover 이미지 파일에서 데이터를 복구하려면
-a, --analyze 이미지 내에 숨길 수 있는 데이터 양을 출력합니다 [기본값: False]
-i, --input TEXT 비트맵(.bmp 또는 .png) 이미지 경로
-s, --secret TEXT 이미지에 숨길 파일 경로
-o, --output TEXT 출력 파일 경로
-n, --lsb-count INTEGER 사용할 LSB 개수 [기본값: 2]
-c, --compression INTEGER RANGE
1(최고 속도) ~ 9(최소 파일 크기) [기본값: 1]
--help 이 메시지를 표시하고 종료합니다.
예시:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# 또는
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# 또는
$ 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와 Python Imaging Library(PIL)의 포크인 Pillow가 필요합니다.
다음 명령줄 인수와 함께 StegDetect를 실행하세요:
Command Line Arguments:
-i, --input TEXT 이미지 경로
-n, --lsb-count INTEGER 표시할 LSB 개수 [기본값: 2]
--help 이 메시지를 표시하고 종료합니다.
각 픽셀에 대한 RGB 색상 채널의 최하위 n비트를 합산하고 결과를 0-255 범위로 정규화합니다. 그런 다음 이 값을 픽셀의 각 색상 채널에 적용합니다. 여기서 n은 표시할 최하위 비트 수이며, 다음 명령은 결과 이미지를 파일 이름에 "_nLSBs"를 추가하여 저장하고 다음과 유사한 출력을 생성합니다.
$ stegolsb stegdetect -i input_image.png -n 2
Runtime: 0.63s