2

I have an unbranded LED lamp with a remote control. I would like to reverse the protocol of the remote but unfortunately I can't create my own packages. The frequency of the remote transceiver is 2.4GHz (PA = 6dBm, channel = 1) so I used an NRF24 for collecting the frames from a button. When I 'replay' the collected messages the lamp reacts as expected.
As I observed the preamble is 5 bytes long and in the end of packet there is a 2 bytes long hash, probably a CRC16. (I think it should be some kind of hash because one bit change in the packet generates totally different value in last 2 bytes position.) Unfortunately I couldn't identify the type of transceiver so I cannot figure out the packet format. I tried to reverse the hash with various methods but without luck.

Do you have any idea what is the hash algorithm?

There are some test vectors from the same button.

aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  00 21  00 60 1f 55  57  84 c1
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  00 e1  00 60 1f 55  56  c4 cc
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  01 21  00 60 1f 55  56  86 95
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  01 e1  00 60 1f 55  55  c4 de
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  02 41  00 60 1f 55  55  75 64
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  02 61  00 60 1f 55  55  40 6c
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  02 81  00 60 1f 55  55  25 48
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  02 c1  00 60 1f 55  54  f5 6d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  02 c1  00 60 1f 55  54  f5 6d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  03 61  00 60 1f 55  54  42 38
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 01  00 60 1f 55  53  b8 9b
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 01  00 60 1f 55  53  b8 9b
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 21  00 60 1f 55  53  8d 93
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 41  00 60 1f 55  53  78 9f
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 61  00 60 1f 55  53  4d 97
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 61  00 60 1f 55  53  4d 97
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 81  00 60 1f 55  53  28 b3
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  04 81  00 60 1f 55  53  28 b3
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  05 01  00 60 1f 55  52  ba cf
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  05 81  00 60 1f 55  52  2a e7
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  05 a1  00 60 1f 55  52  1f ef
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  06 61  00 60 1f 55  51  49 3e
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  06 61  00 60 1f 55  51  49 3e
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  07 21  00 60 1f 55  50  8b 6e
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  07 a1  00 60 1f 55  50  1b 46
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  07 c1  00 60 1f 55  4f  e3 88
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  08 e1  00 60 1f 55  4e  c4 58
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  08 e1  00 60 1f 55  4e  c4 58
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  08 e1  00 60 1f 55  4e  c4 58
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  08 01  00 60 1f 55  4f  b1 5d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  08 61  00 60 1f 55  4f  44 51
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  09 41  00 60 1f 55  4e  73 0d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  09 21  00 60 1f 55  4e  86 01
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0a 41  00 60 1f 55  4d  75 f0
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0a 61  00 60 1f 55  4d  40 f8
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0a 81  00 60 1f 55  4d  25 dc
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0b 01  00 60 1f 55  4c  b7 a0
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0b 21  00 60 1f 55  4c  82 a8
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0b 41  00 60 1f 55  4c  77 a4
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0b 41  00 60 1f 55  4c  77 a4
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0b 61  00 60 1f 55  4c  42 ac
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c 21  00 60 1f 55  4b  8d 07
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c 61  00 60 1f 55  4b  4d 03
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c 61  00 60 1f 55  4b  4d 03
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c 81  00 60 1f 55  4b  28 27
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c c1  00 60 1f 55  4a  f8 02
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c c1  00 60 1f 55  4a  f8 02
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c e1  00 60 1f 55  4a  cd 0a
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0c e1  00 60 1f 55  4a  cd 0a
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0d 01  00 60 1f 55  4a  ba 5b
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0d 81  00 60 1f 55  4a  2a 73
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e 01  00 60 1f 55  49  bc a6
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e 21  00 60 1f 55  49  89 ae
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e 61  00 60 1f 55  49  49 aa
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e 81  00 60 1f 55  49  2c 8e
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e a1  00 60 1f 55  49  19 86
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e c1  00 60 1f 55  48  fc ab
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0e e1  00 60 1f 55  48  c9 a3
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f 01  00 60 1f 55  48  be f2
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f 21  00 60 1f 55  48  8b fa
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f 61  00 60 1f 55  48  4b fe
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f 61  00 60 1f 55  48  4b fe
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f 61  00 60 1f 55  48  4b fe
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f a1  00 60 1f 55  48  1b d2
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f c1  00 60 1f 55  47  f1 2d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  0f c1  00 60 1f 55  47  f1 2d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 01  00 60 1f 55  47  b6 87
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 21  00 60 1f 55  47  83 8f
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 21  00 60 1f 55  47  83 8f
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 41  00 60 1f 55  47  76 83
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 61  00 60 1f 55  47  43 8b
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 e1  00 60 1f 55  46  c3 82
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  10 e1  00 60 1f 55  46  c3 82
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  11 81  00 60 1f 55  46  24 fb
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  11 a1  00 60 1f 55  46  11 f3
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  11 a1  00 60 1f 55  46  11 f3
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  11 a1  00 60 1f 55  46  11 f3
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  11 e1  00 60 1f 55  45  c3 90
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  11 e1  00 60 1f 55  45  c3 90
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  12 41  00 60 1f 55  45  72 2a
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  12 41  00 60 1f 55  45  72 2a
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  12 61  00 60 1f 55  45  47 22
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  12 61  00 60 1f 55  45  47 22
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  12 c1  00 60 1f 55  44  f2 23
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  12 c1  00 60 1f 55  44  f2 23
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  13 21  00 60 1f 55  44  85 72
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  13 21  00 60 1f 55  44  85 72
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  13 21  00 60 1f 55  44  85 72
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  13 61  00 60 1f 55  44  45 76
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  13 81  00 60 1f 55  44  20 52
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  13 e1  00 60 1f 55  43  c3 b5
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  14 a1  00 60 1f 55  43  1a f5
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  14 e1  00 60 1f 55  42  ca d0
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  15 81  00 60 1f 55  42  2d a9
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  15 a1  00 60 1f 55  42  18 a1
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  16 61  00 60 1f 55  41  4e 70
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  16 a1  00 60 1f 55  41  1e 5c
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  16 c1  00 60 1f 55  40  fb 71
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  16 e1  00 60 1f 55  40  ce 79
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  18 01  00 60 1f 55  5f  b6 13
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  18 c1  00 60 1f 55  5e  f6 1e
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  19 81  00 60 1f 55  5e  24 6f
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  19 a1  00 60 1f 55  5e  11 67
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1a 01  00 60 1f 55  5d  b2 ba
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1a c1  00 60 1f 55  5c  f2 b7
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1b 21  00 60 1f 55  5c  85 e6
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1b 81  00 60 1f 55  5c  20 c6
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1c 01  00 60 1f 55  5b  bf 41
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1d 01  00 60 1f 55  5a  bd 15
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1d 81  00 60 1f 55  5a  2d 3d
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1d a1  00 60 1f 55  5a  18 35
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1e 41  00 60 1f 55  59  7b ec
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1e c1  00 60 1f 55  58  fb e5
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1f 21  00 60 1f 55  58  8c b4
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1f 41  00 60 1f 55  58  79 b8
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1f 61  00 60 1f 55  58  4c b0
aa aa aa aa aa 90 8e 7c 64 ce 20 33 b8 a0 26 3f c0  1f e1  00 60 1f 55  57  c3 6b
  • 1
    Have you tried the generic technique there? It look like it should work, since the XOR of the following three given lines leads to the last one, which is strongly suggestive of an affine function.$$\mathtt{aaaaaaaaaa908e7c64ce2033b8a0263fc00 40 100601f55 53 b89b}\\ \mathtt{aaaaaaaaaa908e7c64ce2033b8a0263fc00 42 100601f55 53 8d93}\\ \mathtt{aaaaaaaaaa908e7c64ce2033b8a0263fc00 24 100601f55 55 7564}\\ \mathtt{aaaaaaaaaa908e7c64ce2033b8a0263fc00 26 100601f55 55 406c}$$ – fgrieu Jan 9 at 16:00
  • Amazing! No, I haven't. I assumed it is a non-linear function but you are right, this 'rule' is true in other cases as well. I'd be really curious how did you found it so quickly. Thank you! – Babud Imre Jan 9 at 18:33
  • Facing an unknown Frame Check Sequence, first thing is to check if it is affine. I took the lines; removed spaces; sorted; removed duplicates; kept the few columns that change; found two linear dependencies by visual inspection, both consistent with affine; concluded this is affine (as all CRCs are) beyond reasonable doubt. But unless I err, this is not any of the 32768 natural 16-bit CRCs (giving a constant remainder when the FCS is included with the same convention as the rest) for either byte endianness. Do you know endianness, and the exact relation between physical bits and the hex dump? – fgrieu Jan 9 at 20:31
  • Yes, that was also my guess. I wrote a script which tries to bruteforce the CRC16 with all of given parameters (poly, start, final xor, revin, revout) in most of the possible combinations but without success. <br> Unfortunately I do not know such stuffs. The remote is in a closed case and I cannot open unless I do not break it. I opened the receiver side but there is no mark on transceiver, so I have no idea about the physical layer. (It would be the easiest way to check the hash algo in the datasheet). I used a cheap RF big endian transceiver called NRF24L01+ for collecting data from air. – Babud Imre Jan 9 at 21:45
  • I'm glad you have received an answer, but the question remains off topic on this site, so I've declined to reopen it. – Maarten Bodewes Jan 9 at 22:25
