Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
steganographer — Python을 사용한 스테가노그래피 | 이미지 파일에 파일 또는 데이터 숨기기 | Kitploit
도구/GitHubGitHub/priyansh-anand/steganographer
Encryption/Decryption ToolsData ExfiltrationSteganographyLearning & Education
GitHubpriyansh-anand/steganographer

steganographer

Python을 사용한 스테가노그래피 | 이미지 파일에 파일 또는 데이터 숨기기

저장소 보기
1693484년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Python에서의 스테가노그래피

이 스크립트는 파일을 이미지 내에 숨기고 수정된 이미지를 디스크에 저장합니다.

이미지 내에 숨길 수 있는 파일의 최대 크기는 이미지의 크기에 따라 달라집니다.

root@kitploit:~
max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

'100k words.txt'는 'original_image.png'에 숨겨져 'image_with_100k words.png'로 저장됩니다. 이 두 이미지의 차이를 찾을 수 있는지 확인해보세요. 이 모듈을 사용하여 'image_with_100k words.png'에서 '100k words.txt'를 추출할 수 있습니다.

예제

원본 이미지 원본 이미지

수정된 이미지 수정된 이미지

이 이미지에는 10만 개의 단어(텍스트 파일)가 숨겨져 있습니다!

작동 방식

이것은 각 픽셀의 LSB(최하위 비트)를 변경하면 변화가 눈에 띄지 않을 것이라는 간단한 원리에 기반합니다.

따라서 이 모듈은 숨길 파일에서 2비트의 데이터를 가져와 한 픽셀의 마지막 2비트를 그 2비트로 대체한 후 다음 픽셀로 이동합니다. 픽셀의 최대 변화는 4 단위이며, PNG 이미지의 값 범위는 (0,255)이므로 이 변화는 미미합니다.

PNG 이미지에서 각 픽셀은 빨강, 초록, 파랑의 3개 채널을 가집니다. (일부 PNG 이미지는 1개 또는 4개의 채널을 가지지만, 이 프로그램은 이를 3채널로 변환합니다.) PNG 이미지의 일반적인 픽셀은 다음과 같습니다:

root@kitploit:~
a_pixel = (17,32,11)     # (RED, GREEN, BLUE)

따라서 픽셀당 3번의 2비트, 즉 픽셀당 6비트를 저장할 수 있습니다. 이는 이미지에 숨길 수 있는 파일 크기의 상한선을 결정합니다:

root@kitploit:~
max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

예를 들어 이해해 봅시다. 숨길 데이터는 다음과 같습니다:

root@kitploit:~
binary_data = 0b100111

처음 두 비트를 가져와 'a_pixel'의 RED 채널에 대체해 봅시다.

root@kitploit:~
a_pixel = (0b10001, 0b100000, 0b1011)   # binary representation of a_pixel values
# Let's change a_pixel's RED Channel
# 0b10001 -> 0b10010  ( First 2 bits are 10 )
a_pixel = (0b10010, 0b100000, 0b1011)  # modified pixel

다시 binary_data에서 2비트를 가져와 GREEN 채널의 마지막 2비트를 대체해 봅시다.

root@kitploit:~
a_pixel = (0b10010, 0b100000, 0b1011)
# Let's change a_pixel's GREEN Channel
# 0b100000 -> 0b100001  ( The 2 bits are 01 )
a_pixel = (0b10010, 0b100001, 0b1011)  # modified pixel

BLUE 채널에 대해 한 번 더 수행하면 완료됩니다.

root@kitploit:~
a_pixel = (0b10010, 0b100001, 0b1011)
# Let's change a_pixel's BLUE Channel
# 0b1011 -> 0b1011  ( The 2 bits are 11 ) ; Notice that the value wasn't changed this time
a_pixel = (0b10010, 0b100001, 0b1011)  # pixel wasn't modified this time

이제 6비트 메시지를 픽셀에 숨겼습니다. 픽셀의 변화를 살펴보겠습니다.

root@kitploit:~
a_pixel             = (0b10001, 0b100000, 0b1011) = (17, 32, 11)
a_pixel_with_data   = (0b10010, 0b100001, 0b1011) = (18, 33, 11)

보시다시피 변화는 픽셀 수준에서도 눈에 띄지 않습니다. 모듈은 모든 데이터가 이미지에 저장될 때까지 이 작업을 반복합니다.

원시 이미지에 숨겨진 데이터

참고: 사진의 노이즈가 증가하며, 사진 편집 소프트웨어를 사용하여 원본 이미지와 비교하면 이 이미지가 원본 이미지보다 훨씬 더 많은 노이즈를 가집니다.

이 문제에 대한 해결책: 원본 이미지를 절대 인터넷에 업로드하거나 공유하지 마세요.

할 일

  • JPEG 이미지 지원 추가
  • 추출할 파일 이름 자동 감지 추가

라이선스

MIT

무료 소프트웨어, 그래!

도구 다운로드