squidge
March 2nd, 2012, 19:02
I have two black boxes communicating with each other. One sends out a challenge and the other gives back the answer. If the wrong answer is given, the former refuses to communicate further.
The challenge is 8 bytes, the response is 2 bytes. Although box A refuses to communicate further if the answer to its challenge is incorrect, Box B will quite happily respond to any challenge thrown at it, but I only have it for a limited time.
So I've made a small app to talk to box B and fake some challenges.
I was thinking maybe someone has seen this and recognises it as a standard(ish) implementation.
00 00 00 00 00 00 00 00 -> B477
01 00 00 00 00 00 00 00 -> B677
02 00 00 00 00 00 00 00 -> B877
03 00 00 00 00 00 00 00 -> BA77
04 00 00 00 00 00 00 00 -> BC77
05 00 00 00 00 00 00 00 -> BE77
06 00 00 00 00 00 00 00 -> A077 - Ok, so when we rollover, we subtract 1 from upper nibble
07 00 00 00 00 00 00 00 -> A277
08 00 00 00 00 00 00 00 -> A477
09 00 00 00 00 00 00 00 -> A677
0A 00 00 00 00 00 00 00 -> A877
0B 00 00 00 00 00 00 00 -> AA77
0C 00 00 00 00 00 00 00 -> AC77
0D 00 00 00 00 00 00 00 -> AE77
0E 00 00 00 00 00 00 00 -> F077 - But that doesn't work here, maybe 9 is excluded and goes to F
0F 00 00 00 00 00 00 00 -> F277
10 00 00 00 00 00 00 00 -> F477
11 00 00 00 00 00 00 00 -> F677
12 00 00 00 00 00 00 00 -> F877
13 00 00 00 00 00 00 00 -> FA77
14 00 00 00 00 00 00 00 -> FC77
15 00 00 00 00 00 00 00 -> FE77
16 00 00 00 00 00 00 00 -> E077 - Ok
17 00 00 00 00 00 00 00 -> E277
18 00 00 00 00 00 00 00 -> E477
19 00 00 00 00 00 00 00 -> E677
1A 00 00 00 00 00 00 00 -> E877
1B 00 00 00 00 00 00 00 -> EA77
1C 00 00 00 00 00 00 00 -> EC77
1D 00 00 00 00 00 00 00 -> EE77
1E 00 00 00 00 00 00 00 -> F077 - Why goto F? I'd expect D
1F 00 00 00 00 00 00 00 -> F277
20 00 00 00 00 00 00 00 -> F477
21
22
23
24
25
26 00 00 00 00 00 00 00 -> E077
27
28
29
2A
2B
2C
2D 00 00 00 00 00 00 00 -> EE77
2E 00 00 00 00 00 00 00 -> 3077 - What the?
2F
30
31
32
33
34
35 00 00 00 00 00 00 00 -> 3E77
36 00 00 00 00 00 00 00 -> 2077
37
38
39
3A
3B
3C
3D 00 00 00 00 00 00 00 -> 2E77
3E 00 00 00 00 00 00 00 -> 3077
3F 00 00 00 00 00 00 00 -> 3277
40 00 00 00 00 00 00 00 -> 3477
41
42
43
44
45
46 00 00 00 00 00 00 00 -> 2077
47
48
49
4A
4B
4C
4D 00 00 00 00 00 00 00 -> 2E77
4E 00 00 00 00 00 00 00 -> 7077 - Why the sudden hike?
4F
50 00 00 00 00 00 00 00 -> 7477
51
52
53
54
55 00 00 00 00 00 00 00 -> 7E77
56 00 00 00 00 00 00 00 -> 6077
57
58
59
5A
5B
5C
5D 00 00 00 00 00 00 00 -> 6E77
5E 00 00 00 00 00 00 00 -> 7077
5F 00 00 00 00 00 00 00 -> 7277
60 00 00 00 00 00 00 00 -> 7477
61
62
63
64
65
66 00 00 00 00 00 00 00 -> 6077
67
68
69
6A
6B
6C
6D
6E 00 00 00 00 00 00 00 -> B077
6F 00 00 00 00 00 00 00 -> B277
--- Wrap ---
70 00 00 00 00 00 00 00 -> B477
So the high nibble changes are:
BAFEFE32327676B
Some others:
6E 01 00 00 00 00 00 00 -> B3 77
6E 02 00 00 00 00 00 00 -> 6E 77
6E 03 00 00 00 00 00 00 -> B1 77
6E 04 00 00 00 00 00 00 -> B4 77
6E 05 00 00 00 00 00 00 -> B7 77
6E 00 01 00 00 00 00 00 -> B0 77
6E 00 02 00 00 00 00 00 -> B0 77
6E 00 03 00 00 00 00 00 -> B0 77
6E 00 04 00 00 00 00 00 -> B0 77
6E 00 FF 00 00 00 00 00 -> B0 77 - I don't think the 3rd byte is actually used!
6E 00 00 FF 00 00 00 00 -> B4 77
00 00 00 00 FF 00 00 00 -> B7 74
00 00 00 00 00 FF 00 00 -> B4 77
00 00 00 00 00 00 FF 00 -> B7 74
00 00 00 00 00 00 00 FF -> B7 75
Any ideas?
The challenge is 8 bytes, the response is 2 bytes. Although box A refuses to communicate further if the answer to its challenge is incorrect, Box B will quite happily respond to any challenge thrown at it, but I only have it for a limited time.
So I've made a small app to talk to box B and fake some challenges.
I was thinking maybe someone has seen this and recognises it as a standard(ish) implementation.
00 00 00 00 00 00 00 00 -> B477
01 00 00 00 00 00 00 00 -> B677
02 00 00 00 00 00 00 00 -> B877
03 00 00 00 00 00 00 00 -> BA77
04 00 00 00 00 00 00 00 -> BC77
05 00 00 00 00 00 00 00 -> BE77
06 00 00 00 00 00 00 00 -> A077 - Ok, so when we rollover, we subtract 1 from upper nibble
07 00 00 00 00 00 00 00 -> A277
08 00 00 00 00 00 00 00 -> A477
09 00 00 00 00 00 00 00 -> A677
0A 00 00 00 00 00 00 00 -> A877
0B 00 00 00 00 00 00 00 -> AA77
0C 00 00 00 00 00 00 00 -> AC77
0D 00 00 00 00 00 00 00 -> AE77
0E 00 00 00 00 00 00 00 -> F077 - But that doesn't work here, maybe 9 is excluded and goes to F
0F 00 00 00 00 00 00 00 -> F277
10 00 00 00 00 00 00 00 -> F477
11 00 00 00 00 00 00 00 -> F677
12 00 00 00 00 00 00 00 -> F877
13 00 00 00 00 00 00 00 -> FA77
14 00 00 00 00 00 00 00 -> FC77
15 00 00 00 00 00 00 00 -> FE77
16 00 00 00 00 00 00 00 -> E077 - Ok
17 00 00 00 00 00 00 00 -> E277
18 00 00 00 00 00 00 00 -> E477
19 00 00 00 00 00 00 00 -> E677
1A 00 00 00 00 00 00 00 -> E877
1B 00 00 00 00 00 00 00 -> EA77
1C 00 00 00 00 00 00 00 -> EC77
1D 00 00 00 00 00 00 00 -> EE77
1E 00 00 00 00 00 00 00 -> F077 - Why goto F? I'd expect D
1F 00 00 00 00 00 00 00 -> F277
20 00 00 00 00 00 00 00 -> F477
21
22
23
24
25
26 00 00 00 00 00 00 00 -> E077
27
28
29
2A
2B
2C
2D 00 00 00 00 00 00 00 -> EE77
2E 00 00 00 00 00 00 00 -> 3077 - What the?
2F
30
31
32
33
34
35 00 00 00 00 00 00 00 -> 3E77
36 00 00 00 00 00 00 00 -> 2077
37
38
39
3A
3B
3C
3D 00 00 00 00 00 00 00 -> 2E77
3E 00 00 00 00 00 00 00 -> 3077
3F 00 00 00 00 00 00 00 -> 3277
40 00 00 00 00 00 00 00 -> 3477
41
42
43
44
45
46 00 00 00 00 00 00 00 -> 2077
47
48
49
4A
4B
4C
4D 00 00 00 00 00 00 00 -> 2E77
4E 00 00 00 00 00 00 00 -> 7077 - Why the sudden hike?
4F
50 00 00 00 00 00 00 00 -> 7477
51
52
53
54
55 00 00 00 00 00 00 00 -> 7E77
56 00 00 00 00 00 00 00 -> 6077
57
58
59
5A
5B
5C
5D 00 00 00 00 00 00 00 -> 6E77
5E 00 00 00 00 00 00 00 -> 7077
5F 00 00 00 00 00 00 00 -> 7277
60 00 00 00 00 00 00 00 -> 7477
61
62
63
64
65
66 00 00 00 00 00 00 00 -> 6077
67
68
69
6A
6B
6C
6D
6E 00 00 00 00 00 00 00 -> B077
6F 00 00 00 00 00 00 00 -> B277
--- Wrap ---
70 00 00 00 00 00 00 00 -> B477
So the high nibble changes are:
BAFEFE32327676B
Some others:
6E 01 00 00 00 00 00 00 -> B3 77
6E 02 00 00 00 00 00 00 -> 6E 77
6E 03 00 00 00 00 00 00 -> B1 77
6E 04 00 00 00 00 00 00 -> B4 77
6E 05 00 00 00 00 00 00 -> B7 77
6E 00 01 00 00 00 00 00 -> B0 77
6E 00 02 00 00 00 00 00 -> B0 77
6E 00 03 00 00 00 00 00 -> B0 77
6E 00 04 00 00 00 00 00 -> B0 77
6E 00 FF 00 00 00 00 00 -> B0 77 - I don't think the 3rd byte is actually used!
6E 00 00 FF 00 00 00 00 -> B4 77
00 00 00 00 FF 00 00 00 -> B7 74
00 00 00 00 00 FF 00 00 -> B4 77
00 00 00 00 00 00 FF 00 -> B7 74
00 00 00 00 00 00 00 FF -> B7 75
Any ideas?