[SuNiNaTaS] 21

chwrld·2024년 4월 15일

SuNiNaTaS

목록 보기
3/9

처음엔 자를 대고 있길래 글자간 간격을 유추해 나머지 글자를 유추하는 문제인줄 알았다...
그래서 유추한 정답 H4CK_IN_TH3_MIDD33_4TT4CK를 냅다 제출했지만 안됐다

알고보니,
jpg 시그니처가 반복되는 구조였다.

간단한 파이썬 코드로 숨겨진 이미지를 모두 추출했다.

# 이미지 파일 열기 (바이너리 모드)
with open('./monitor.jpg', 'rb') as file:
    file_bytes = bytearray(file.read())

# JPEG 시작 시그니처
start_signature = bytes([0xFF, 0xD8, 0xFF, 0xE1])

# 처음 시작 시그니처 위치 찾기
start_idx = 0
i = 0

while True:
    # 현재 위치에서 시작 시그니처 찾기
    next_idx = file_bytes.find(start_signature, start_idx+4)
    print(f'start_idx:{start_idx}\n next_idx:{next_idx}')
    if next_idx == -1:
        break  # 더 이상 시작 시그니처가 없으면 종료
    
    if i > 0:
        # 이전 시작 시그니처부터 현재 시작 시그니처 직전까지의 데이터 추출
        image_data = file_bytes[start_idx:next_idx]

        # 새 파일로 저장
        with open(f'./new_monitor_{i-1}.jpg', 'wb') as new_file:
            new_file.write(image_data)
            print(f"파일 new_monitor_{i-1}.jpg가 성공적으로 저장되었습니다.")

    # 다음 시작 인덱스 갱신
    start_idx = next_idx
    i += 1

# 마지막 이미지 데이터 처리
if start_idx != -1:
    image_data = file_bytes[start_idx:]
    with open(f'./new_monitor_{i-1}.jpg', 'wb') as new_file:
        new_file.write(image_data)
        print(f"파일 new_monitor_{i-1}.jpg가 성공적으로 저장되었습니다.")
profile
BoB 13th 최강포린이👮

0개의 댓글