워게임

H4CKING GAME - Cryptography, Season1 : ROX

oose 2024. 7. 22. 00:08

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 연산