[cryptohack] Lemur XOR

ShinboTinBBO·2025년 2월 12일

cryptography

목록 보기
8/10


Frank Ocean의 명반 BLONDE LP가 재발매 했어요!
꼭 들을 필요도 없지만... 한번 들어보셔요 참 노래 좋아요
예전에 유튜브에서 에스파 멤버들한테 무슨 노래 좋아하냐고 물었을 때, 네명 중 두 명은 이 앨범 노래를 말했다구요

뭐 암튼 저는 한솔로 사운드 트랙 안사고 이걸 사버려서 자랑을 해버렸습니다.

풀이

문제를 보면, 두 개의 멋진 이미지를 동일한 비밀키로 숨겨버렸다고 한다.

주어진 이미지 lemur, flag가 아래와 같이 암호화 된 상태라고 판단할 수 있다.

flag=img1keyflag = img1 \oplus key
lemur=img2keylemur = img2 \oplus key

근데, 우리가 key 자체를 알지를 못하니 우리가 할 수 있는 최선은 양쪽에 비밀키를 없애는 과정에서 두 이미지를 병합해버리는 것 뿐이다.

이정도로 문제가 풀리려나 했으나, 문제에서 tip으로 그냥 RGB에 대한 xor 연산하면 된다고 해서 마음을 놓고 풀었다.

import cv2

flag = cv2.imread('Lemur_XOR/flag.png', cv2.IMREAD_COLOR)
lemur = cv2.imread('Lemur_XOR/lemur.png', cv2.IMREAD_COLOR)

print(flag.shape)
print(lemur.shape)
# 두 이미지의 차원 확인

for i in range(327):
    for j in range(582):
        for k in range(3):
            flag[i][j][k] ^= lemur[i][j][k]
            
cv2.imwrite('Lemur_XOR/xor.png', flag)
profile
지상 최강의 해적

0개의 댓글