Crypto-xor2

程序分析

  • ”轮环异或加密,你能解开么?格式:flag{}“
  • 文件下载有一个py文件和一个文本文件
  • 从描述可得知就是一个异或加密
  • 从图中分析得知密钥是四位的密钥且不知道,然后flag也不知道。基本上无解了
  • But!!!从描述中可知flag前四位是"flag"又是异或加密。异或有个特性就是异或两次等于原文那么是不是可以利用给出的前四个flag进行key的解密呢

解密脚本编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 从cipher中整理得到的数据
encData = [
0x1E, 0x14, 0x19, 0x1F, 0x03, 0x1E, 0x1B, 0x1B, 0x1A, 0x48, 0x4E, 0x4E, 0x4D, 0x55, 0x1A, 0x1B,
0x1D, 0x4D, 0x55, 0x1C, 0x4B, 0x4A, 0x41, 0x55, 0x19, 0x1B, 0x19, 0x4F, 0x55, 0x41, 0x41, 0x49,
0x4F, 0x41, 0x1A, 0x1C, 0x1B, 0x41, 0x1D, 0x1C, 0x4B, 0x05
]


# 解密出key
key = [0] * 4
key[0] = encData[0] ^ ord('f')
key[1] = encData[1] ^ ord('l')
key[2] = encData[2] ^ ord('a')
key[3] = encData[3] ^ ord('g')

# 循环解密Flag
for i, v in enumerate(encData):
print(chr(v ^ key[i % len(key)]),end='')