# Just a XOR WriteUp
1. ๋ฌธ์ ๋ฅผ ํ์ธํ๊ณ , ํ๋จ์ ํ์ผ์ ๋ค์ด๋ฐ์๋ค.
+ ๋ฌธ์ ๋ฅผ ์ฝ์ด๋ณด๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํผ์๋ ์๋ณธ ๋ฉ์์ง, ๊ทธ๋ฆฌ๊ณ ์ํธ๋ฌธ์ ํตํด ์์ ํ ํ๋ฌธ์ ๋ณต๊ตฌํด๋ด๋ ๋ฌธ์ ๊ฐ๋ค.
2. ๋ค์ด๋ฐ์ ์์ถํ์ผ ์์๋ ์ด 3๊ฐ์ง์ ํ์ผ์ด ์์๋ค.
3. ๋จผ์ encrypt ํ์ผ์ ๋จผ์ ํ์ธํด๋ณด๊ณ , ์ฝ๋๋ฅผ ๋ถ์ํด๋ณด์๋ค.
+ < Line 1 ~ 2 >
: random๊ณผ itertools ๋ชจ๋์ import
+ < Line 5 >
: original-message.txt ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด์ MESSAGE ๋ณ์์ ์ ์ฅ
+ < Line 6 >
: ์ด 16๊ฐ์ ๋์๋ฅผ ์์ฑํ๋ฉฐ SECRET ๋ฆฌ์คํธ์ ์ ์ฅ
--> ๋์๋ 0๋ถํฐ 0x2600์ ๋๋ ๋๋จธ์ง ๊ฐ์ผ๋ก ์์ฑ
+ < Line 8 ~ 9 >
: ์ํธํ ํจ์ encrypt๊ฐ ์ ์๋ ๋ถ๋ถ์ผ๋ก, ์ ๋ ฅ๋ฐ์ ๋ฉ์์ง๋ฅผ XOR ์ฐ์ฐ์ ์ด์ฉํ์ฌ ์ํธํ + cycle ํจ์๋ฅผ ์ด์ฉํ์ฌ SECRET ๋ฆฌ์คํธ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ฉ์์ง ์ํธํ
+ < Line 12 ~ 13 >
: message-encrypted.txt ํ์ผ์ ์ฐ๊ธฐ ๋ชจ๋๋ก ์ด์ด MESSAGE ๋ณ์์ ์๋ ๋ฉ์์ง๋ฅผ ์ํธํ --> ','๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๋ก ๋ง๋ ํ ํ์ผ์ ๋ด์ฉ ์์ฑ
4. intercepted-original-mesage ํ์ผ๊ณผ message-encrypted ํ์ผ์ ์ด์ด๋ณธ ๊ฒฐ๊ณผ, ๋ด์ฉ์ ์๋์ ๊ฐ์๋ค.
5. ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋ณตํธํ ์๊ณ ๋ฆฌ์ฆ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ค.
import ast
import random
from itertools import cycle
ENCRYPTED_MESSAGE = open("C:\\Users\\USER\\Desktop\\message-encrypted.txt", "r").read()
SECRET = [chr(random.randint(0,0x2600) % 256) for i in range(16)]
def decrypt(encrypted_message):
encrypted_list = ast.literal_eval(encrypted_message)
encrypted_chars = [chr(int(a) ^ ord(b)) for a, b in zip(encrypted_list, cycle(SECRET))]
return ''.join(encrypted_chars)
original_message = decrypt(ENCRYPTED_MESSAGE)
print(original_message)
+ < Line 5 >
: message-encrypted.txt ํ์ผ์์ ์ํธ๋ฌธ์ ์ฝ์ด์ค๊ณ , ์ด๋ฅผ ENCRYPTED_MESSAGE ๋ณ์์ ์ ์ฅ
+ < Line 6 >
: 16๊ฐ์ ๋๋ค ๋ฌธ์์ด์ ์์ฑํ์ฌ SECRET ๋ณ์์ ์ ์ฅ
+ < Line 8 ~ 11 >
: ๋ณตํธํ ํจ์ decrypt๋ฅผ ํตํด ์ํธ๋ฌธ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ast.literal_eval() ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฆฌ์คํธ๋ก ๋ณํ --> XOR ์ฐ์ฐ์ ํตํด ํ๋ฌธ์ผ๋ก ๋ณตํธํ
+ < Line 13 ~ 14 >
: decrypt ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ตฌํ ํ๋ฌธ์ ์ถ๋ ฅ
6. ์์ฑํ ์ฝ๋๋ฅผ ์คํ์์ผ๋ณธ ๊ฒฐ๊ณผ ์๋์ ๊ฐ์ ์ถ๋ ฅ์ ํ์ธํ ์ ์์๋ค.
+ ๋ณตํธํ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ ๊ฐ์์ง๋ง, ๊ฒฐ๊ตญ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ ๋ชปํ์๋ค.
'โ๏ธ Capture The Flag (CTF)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Hero CTF v5] Hyper Loop Write Up (0) | 2023.05.14 |
---|---|
[PwnMe CTF 2023] Tree Viewer WriteUp (0) | 2023.05.07 |
[UMass CTF 2023] wrathsweatingbuddha WriteUp (Unsolved) (0) | 2023.03.25 |
[Line CTF 2023] Malcheeeeese WriteUp (Unsolved) (0) | 2023.03.25 |
[Digital Overdose CTF] This isn't bitrot WriteUp (0) | 2022.11.20 |