# 문제
# 문제 해석
(checker.pyc 파일에 담긴 내용)
: SHA1로 해싱했을 때는 같은 값이,
SHA2로 해싱했을 땐 다른 값이 나오는 두 값을 찾아,
이 두 파일의 각 SHA3-256 값을 구해 XOR 연산하여라.
# 풀이 방법
1. checker.pyc 파일을 다운받아, 리버싱하여 .py 형태의 소스코드로 만든다.
*이 때 내가 받은 파일이 올바른지 확인하기 위해 CyberChef 사이트에서 SHA256으로 해싱하여 문제에 명시된 값과 같은지 비교해보았다
* .pyc 파일을 리버싱할 때는 Uncompyle2 라는 도구를 사용했다.
2. 리버싱하여 얻은 소스코드를 해석해보면,
SHA-1 해시는 같으면서 SHA-2 등의 다른 해시 값은 다른 파일을 찾으라는 내용임을 알 수 있다.
이 값은 SHA1의 취약성을 입증한 사례로, 구글에서 공개한 SHAttered 사이트에서 pdf로 제공하고 있어 다운 받았다.
사이트: shattered.io/
파일 다운로드 경로는 아래와 같다.
PDF1 : https://shattered.io/static/shattered-1.pdf
PDF2 : https://shattered.io/static/shattered-2.pdf
3. CyberChef 에서 파일 1,2를 SHA-1, SHA2-256으로 각각 해싱 해보자.
파일 1의 SHA1 값: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a
파일 1의 SHA2-256 값: 2bb787a73e37352f92383abe7e2902936d1059ad9f1ba6daaa9c1e58ee6970d0
파일 2의 SHA1 값: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a
파일 2의 SHA2-256 값: d4488775d29bdef7993367d541064dbdda50d383f89f0aa13a6ff2e0894ba5ff
--> 두 파일은 SHA1값은 같으면서, SHA2-256 값은 다른 것을 볼 수 있다.
4. 이제 두 파일의 SHA3-256 값을 구하자.
파일 1의 SHA3-256 값: bdf57578bea12c08aece823fed38266c9d9b7767e1d25d66083f3b5ac8196e92
파일 2의 SHA3-256 값: d89bdc94e5f1d1f7aee9554783558aa5eaeb5c3e0393e27ed9ad1ff26711b319
5. SHA3 - From Hex - XOR - To Hex 순서로 레시피를 조작하여 최종 답을 구하자.
최종 답:
656ea9ec5b50fdff0027d7786e6dacc977702b59e241bf18d19224a8af08dd8b
방법 요약
SHA3 - From Hex - XOR - To Hex 순서의 레시피를 만들고,
Input으로 File1, File2를 모두 넣어준다.
XOR의 키 값으로는 File 1의 값을 넣는다.
file1의 XOR 값은 0000000... 00 으로 나오면 XOR이 정상적으로 동작한 것이므로,
file2와의 XOR 값이 두 파일의 SHA3 값을 XOR한 최종 값이다.
# 나의 답
656ea9ec5b50fdff0027d7786e6dacc977702b59e241bf18d19224a8af08dd8b