1. 개요
사진에서 2진수를 뽑아서, 아스키코드를 변환하는 문제
pillow 문제
2. 분석
1) 2진수
제일 아랫줄의 작은 검은색 블록으로 7pixel씩 구분하면 2진수로 만들 수 있고, 아스키코드 변환이 가능합니다.
2) 코드
from PIL import Image
# 1. 이미지 불러오기
# 1) 이미지 열기
image = Image.open("code.bmp")
# 2) RGBA 데이터 로드
data = image.load()
# 3) 이미지 닫기
image.close()
# 2. 이미지 정보
width, height = image.size
print('width', width, 'height', height) # width 143 height 12
# 3. 검은색의 RGBA 정보, 튜플로 보관
BLACK = (0, 0, 0)
#
# 4. 반복문 조회하면서 한줄씩 이진법 문자열로 만듬
binary_str_list = []
binary_str = ""
for x in range(width):
if len(binary_str) >= 7:
binary_str_list.append(binary_str)
binary_str = ""
continue
# 제일 마지막 이진수 - 143 pixel이어서 8로 나누었을대 1pixel이 부족합니다.
# flag 형식상 중괄호가 예상되기 때문에 제일 오른쪽에 1을 붙여줍니다.
if x == width - 1:
binary_str_list.append(binary_str + "1")
if data[x, 0] == BLACK:
binary_str += "1"
else:
binary_str += "0"
# 5. 이진수를 십진수로 변경하고 아스키 문자로 변경
result = "".join([chr(int(binary_str, 2)) for binary_str in binary_str_list])
print('result', result)
'H4CKING GAME' 카테고리의 다른 글
[H4CKING GAME] - PHP LFI (0) | 2022.08.15 |
---|---|
[DigitalForensic] with CTF - ROX (0) | 2022.08.15 |
[H4CKING GAME] - Paint (0) | 2022.08.07 |
[H4CKING GAME] - Qualification (0) | 2022.08.07 |
[H4CKING GAME] - cat (0) | 2022.08.07 |