1. 개요
pillow 문제
2. 분석
1) 이미지
세로 200, 가로 7이고, 빨간색으로 색칠된 사진을 받습니다.
2) 아스키코드
아스키코드 범위는 0 ~ 2^7(127) 까지입니다.
빨간색을 1, 검은색을 0으로 생각하면 한줄을 이진수로 변경할 수 있습니다. 따라서 총 200개의 이진수가 있습니다.
정리하면 한줄을 이진수로 변경하고
이진수를 아스키코드로 변경하고
200줄을 이어 붙이면 플래그가 됩니다.
3) pillow
pillow는 파이썬 기반의 이미지 처리 도구입니다.
반복문 사용해서 한번에 플래그를 뽑아냅시다.
from PIL import Image
# 1. 이미지 불러오기
# 1) 이미지 열기
image = Image.open("color.png")
# 2) 픽셀 데이터 로드
data = image.load()
# 3) 이미지 닫기
image.close()
# 2. 이미지 정보
width, height = image.size
print('width', width, 'height', height) # width 7 height 200
# 3. 빨간색의 RGB 정보, 튜플로 보관
RED = (255, 0, 0)
# 4. 반복문 조회하면서 200줄을 하나씩 이진법 문자열로 만듬
binary_str_list = []
for y in range(height):
binary_str = ""
for x in range(width):
# 2차원 배열의 x,y와 순서가 다릅니다.
pixel = data[x, y]
if pixel == RED:
binary_str += "1"
else:
binary_str += "0"
binary_str_list.append(binary_str)
# 5. 이진수를 십진수로 변경하고 아스키 문자로 변경
result = "".join([chr(int(binary_str, 2)) for binary_str in binary_str_list])
print('result', result)
4) 확인
'[DigitalForensic] with CTF' 카테고리의 다른 글
[DigitalForensic] with CTF - Emma Watson (0) | 2022.08.14 |
---|---|
[DigitalForensic] with CTF - google (0) | 2022.08.14 |
[DigitalForensic] with CTF - 내 친구는 이것이 특별한... (0) | 2022.08.13 |
[DigitalForensic] with CTF - Find Key(moon) (0) | 2022.08.13 |
[DigitalForensic] with CTF - 제 친구의 개가 바다에서… (0) | 2022.08.13 |