CTF解密MISC(一)

菜狗截获了一份报文

c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2

观察均为a-f 0-9 很像md5,但md5无法解密
考虑可能为16进制,每两个字符为16进制,这样每个字符表达的范围是255,ASC2的范围是0-127,所以还要减去128,注意不是base16,因为base16最大为7E。虽然base16的编码原理和这个一样,但c8开头就已经超过了范围。

import re
a="c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
b=re.findall(r".{2}",a)
flag=''
for i in b:
    flag+=chr(int(i,16)-128)
print(flag)

可以得到flag为: Hi, FreshDog! The flag is: hjzcydjzbjdcjkzkcugisdchjyjsbdfr

r:python里有特殊意义的字符如\b,转换成原生字符(就是去除它在python的特殊意义),不然正则表达式有冲突,为了避免这种冲突可以在规则前加原始字符r

int(“num”,base=10)默认十进制,若有第二个参数,num必须为字符串

多观察观察,做多了也就会了

One thought on “CTF解密MISC(一)

发表评论