[Root Me] Known plaintext - XOR - 암호학 / HxD
Root Me에서 제공하는 xor 관련 암호학 문제
제목이 Known plaintext 인데
Known plaintext란 한글로 기지평문(공격)으로
공격자가 어떤 암호문과 그에 대한 평문을 알고 있을때 해독하는 방법이다.
문제에서는 ch3.bmp 파일이 주어진다.
파일이 깨진듯 내용은 보이지 않는다.
HxD로 파일을 열어보면
맨 앞부분이 24 2C로 시작하는 것을 볼 수 있다.
BMP 파일은 기본적으로 42 4D로 시작되어야 한다.
문제 제목이 XOR이니
어떤 키값으로 XOR 되어서 파일 시그니처가 변했고,
그에 따라 윈도우에서 BMP 파일을 인식하지 못하는 것이다.
파일 시그니처로 알고있는 42 4D 가 바로 평문을 알고있는 것이다.
CyberChef(https://gchq.github.io/CyberChef)에서 XOR을 통해
맨 앞에 42 4D(BM) 이 오도록
키값을 66 61 (HEX)로 지정해 주었는데,
키가더 긴듯 정확히 복호화되지 않았다.
그래서 그림판으로 임의의 BMP 파일을 두개 생성해봤는데
파일 앞 부분의 구조가 거의 동일하다는 것을 알게되었다.
이걸 힌트로 키값을 찾을 수 있을것 같았다.
INPUT에 임의로 생성한 BMP 파일의 HEX값을 넣고,
XOR KEY 부분에 ch3.bmp 파일의 앞부분 HEX 값을 넣어보았다.
그랬더니 Output 부분에서
key 값으로 특정할만한 영단어가 보였다.
해당 영단어를 key 값으로 해서
xor 한 뒤 결과를 파일로 저장하면
숨어있던 플래그를 찾을 수 있다.