题目描述:菜狗截获了一份报文如下c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2,生气地掀翻了桌子(╯°□°)╯︵ ┻━┻
脑洞大开的一条题,
但很值得思考,学习
先上个脚本
import re
a = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
b = re.findall(r'.{2}',a)
flag = ''
for i in b:
flag += chr(int(int(i,16)-128))
print(flag)
下面就是解释下常见思路是怎么样想出来的。
首先,
看到这一串东西,第一反应就是解密(废话),
那么就观察特征,
可以看到最大的F,
猜想十六进制,
解密看看,
发现不是,
那么就应该是经过某种特殊的变换,
===
把这些两个两个拆出来,
发现最大不超过256
别问为什么,
因为ascii有128,
而这里有超128的,
猜想加了128,
结果一试,ok。