solution.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:ructf-2017-tasks 作者: HackerDom 项目源码 文件源码
def main(filename):
    width, height, pixels, meta = png.Reader(filename=filename).read()
    image_bytes = open(filename, "rb").read()
    all_idat_pos = tpng.find_list_in_list(image_bytes, b'IDAT')
    if len(all_idat_pos) != 1:
        raise Exception(f"IDAT count is {len(all_idat_pos)}")
    idat_pos = all_idat_pos[0]
    original_idat_len = struct.unpack("!I", image_bytes[idat_pos - 4: idat_pos])[0]
    idat_content = image_bytes[idat_pos + 4: idat_pos + 4 + original_idat_len]
    uncompressed = zlib.decompress(idat_content)
    filter_bytes = [uncompressed[i * (len(uncompressed) // height)] for i in range(0, height)]
    result = decode5(filter_bytes)
    result_str = ''.join(chr(i) for i in result)
    print(f'"{result_str}"')
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号