0
votes

I'm trying to check the FCS of an ethernet frame thanks to tools on different website.

I first used this website: http://depa.usst.edu.cn/chenjq/www2/software/crc/CRC_Javascript/CRCcalculation.htm and find the next FCS : 0xD4C3C62F (the frame below)

Then, I tried this one : http://www.scadacore.com/field-applications/programming-calculators/online-checksum-calculator/ and I found the correct CRC : 0x7AD56BB3 but nothing of the different kind of CRC-32 (normal, reversed...) correspond to the CRC find on the first website.

Is there any link between algorithms?

Thank you!

Here is the hexadecimal frame (no start of frame) : 000AE6F005A3001234567890080045000030B3FE0000801172BA0A0000030A00000204000400001C894D000102030405060708090A0B0C0D0E0F10111213

2

2 Answers

1
votes

Beware of online CRC calculators.

The Ethernet CRC of your string is actually 0xb36bd57a. It is stored in reverse order in the stream, which is why you wrote it incorrectly as 0x7AD56BB3.

There are many CRC definitions, including many 32-bit CRC definitions. See the RevEng catalog for examples. The one you want happens to be called "CRC-32", with this definition.

The "CCITT-32" (a name I have not seen before) being calculated in your first link is some other definition. It does not even appear in the RevEng catalog.

0
votes

A more descriptive and clear update to @Mark Adler's answer (I am new here so I can't edit or comment)

The CRC you are searching for is called CRC-32/ISO-HDLC. You can check the following online calculator and check the one named "CRC-32": https://crccalc.com/

Each CRC32 algorithm has its own parameters for its generation, like polynomial, init,...etc The IEEE802.3 standard defined the CRC32 algorithm parameters for the FCS field to have the polynomial(0x04c11db7), init/xorIn(0xffffffff), xorout(0xffffffff)