
최하위 비트(LSB)를 사용하여 파일을 이미지에 스테가노그래피로 숨기는 Python 프로그램.
Python 프로그램으로, 최하위 비트(LSB) 기법을 사용하여 이미지에 파일을 숨기는 스테가노그래피적 방법을 기반으로 합니다.
가장 기본적인 방법인 최하위 비트를 사용했습니다. 컬러 픽셀은 빨강, 초록, 파랑으로 구성되며 각각 1바이트로 인코딩됩니다. 아이디어는 각 픽셀의 RGB 구성 요소의 첫 번째 비트에 정보를 저장하는 것입니다. 최악의 경우에도 십진수 값은 1만큼 차이가 나므로 사람의 눈으로는 보이지 않습니다. 실제로 모든 데이터를 모든 픽셀의 첫 번째 비트에 저장할 공간이 충분하지 않다면 두 번째 비트를 사용하기 시작해야 하며, 이런 식으로 계속 진행합니다. 이미지에 더 많은 데이터를 저장할수록 탐지될 가능성이 높아진다는 점을 명심해야 합니다.
LSBSteg 모듈은 이미지에 데이터를 숨기기 위해 OpenCV를 기반으로 합니다. 이미지의 모든 픽셀과 모든 색상의 첫 번째 비트를 사용합니다. 코드는 이해하기 매우 간단합니다. 모든 첫 번째 비트가 사용되면 모듈은 두 번째 비트를 사용하기 시작하므로 데이터가 클수록 이미지가 더 많이 변경됩니다. 프로그램은 이미지에 충분한 공간이 있으면 모든 데이터를 숨길 수 있습니다. 주요 함수는 다음과 같습니다:
압축되지 않은 이미지만 지원됩니다, 즉 LSB 비트가 압축 단계에서 변조될 수 있으므로 JPEG는 지원되지 않습니다.
이 도구는 OpenCV와 그 종속성만 필요합니다.
pip install -r requirements.txt
LSBSteg.py
사용법:
LSBSteg.py encode -i <입력> -o <출력> -f <파일>
LSBSteg.py decode -i <입력> -o <출력>
옵션:
-h, --help 도움말 표시
--version 버전 표시
-f,--file=<파일> 숨길 파일
-i,--in=<입력> 입력 이미지 (캐리어)
-o,--out=<출력> 출력 이미지 (또는 추출된 파일)
텍스트 인코딩:
#encoding
steg = LSBSteg(cv2.imread("my_image.png"))
img_encoded = steg.encode_text("my message")
cv2.imwrite("my_new_image.png", img_encoded)
#decoding
im = cv2.imread("my_new_image.png")
steg = LSBSteg(im)
print("Text value:",steg.decode_text())
이미지 스테가노그래피:
#encoding
steg = LSBSteg(cv2.imread("carrier.png"))
new_im = steg.encode_image(cv2.imread("secret_image.jpg"))
cv2.imwrite("new_image.png", new_im)
#decoding
steg = LSBSteg("new_image.png")
orig_im = steg.decode_image()
cv.SaveImage("recovered.png", orig_im)
바이너리 스테가노그래피:
#encoding
steg = LSBSteg(cv2.imread("carrier.png"))
data = open("my_data.bin", "rb").read()
new_img = steg.encode_binary(data)
cv2.imwrite("new_image.png", new_img)
#decoding
steg = LSBSteg(cv2.imread("new_image.png"))
binary = steg.decode_binary()
with open("recovered.bin", "rb") as f:
f.write(data)
이 소프트웨어는 MIT 라이선스입니다.