본문 바로가기
[DigitalForensic] with CTF

[DigitalForensic] with CTF - flagception

by skyepodium 2022. 8. 14.

1. 개요

stegsolve, pillow 문제

 

2. 분석

1) stegsolve

stegsolve로 보면, 깃발위에 검은색, 흰색이 규칙적으로 배열된 영역이 있습니다.

 

2) 사진 추출

사진 추출 방법은 여러가지 입니다.

 

맥북 기본 사진앱이 pixel 단위까지 잡아주었습니다.

클립보드에서 신규 눌러서 추출합니다.

 

 

3) pillow

pillow로 이미지 추출하고, 이진수 만들고, 아스키코드로 변경합니다.

추출한 이미지이고, 색상이 고르지 않아서, RGBA에서 Red의 값이 60 초과인것은 검은색으로 판단했습니다.

 

from PIL import Image

# 1. 이미지 불러오기
# 1) 이미지 열기
image = Image.open("binary.png")
# 2) 픽셀 데이터 로드
data = image.load()
# 3) 이미지 닫기
image.close()

# 2. 이미지 정보
width, height = image.size
print('width', width, 'height', height) # width 14 height 20

# 3. 반복문 조회하면서 200줄을 하나씩 이진법 문자열로 만듬
binary_str_list = []
for y in range(0, height, 2):
    binary_str = ""

    for x in range(0, width, 2):
        # 2차원 배열의 x,y와 순서가 다릅니다.
        print(data[x, y])
        red, green, blue, alpha = data[x, y]
        if red > 60:
            binary_str += "0"
        else:
            binary_str += "1"

    binary_str_list.append(binary_str)

# 5. 이진수를 십진수로 변경하고 아스키 문자로 변경
result = "".join([chr(int(binary_str, 2)) for binary_str in binary_str_list])

print('result', result) # BITSCTF{f1agc3pt10n}