5

As explained there for a similar problem, facing an unknown Frame Check Sequence, the first thing should be to determine if it is an affine function of the frame data, for the sense that has in cryptography. This can be defined by the property:

For any set with an odd number of frames of equal length, the XOR of the Frame Check Sequences for these frames is also the FCS for the (often, other) frame obtained by XOR-ing the data portion of the frames in the set.

All CRCs are affine (including non-standard variations); secure cryptographic hashes and Message Authentication Codes are not.

There is evidence that indeed that FCS is affine: it is easy to isolate blocks of four (or larger even number) of different lines such that one is the XOR of the others, and that allows prediction of the last two bytes for most lines. Two examples:

aaaaaaaaaa908e7c64ce2033b8a0263fc0 0241 00601f55 55 7564
aaaaaaaaaa908e7c64ce2033b8a0263fc0 0261 00601f55 55 406c
aaaaaaaaaa908e7c64ce2033b8a0263fc0 0401 00601f55 53 b89b
aaaaaaaaaa908e7c64ce2033b8a0263fc0 0421 00601f55 53 8d93

aaaaaaaaaa908e7c64ce2033b8a0263fc0 0441 00601f55 53 789f
aaaaaaaaaa908e7c64ce2033b8a0263fc0 0501 00601f55 52 bacf
aaaaaaaaaa908e7c64ce2033b8a0263fc0 0661 00601f55 51 493e
aaaaaaaaaa908e7c64ce2033b8a0263fc0 0721 00601f55 50 8b6e

