본문 바로가기
H4CKING GAME

[H4CKING GAME] - CODE

by skyepodium 2022. 8. 15.

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