This may be trivial, and may be impossible... this is outside my field but willing to learn.
I have a hardware device that accepts a network MAC address (6 bytes of data) like this: 38-60-77-EC-1D-33
and produces a 2-byte hash, like this: F0-9B
The same address always produces the same hash, and I can test any address I want, but only by hand. I have tried a handful of addresses to see if it's just a linear value, but it's not. This may simply be a checksum - there's no obvious security application, it's just a hardware handshake.
... is it going to be possible to reverse-engineer this? If so, how should I go about it?
This is going to be hard, isn't it.
Edit: Here are some samples:
00:00:00:00:00:00 684C 00:00:00:00:00:01 1717 00:00:00:00:00:02 96FA 00:00:00:00:00:03 E9A1 00:00:00:00:00:04 9520 00:00:00:00:00:05 EA7B 00:00:00:00:00:06 6B96 00:00:00:00:00:07 14CD 00:00:00:00:00:08 9294 00:00:00:00:00:09 EDCF 01:00:00:00:00:00 DF52 02:00:00:00:00:00 1BC7 00:01:00:00:00:00 BB1B 00:00:01:00:00:00 6434
Edit #2: There is clearly a pattern. I've run 50 strategic numbers and so far I've figured out that:
- The last digit repeats a pattern every 16 (F) numbers where every number appears exactly once. The digits change after 256 (FF) numbers but still repeat in groups of 16.
- Also in each group of 16 numbers, the first digit is one of only 4 numbers. Each group of 16 (so far) uses a different 4 numbers, but the order they appear is perfectly consistent.
I think at this point it's just going to be "educated" brute force, but I'm much more optimistic than I was 4 hours ago. I've tried a few online checksum calculators, but if this sounds like a known algorithm I'd appreciate the help, and I'll keep hacking away...