제목: Binary Digits

Ze-rith·2026년 6월 22일

포렌식 문제 풀이

목록 보기
1/2

문제
This file doesn't look like much... just a bunch of 1s and 0s. But maybe it's not just random noise. Can you recover anything meaningful from this?

Download the file here.

링크
https://learn.cylabacademy.org/library/698?page=1&category=4 (문제 파일)

풀이 과정
1. digits.bin을 메모장으로 열어보니 이 파일은 사실 0과 1로만 이루어진 텍스트 파일인걸 확인했다. (71,200글자)
2. 핵심 관찰: 71200 ÷ 8 = 8900 정확히 나눠진다는 건 각 8비트 묶음이 바이트 하나를 의미한다는 뜻인 것 같다
3. 변환: 8비트씩 끊어서 정수로 바꾸니 첫 두 바이트가 255, 216 (0xFF 0xD8) — JPEG 파일의 매직 넘버였다.
4. 복구: 전체 비트스트림을 바이트로 변환해 .jpg로 저장하니 800×500 크기의 정상적인 JPEG 이미지가 나왔고, 그 안에 플래그 텍스트가 있었다.

아래는 복구 코드

# 1. 비트 문자열 읽기
data = open('etc/digits.bin').read().strip()

# 2. 8개씩 끊어서 바이트로 변환
byte_arr = bytearray()
for i in range(0, len(data), 8):
    byte_str = data[i:i+8]      # 8글자씩 슬라이싱
    byte_arr.append(int(byte_str, 2))   # 2진수 문자열 -> 정수

# 3. 파일로 저장
with open('recovered.jpg', 'wb') as f:
    f.write(byte_arr)

결과


picoCTF{h1dd3n_1n_th3_b1n4ry_8e65b559}

profile
화이트 해커

0개의 댓글