攻防世界——掀桌子

分析

每个字符最大不大于'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,刚好都可以不乱码。

代码

  1. 转换成十进制代码
#第七行换成这个
flag += str(int(i,16)) + ','   
  1. 每组数组减去128,再转换成十进制代码。
#第七行换这个
flag += chr(int(i,16)-128)

结果

这是什么玩意!!怎么还有呢

全剧终。

hhh,其实最后外面加上flag{}就可以了

posted @ 2021-01-04 21:53  Throokie  阅读(103)  评论(0编辑  收藏  举报