I am trying to reverse engineer a 16 bit checksum algorithm of one relatively old (10 years) LAN game that is no longer supported nor has source code available. As it seems, data packets don't have standard structure when it comes to placing checksum bytes: Example 1: 1f456e01 Where first byte `1f` seems to repeat itself in each packet and I assume it doesn't take part in generating checksum. Next two bytes `456e` represent a checksum that presumably is a variation of `CRC-CCITT` with non-standard polynomial. Lastly, `01` byte represents data. Here are few more examples of packets with various data values: 1f466e02 1f496e05 1f4b6e07 1f4c6e08 I wish I could post more diverse values but these are only ones I've been able to capture so far. I tried fiddling with [reveng][1] to reverse engineer the polynomial with following command: reveng -w 16 -s 01456e 02466e 05496e Here the checksum bytes are relocated at the end, as reveng expects them in this format. But this gave no results. I have tried comparing these checksums to most if not all common crc algorithms using online calculators but none of them give even close outputs to those above. Honestly, I don't know where else to look. Any hints/help or anything at all is much appreciated. **EDIT:** I managed to capture some more samples, however they are slightly different in terms of structure: Example 1: 0e ed76 00 312e362e37544553540000000000000000000000000000000000000000 00 Here the first byte `0E` represents a sort of index, that I still think doesn't take part in generating checksum. Then comes two byte checksum `ED76` followed by `00` sort of separator (newline?) byte that I also think doesn't take part in computing checksum. Afterwards follows data sequence: `312e362e37544553540000000000000000000000000000000000000000` which finally is proceeded by `00` terminating character that I also think has nothing to do with checksum. I can manipulate with the data part of this sequence of bytes so here are some more examples: Example 2: HEX: 0E109D00414141414141414141414141414141414141414141414141414141414100 ASCII: ....AAAAAAAAAAAAAAAAAAAAAAAAAAAAA. Example 3: HEX: 0E8DC300424242424242424242424242424242424242424242424242424242424200 ASCII: ....BBBBBBBBBBBBBBBBBBBBBBBBBBBBB. Example 4: HEX: 0E403500313131313131313131313131313131313131313131313131313131313100 ASCII: [email protected]. Example 5: HEX: 0E34CF00353535353535353535353535353535353535353535353535353535353500 ASCII: .4..55555555555555555555555555555. Example 6: HEX: 0E3E0C00313233343536373839304142434445464748494A4B4C4D4E4F5051525300 ASCII: .>..1234567890ABCDEFGHIJKLMNOPQRS. [1]: http://reveng.sourceforge.net/