您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

用Python读写二进制文件

用Python读写二进制文件

试试这个功能

def four_byte_xor(buf, key):
    outl = []
    for i in range(0, len(buf), 4):
        chunk = buf[i:i+4]
        v = struct.unpack(b"=I", chunk)[0]
        v ^= key
        outl.append(struct.pack(b"=I", v))
    return b"".join(outl)

我不确定您是否实际将输入减少了4个字节,但是我没有尝试解密它。假设您的输入可被4整除。

编辑,基于新输入的新功能

def four_byte_xor(buf, key):
    key = struct.pack(b">I", key)
    buf = bytearray(buf)
    for offset in range(0, len(buf), 4):
        for i, byte in enumerate(key):
            buf[offset + i] = chr(buf[offset + i] ^ ord(byte))
    return str(buf)

这可能会得到改善,但是确实提供了正确的输出

python 2022/1/1 18:33:13 有316人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