Untitled

png는 이러하다.

color.png

7x200 크기로 검정색과 빨강색으로 이루어져 있다.

LSB 스테가노그래피 디코더 사이트에 넣어보니 아무것도 발견할 수 없었고

HxD로도 확인했는데 별 소득이 없다.

찾아보니 위 사진의 검정색을 이진수 0으로, 빨간색을 이진수 1로 변환해 바이너리 값으로 추출한 후, 해당 바이너리 값을 아스키 코드로 다시 변환하면 키가 나온다고 한다.

아래 코드는 검은색을 이진수 0으로, 빨간색을 이진수 1로 변환해 바이너리 값으로 추출한 후 다시 ASCII 코드로 변환하는 코드이다.

from PIL import Image

pic = Image.open("color.png")
data = pic.load()
red = (255, 0, 0)

binary_lines = []
width, height = pic.size

for y in range( height ):
    binary_line = []
    for x in range( width ):
        pixel = data[x, y]

        if pixel == red:
            binary_line.append('1')
        else:
            binary_line.append('0')

    binary_lines.append( binary_line ) #여기까지 바이너리 값 추출

ascii_text = ''.join([ chr(int(''.join(separated),2))for separated in binary_lines ])

print ( ascii_text )

Python Image Library란?

파이썬 인터프리터에 다양한 이미지 파일 형식을 지원하고 강력한 이미지 처리와 그래픽 기능을 제공하는 자유-오픈 소스 소프트웨어 라이브러리이다. 줄여서 PIL

Untitled

Untitled

python3 - 명령어로 실행

매번 파이썬 실행할 때마다 업데이트는 필수요,,

apt-get update
pip install --upgrade pip
pip install --upgrade pwntools

Flag: