1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # 预设的比较值 v5 = [ 0x7E, 0x35, 0x0B, 0x2A, 0x27, 0x2C, 0x33, 0x1F, 0x76, 0x37, 0x1B, 0x72, 0x31, 0x1E, 0x36, 0x0C, 0x4C, 0x44, 0x63, 0x72, 0x57, 0x49, 0x08, 0x45, 0x42, 0x01, 0x5A, 0x04, 0x13, 0x4C ] # 当代码中写 v5[7] = 31; 时:
# 31 是一个十进制数。 # 在计算机中,这个数字以二进制形式存储:00011111 # 用十六进制表示就是 0x1F # 这就是为什么 v5[7] = 31; 对应 0x1F 的原因。
# 同样的原理适用于其他的赋值:
# v5[8] = 118; 对应 0x76,因为 118 的十六进制表示就是 76 # v5[9] = 55; 对应 0x37,因为 55 的十六进制表示就是 37 # 以此类推...
# 反向操作获取flag flag = "" for i in range(30): # v7 应该等于30 flag += chr(v5[i] ^ (78 - i))
print("Flag:", flag)
|