CryptoHack [crypto] XOR Properties
2024. 11. 17. 19:13ㆍWARGAME/CryptoHack
320x100
암호학 중에서 XOR 문제 입니다.
XOR의 4가지 주요 속성을 사용하여 아래 FLAG의 값을 찾는 문제다.
1. 교환법칙: A ⊕ B = B ⊕ A
교환하여 XOR 연산을 수행해도 값은 같다.
2. 결합법칙: A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C
어떤 XOR 연산을 먼저 하든 값은 같다.
3. 항등법칙: A ⊕ 0 = A
어떠한 값과 0을 XOR 연산하면 어떠한 값 그대로이다.
4. 자기 역함수: A ⊕ A = 0
똑같은 값을 XOR 연산하면 0이다.
문제풀이는 간단하다.
FLAG^KEY1 ^KEY3 ^KEY2 = 04ee... 에서
양 변에 ^KEY1 ^KEY3 ^KEY2를 해주면 KEY1과 KEY2, KEY3 값들이 모두 0이 되고,
FLAG^0 = FLAG 이기 때문에 FLAG 값을 찾을 수 있다.
계산하는 방법은 2가지다.
1. 사이트
2. python
long_to_bytes를 사용하면 문자열로 변환할 수 있다.
(XOR사이트를 이용했더니 문자열로 바꿔야해서 코드에선 추가를 해보았다^!^)
from Crypto.Util.number import *
key1 = 0xa6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313
key23 = 0xc1545756687e7573db23aa1c3452a098b71a7fbf0fddddde5fc1
FLAG = 0x04ee9855208a2cd59091d04767ae47963170d1660df7f56f5faf
key123 = key1 ^ key23
FLAG = FLAG ^ key123
# 숫자 값을 문자열로 변환
flag_str = long_to_bytes(FLAG).decode('utf-8')
print(flag_str)
320x100
320x100
'WARGAME > CryptoHack' 카테고리의 다른 글
CryptoHack [crypto] Modular Exponentiation / Public Keys (0) | 2024.12.03 |
---|---|
CryptoHack [crypto] Favourite byte (0) | 2024.11.18 |