Write-up/Crypto
[Dreamhack] darimchal-001
mameul
2024. 3. 29. 14:17
728x90
풀이
제공된 파일에는 chall1.c 파일과 chall1 바이너리 파일이 있다.
chall1.c의 코드를 보면 적절한 비밀번호를 입력을 하면 복호화가 되는 것을 알 수 있다.
위 코드를 보면 입력된 비밀번호와 KEY를 XOR한 값을 JOKER와 대조하여 일치하면 올바른 비밀번호로 인식되는 것을 알 수 있다. 따라서 JOKER와 KEY를 XOR 연산하여 원하는 비밀번호 값을 얻을 수 있다는 것을 알 수 있다. (∵ a = b^c 이면 a^b = c)
jocker = "\x40\x53\x06\x03\x43\x52\x54\x3b"
key = "023661dd4"
tmp = ""
for i in range(8):
tmp += chr(ord(key[i])^ord(jocker[i]))
print(tmp)
위와 같은 코드를 통해서 원하는 복호화 키를 얻을 수 있다.