攻防世界——掀桌子
分析
每个字符最大不大于'f'
所以,这是个16进制字符串
而16进制字符串转换成十进制的ascii码一般都是两个两个转
(汉字除外)
python代码
'''
import re
a = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
b = re.findall(r'.{2}',a)
flag = ''
for i in b:
flag += chr(int(i,16))
print(flag)
'''
转换结果
分析
将他转换成10进制数值看看
转换出来的数值太大了。怪不得都乱码。
接下来就是脑洞时刻了
每组数值减去128,刚好都可以不乱码。
代码
- 转换成十进制代码
#第七行换成这个
flag += str(int(i,16)) + ','
- 每组数组减去128,再转换成十进制代码。
#第七行换这个
flag += chr(int(i,16)-128)
结果
这是什么玩意!!怎么还有呢
全剧终。
hhh,其实最后外面加上flag{}就可以了
搞CTF