仔细观察这份报文,发现字母最大为f,据此推测,这是一串16进制数
思考一下,有这么几种可能:
1.16进制->二进制->字符串
2.16进制->ASCII字符
看这串报文,既然16进制都这么长了,转成二进制也太长了吧
感觉1可能性不大,那就试试2
编写脚本,将16进制按2位分开,再转ASCII
虽然cha()函数可以传入16进制数,但是要传入int型整数
这里用int(str,16)直接转换成10进制数了
string = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
flag = ''
for i in range(0,len(string),2):
str = string[i] + string[i + 1]
flag += chr(int(str, 16) )
print(flag)
但是输出是一串乱码
排查发现,转换后的数字均大于127,但是ASCII码最大值为127,超出了ASCII表范围,所以显示乱码
修改一下,将转换后的数-128
string = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
flag = ''
for i in range(0,len(string),2):
str = string[i] + string[i + 1]
flag += chr(int(str, 16) - 128)
print(flag)
得到flag
值得注意的是,提交时不能只提交
hjzcydjzbjdcjkzkcugisdchjyjsbdfr
要按照flag格式提交
flag{hjzcydjzbjdcjkzkcugisdchjyjsbdfr}