Simple XOR - Writeup by AI
题目信息
- 题目名称: simple xor
- 分类: Crypto
- 题目描述: Found the following message: XUBdTFdScw5XCVRGTglJXEpMSFpOQE5AVVxJBRpLT10aYBpIVwlbCVZATl1WTBpaTkBOQFVcSQdH 😃
分析过程
1. 理解加密算法
从提供的 xor.py 文件中,我们可以看到加密逻辑:
python
sxor = ':)'
sflag = 'this is the flag'
flag = bytearray(sflag)
xor = bytearray(sxor)
encrypted = ''
for i in range(0,len(flag),2):
encrypted += str(hex(flag[i] ^ xor[0]))[2:]
encrypted += str(hex(flag[i+1] ^ xor[1]))[2:]
print encrypted
加密步骤:
- 使用两字节密钥
:) - 对明文的每个字节与密钥交替进行XOR运算
- 将XOR结果转换为十六进制字符串(去掉
0x前缀) - 拼接所有十六进制字符串
2. 密文分析
题目给出的密文:XUBdTFdScw5XCVRGTglJXEpMSFpOQE5AVVxJBRpLT10aYBpIVwlbCVZATl1WTBpaTkBOQFVcSQdH
观察密文字符:
- 长度:76个字符
- 包含字符:数字、大写字母、小写字母
- 包含非十六进制字符(如 X, U, J, G, W 等)
这说明密文不是直接的十六进制字符串。
3. 关键发现
注意到密文末尾有 :),这提示我们密钥就是 :)。
尝试将密文进行 Base64解码:
- 76个字符的Base64字符串可以解码为57个字节
- Base64编码常用于将二进制数据转换为可打印字符
4. 解密步骤
Step 1: Base64解码密文
python
import base64
encrypted_str = 'XUBdTFdScw5XCVRGTglJXEpMSFpOQE5AVVxJBRpLT10aYBpIVwlbCVZATl1WTBpaTkBOQFVcSQdH'
decoded_bytes = base64.b64decode(encrypted_str)
Step 2 : 与密钥 :) 进行XOR解密
python
key = ':)'
decrypted = ''
for i in range(len(decoded_bytes)):
decrypted += chr(decoded_bytes[i] ^ ord(key[i % 2]))