import crcmod from hexdump import hexdump infile = open("AIR.ZD2", "rb") #infile = open("sound_packs/Uno_Drum_lib_Factory.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology1.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology2.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology3.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology4.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology5.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology6.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology7.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology8.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology9.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_Anthology10.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_DMX.dfu", "rb") #infile = open("sound_packs/Uno_Drum_lib_STG.dfu", "rb") data = infile.read() print(hexdump(data[0:16])) checksum = int.from_bytes(data[8:12],byteorder='little') #checksum = int.from_bytes(data[8:12],byteorder='big') print("Stated checksum", hex(checksum)) print("inverted", hex(checksum ^ 0xffffffff)) ''' Name Polynomial Rev? Init-value XOR-out Check crc-32 0x104C11DB7 True 0x00000000 0xFFFFFFFF 0xCBF43926 crc-32-bzip2 0x104C11DB7 False 0x00000000 0xFFFFFFFF 0xFC891918 crc-32c 0x11EDC6F41 True 0x00000000 0xFFFFFFFF 0xE3069283 crc-32d 0x1A833982B True 0x00000000 0xFFFFFFFF 0x87315576 crc-32-mpeg 0x104C11DB7 False 0xFFFFFFFF 0x00000000 0x0376E6E7 posix 0x104C11DB7 False 0xFFFFFFFF 0xFFFFFFFF 0x765E7680 crc-32q 0x1814141AB False 0x00000000 0x00000000 0x3010BF7F jamcrc 0x104C11DB7 True 0xFFFFFFFF 0x00000000 0x340BC6D9 xfer 0x1000000AF False 0x00000000 0x00000000 0xBD0BE338 ''' crc32 = crcmod.Crc(0x104c11db7, rev=True, initCrc=0x00000000, xorOut=0xFFFFFFFF) #crc32 = crcmod.Crc(0x104c11db7, rev=False, initCrc=0x00000000, xorOut=0xFFFFFFFF) #crc32 = crcmod.Crc(0x11EDC6F41, rev=True, initCrc=0x00000000, xorOut=0xFFFFFFFF) #crc32 = crcmod.Crc(0x1A833982B, rev=True, initCrc=0x00000000, xorOut=0xFFFFFFFF) #crc32 = crcmod.Crc(0x104c11db7, rev=False, initCrc=0xFFFFFFFF, xorOut=0x00000000) #crc32 = crcmod.Crc(0x104c11db7, rev=False, initCrc=0xFFFFFFFF, xorOut=0xFFFFFFFF) #crc32 = crcmod.Crc(0x1814141AB, rev=False, initCrc=0x00000000, xorOut=0x00000000) #crc32 = crcmod.Crc(0x104c11db7, rev=True , initCrc=0xFFFFFFFF, xorOut=0x00000000) #crc32 = crcmod.Crc(0x1000000AF, rev=False, initCrc=0x00000000, xorOut=0x00000000) # this seems to be the section to test crc32.update(data[12:-16]) if (crc32.crcValue == checksum): print("Match @", crc32.hexdigest()) if (crc32.crcValue == checksum ^ 0xffffffff): print("Inverted Match @", crc32.hexdigest())