结合题目详解;
题目描述:菜狗截获了一份报文如下c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2,生气地掀翻了桌子(╯°□°)╯︵ ┻━┻
题目给了一串字符是16进制,把其两个为一组转为十进制,(2位十六进制可表示1个字节)
脚本如下
string = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
flag = ''
for i in range(0,len(string), 2): #分为两个一组
s = "0x" + string[i] + string[i+1]#变成s=0xc8 ,0xe9的形式
flag += chr(int(s, 16)-128) #16转10.并减128
print int(s,16)
print(flag)
本将该字符串两两分组转换成字节,发现所有字节均大于128,我们又知道ASCII码表示范围是0-127,于是每一个字节都减去128,再转换成字符串,得到flag
flag{hjzcydjzbjdcjkzkcugisdchjyjsbdfr}