zonnin

目录

gif

题目描述:菜狗截获了一张菜鸡发给菜猫的动态图,却发现另有玄机

打开压缩包,发现 gif文件夹 里面有 104张jpg,只有黑和白两种图片,其他除了文件名都是一模一样的

猜想图片表示二进制,使用 Python ,暂时认为白色为 0,黑色为 1

import hashlib
import libnum

ans = []
for i in range(104):
    filename = \'gif/%d.jpg\' % i
    with open(filename, \'rb\') as f:
        h = hashlib.md5(f.read())
        if h.hexdigest().startswith(\'5f\'):
            ans.append(\'0\')
        else:
            ans.append(\'1\')

flag = libnum.n2s(int(\'\'.join(ans), 2))
print(flag)

得到结果

flag{FuN_giF}

掀桌子

题目描述:菜狗截获了一份报文如下c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2,生气地掀翻了桌子(╯°□°)╯︵ ┻━┻

报文目测十六进制,但是每个字节(8位)都大于 126(可见字符最大值),百度说是减去 128,所以 Python

cipher = \'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2\'
plain = [\'\'.join(a) for a in zip(cipher[0::2], cipher[1::2])]
plain = [int(a, 16) for a in plain]
plain = [a - 128 for a in plain]
plain = [chr(a) for a in plain]
plain = \'\'.join(plain)
print(plain)

得到结果 Hi, FreshDog! The flag is: hjzcydjzbjdcjkzkcugisdchjyjsbdfr

flag{hjzcydjzbjdcjkzkcugisdchjyjsbdfr}

分类:

技术点:

相关文章: