I am reverse-engineering a device here, that has a peculiar twist in its protocol. Every 15-seconds, there's what I call a Challenge/Response exchange, without which the device loses some functionality. Now I don't know if this is actually a challenge/response, or if it is merely some needed data (timing or otherwise), but it behaves as such.
Here are two columns of 4-bytes which get exchanged. The first (on left) of each pair is the "challenge", and the second (on right) of each pair is the "correct" response to that challenge. As you may note, I have injected some simple patterns for the challenges, to make it a bit easier to get an idea of what is happening.
In real-life, the "challenge" always has an ef ("f") for the final digit, but the artificial ones I used try other patterns too. It does seem to give the same answer regardless of the final digit of the challenge.
The challenges are state-less: repeating the same challenge at any point will give the same correct response value.
This could just be a CRC or checksum of some kind.
Can anyone here figure out what's happening?
0xffffffff 0xffffffff
0x80000001 0x80fdfcfe
0x80000002 0x80fdfcfe
0x80000004 0x80fdfcfe
0x80000008 0x80fdfcfe
0x80000000 0x80fdfcfe
0x40000000 0x40fdfcfe
0x20000000 0x20fdfcfe
0x10000000 0x10fdfcfe
0x08000000 0x08fdfcfe
0x04000000 0x04fdfcfe
0x02000000 0x02fdfcfe
0x01000000 0x01fdfcfe
0x00800000 0x807efdfe
0x00400000 0x403efdfe
0x00200000 0x201efdfe
0x00100000 0x100efdfe
0x00080000 0x0806fdfe
0x00040000 0x0402fdfe
0x00020000 0x02fffcfe
0x00010000 0x01fefcfe
0x00008000 0x80fe7eff
0x00004000 0x407e3eff
0x00002000 0x203e1eff
0x00001000 0x101e0eff
0x00000800 0x080e06ff
0x00000400 0x040602ff
0x00000200 0x0202fffe
0x00000100 0x01fffdfe
0x00000080 0x150ae4fe
0x00000040 0x83b4f0fe
0x00000020 0xe5e4f6fe
0x00000010 0xf8f3f9fe
0x00000008 0xfffcfcfe
0x00000004 0xfffcfcfe
0x00000002 0xfffcfcfe
0x00000001 0xfffcfcfe
0x00000000 0xfffcfcfe
0x8000000f 0x80fdfcfe
0x4000000f 0x40fdfcfe
0x2000000f 0x20fdfcfe
0x1000000f 0x10fdfcfe
0x0800000f 0x08fdfcfe
0x0400000f 0x04fdfcfe
0x0200000f 0x02fdfcfe
0x0100000f 0x01fdfcfe
0x0080000f 0x807efdfe
0x0040000f 0x403efdfe
0x0020000f 0x201efdfe
0x0010000f 0x100efdfe
0x0008000f 0x0806fdfe
0x0004000f 0x0402fdfe
0x0002000f 0x02fffcfe
0x0001000f 0x01fefcfe
0x0000800f 0x80fe7eff
0x0000400f 0x407e3eff
0x0000200f 0x203e1eff
0x0000100f 0x101e0eff
0x0000080f 0x080e06ff
0x0000040f 0x040602ff
0x0000020f 0x0202fffe
0x0000010f 0x01fffdfe
0x0000008f 0x150ae4fe
0x0000004f 0x83b4f0fe
0x0000002f 0xe5e4f6fe
0x0000001f 0xf8f3f9fe
0x0000000f 0xfffcfcfe