Ejemplo n.º 1
0
def extract_strings(data, keys):
    fd = BytesIO(keys)
    keys = [fd.read(16) for i in range(U8.read(fd))]
    if not keys:
        return

    fd = BytesIO(data)
    for i in range(U32LE.read(fd)):
        msg = fd.read(U32LE.read(fd))
        key = keys[i % len(keys)]

        return Decryptor(key).decrypt(msg)
Ejemplo n.º 2
0
def read_tag(fd):
    header = U16LE.read(fd)
    tag_type = header >> 6
    tag_length = header & 0x3f
    if tag_length == 0x3f:
        tag_length = U32LE.read(fd)

    tag_data = fd.read(tag_length)

    return Tag(tag_type, tag_data)