Esempio n. 1
0
def get_files(data):
    files = {}
    fstruct = GreedyRange(
        Struct(
            "dsize" / Int32ul,
            "nsize" / Int32ul,
            "name" / Bytes(256),
            "fdata" / Bytes(this.dsize),
        )
    )
    fdata = fstruct.parse(data)
    for file in fdata:
        if file["nsize"] > 1 and ord(file["name"][1]) == 0:
            filename = CString("utf16").parse(file["name"])
        else:
            filename = CString("ascii").parse(file["name"])
        filename = filename.encode("ascii", "ignore")
        files[filename] = file["fdata"]

    return files