Season1 : ROX
Message = b"\x2d\x5a\x29\x28\x34\x1e\x16\x05\x1d\x26\x17\x01\x12\x30\x01\x0a\x1c\x35\x1d\x16\x1d\x13"
known_plaintext = "?????"
print('-----*-----*-----*-----*-----')
Mlen = len(Message)
Klen = len(known_plaintext)
result = ""
for i in range(Mlen):
result += chr(Message[i] ^ ord(known_plaintext[i%Klen]))
print(result)
message 와 plaintext 를 xor 연산하여 result 값을 만드는 코드다.
known_plaintext = "?????" 인 것을 보아 plaintext가 5글자일 것이라는 힌트..
그리고 flag의 앞글자는 H4CGM이어야 하고 xor의 A ^ B = C, C ^ B = A 성질을 이용한다면
plaintext = H4CGM 를 넣었을 때 앞 5글자는 이 문제의 원래 plaintext가 나올 것이다.
H4CGM 글자를 넣어 연산해보자.

enjoyV"FZk_5QwLB(vZ[U'
enjoy가 나온다. plaintext = enjoy 이었으므~~
다시 enjoy 넣어서 xor 연산

'워게임' 카테고리의 다른 글
| H4CKING GAME - cryptography, Season1 : CanYouSolveDLP? (0) | 2024.07.30 |
|---|---|
| H4CKING GAME - Cryptography, Season1 : IsThisRSA? (0) | 2024.07.30 |
| H4CHKING GAME - Cryptography, Season1 : Hello,Postman (0) | 2024.07.20 |
| Dreamhack wargame - SSRF (0) | 2024.07.18 |
| Dreamhack wargame : File Vulnerability-2 (0) | 2024.07.11 |