IDA 打开看看
找到 main 函数,我们看到有异或字符,和 global 比较,相同的话就获得 flag
第 9 行得知 flag 的长度为 33
第 13 行比较 v6 和 global 处存放的前 31 位字符是否相同;相同则输出 success
从 main 函数里面可以得到 V6 的处理方式为 v6 [i] 等于 v6 [i] 原来的值与 v6 [i-1] 按位异或.
查看 global 字符串
编写解密脚本
s = ['f',10,'k',12,'w&O.@',17,'x',13,'Z;U',17,'p',25,'F',31,'v"M#D',14,'g',6,'h',15,'G2O',0] | |
ss = 'fkw&O.@xZ;UpFv"M#DghG2O' | |
x = "f" | |
a = [102, 10, 107, 12, 119, 38, 79, 46, 64, 17, 120, 13, 90, 59, 85, 17, 112, 25, 70, 31, 118, 34, 77, 35, 68, 14, 103, 6, 104, 15, 71, 50, 79 ,0] #字符串转换成 10 进制 | |
for i in range(1,len(a)): | |
x += chr(a[i]^a[i-1]) #对应 v6 | |
print(x) |
拿到 flag: flag{QianQiuWanDai_YiTongJiangHu}
参考
https://www.runoob.com/python/python-operators.html
https://blog.csdn.net/weixin_44731100/article/details/89156141