Using Gaussian elimination, I verified that all the question's 93 given distinct lines are consistent with an affine function, and determined the influence on the rightmost two bytes of the 13 bits that vary in the rest of the frame. Therefore, the whole data set becomes equivalent to (any) one of it lines, and the following short table telling the influence on the FCS of toggling each of the 13 bits:

byte  byte    FCS influence
index mask    (bytes 24 and 25)
 17   0x10    0x157F
 17   0x08    0x1BBD
 17   0x04    0x0DDE
 17   0x02    0x06EF
 17   0x01    0x1275
 18   0x80    0x9028
 18   0x40    0xC004
 18   0x20    0x3508
 23   0x10    0x1231
 23   0x08    0x0918
 23   0x04    0x048C
 23   0x02    0x0246
 23   0x01    0x1021

This is enough to compute the FCS of 213 different frames, starting from that of the reference frame, and XORing its FCS with the FCS influence for any bit that differs from the reference frame. The code is only a few lines of C. That works for any affine function when we have adequate examples. We need one example frame per frame bit excluding FCS when we can choose the example frames, and typically only a few more frames for uniformly random frames.


There is further regularity in there! The FCS influence for the 5 bits of byte 23 is precisely that expected for the CRC-16-CCITT polynomial x16+x12+x5+1 (when using big-endian convention): the influence of bit i counting from the right (here 26*8-1-n with n from the left and 0-based) is the value obtained by computing the remainder of the polynomial division of xi by x16+x12+x5+1, and turning the remainder polynomial to a value by evaluating it for x=2.

E.g., for influence of byte 23 mask 0x10, evaluating the remainder of the polynomial division of x20 by x16+x12+x5+1 , or equivalently 0x100000 by 0x011021, goes 0x100000^(0x011021<<4) = 0x010210 then 0x010210^(0x011021<<0) = 0x1231.


One possibility is that this FCS is one of countless failed attempts to implement CRC-16-CCITT; though one that went unusually out of track, in a way that still puzzles me. I'm tempted to incriminate a partial or misaligned capture, but that tends to conflicts with the statement:

When I 'replay' the collected messages the lamp reacts as expected.

More samples might help. Perhaps, put this into a pastebin linked in the question or a comment. Perhaps, give settings of the NRF24L01 device and/or software used for the capture.

  • Thank you very much for your effort. I read your post several times in the past few hours and after every iteration it gives me more and more details how can I reverse a CRC function. Awsome, I learnt a lot. :-) – 0x6261627564 Jan 10 at 18:37
  • 1
    Thank you much for your time, I really appreciate that. I started to looking for the additional parameters of CRC algorithm with 0x1021 polynom again, but I accepted your answer because this 'lookup table' solve the problem easily. I would never have thought that it is possible to recreate the hash in such an easy way. In general it means if only few bits changes in a messages and/or the protected message is too short (like a CAN message) then we can easily manipulate any affine functions. According to my automotive experience it could be a serious hazard. I'll create additional logs. – 0x6261627564 Jan 11 at 14:16
  • @Babud Imre: indeed, CRCs are fine to protect message integrity against random errors, but not intelligent attacks. No affine function does. That standard cryptographic fact is sometime overlooked. I'm still puzzled: I reverse-engineered many 16-bit CRCs, but never found one that deviant! My guess is that it is (bad) custom crypto, or due to some alteration in the capture process (though I can't figure one with this effect) – fgrieu Jan 11 at 14:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.