I've been analyzing some SPI EEPROM memory, and tried to find out which Checksum algorithm has been used;
For example I've got data: 14567D9h and checksum 187h. Assuming it's normal 16 bit check sum I've got 86h - no match, but after adding 101h it magically changes to 391h
Another Example: 8ADh and check sum B5h with this one is normal - 16 bit checksum results with exact number: B5h (perfect match)
I've checked it with 28 samples i was able to intercept. For some values i have to add 101h to checksum and for some it is only needed to sum it up.
Parity check doesn't fit - if you want I can share some more data - all gathered in one excel file, and calculated. After few days of brainstorm with my friend we haven't come up with anything :/
Maybe there is some additional part in the Algorithm, which i haven't found out yet? CRC and tonnes of other algorithms were checked - only 16 bit checksum was giving any promising results Thanks for help in advance!
copy of my spreadsheet: Spreadsheet
some data I've grabbed (more in spreadsheet):
F401 84290145h B500 08AD0000h D400 5D310145h 4000 79810145h B500 08AD0000h C100 0AB70000h C100 0AB70000h 3401 F08500BEh E901 FE2C00BEh A400 01E400BFh 2A01 0D5D00BFh 7E00 208304D7h C100 0AB70000h
You can read it this way: checksum: 01F4 (lways 2 bytes) value: 01458429 (always 4 bytes)
as you can see you have to switch positions of the bytes to read data properly