ppc_uartd が AVR に送っているコマンドを解析する。
<<<<::::88886666444433330000....,,,,++++((((''''%%%%""""!!!!????[[[[とか、
<<<<::::88886666444433330000....,,,,++++((((&&&&%%%%""""!!!!????[[[[とかいったデータを送る。
暗号を解くためには、試料をたくさんそろえなければと、
AVR へのコマンドを収集した。
たとえば、こんな具合
スリープ開始 | スリープ復帰 | コマンド |
00:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''%%%%#### ????[[[[ |
01:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''%%%%""""!!!!????[[[[ |
02:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''%%%%""""!!!!????[[[[ |
03:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''%%%%"""" ????[[[[ |
04:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''%%%%"""" ????[[[[ |
05:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$####!!!!????[[[[ |
06:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$####!!!!????[[[[ |
07:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$####!!!!????[[[[ |
08:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$#### ????[[[[ |
09:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$#### ????[[[[ |
10:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$""""!!!!????[[[[ |
11:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$""""!!!!????[[[[ |
12:00 | 00:00 |
<<<<::::88886666555533331111....----++++))))''''$$$$"""" ????[[[[ |
13:00 | 00:00 |
<<<<::::88886666444433330000....----++++))))&&&&$$$$"""" ????[[[[ |
14:00 | 00:00 |
<<<<::::88886666444433330000....----++++))))&&&&$$$$"""" ????[[[[ |
15:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%####!!!!????[[[[ |
16:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%####!!!!????[[[[ |
17:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%#### ????[[[[ |
18:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%#### ????[[[[ |
19:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%""""!!!!????[[[[ |
20:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%"""" ????[[[[ |
21:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''%%%%"""" ????[[[[ |
22:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''$$$$####!!!!????[[[[ |
23:00 | 00:00 |
<<<<::::88886666444433330000....----++++((((''''$$$$####!!!!????[[[[ |
それぞれの列には、2種類の文字しかない
(上記の表では、すべては出ていないが、)
先頭から3列は < : 8 固定
4列目は、7 か 6
5列目は、5 か 4
6列目は、3 か 2
:
14列目は、# か "
15列目は、! か スペース
16列目、17列目は、? [ 固定。
4列目から15列目は、それぞれの列を 0x01 とマスクして、
2進数表現すればいいのではないだろうか?
つまり、
<<<<::::88886666444433330000....----++++((((''''$$$$####!!!!????[[[[であれば、
6 | 4 | 3 | 0 | . | - | + | ( | ' | $ | # | ! |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
同じ時刻を指定しても、実行する時間によって、コマンドが異なることから、 相対値と考えられる。
最初の表のコマンドを数値に変換し、実行時刻も併せて整理してみる
スリープ開始 | スリープ復帰 | コマンド値:()内は10進 | 実行時刻 |
00:00 | 00:00 | 0011101111110b(1918) | 12:14 |
01:00 | 00:00 | 0011101111101b(1917) | 12:15 |
02:00 | 00:00 | 0011101111101b(1917) | 12:15 |
03:00 | 00:00 | 0011101111100b(1916) | 12:16 |
04:00 | 00:00 | 0011101111100b(1916) | 12:16 |
05:00 | 00:00 | 0011101111011b(1915) | 12:17 |
06:00 | 00:00 | 0011101111011b(1915) | 12:18 |
07:00 | 00:00 | 0011101111011b(1915) | 12:18 |
08:00 | 00:00 | 0011101111010b(1914) | 12:19 |
09:00 | 00:00 | 0011101111010b(1914) | 12:19 |
10:00 | 00:00 | 0011101111001b(1913) | 12:20 |
11:00 | 00:00 | 0011101111001b(1913) | 12:20 |
12:00 | 00:00 | 0011101111000b(1912) | 12:21 |
13:00 | 00:00 | 0001001110000b(624) | 12:22 |
14:00 | 00:00 | 0001001110000b(624) | 12:22 |
15:00 | 00:00 | 0001001101111b(623) | 12:23 |
16:00 | 00:00 | 0001001101111b(623) | 12:23 |
17:00 | 00:00 | 0001001101110b(622) | 12:24 |
18:00 | 00:00 | 0001001101110b(622) | 12:24 |
19:00 | 00:00 | 0001001101101b(621) | 12:25 |
20:00 | 00:00 | 0001001101100b(620) | 12:26 |
21:00 | 00:00 | 0001001101100b(620) | 12:26 |
22:00 | 00:00 | 0001001101011b(619) | 12:27 |
23:00 | 00:00 | 0001001101011b(619) | 12:27 |
XXは?
単純に考えれば、「XX分」なのだが、、、
最初の行では、12:14 の 1918 分(=31 時間 58 分)後は 20:12 で、
スリープ復帰時間 00:00 の2時間弱(1:48)前である。
最後の行では、12:27 の 619 分(=10 時間 19 分)後は 22:46 で、
スリープ復帰時間 00:00 の1時間以上(1:14)前である。
コマンド値をもっと小さくしてみる
スリープ開始 | スリープ復帰 | コマンド値:()内は10進 | 実行時刻 |
02:45 | 02:50 | 000000001101b(13) | 02:35 |
02:45 | 02:51 | 000000001110b(14) | 02:35 |
02:45 | 02:52 | 000000001110b(14) | 02:36 |
02:45 | 02:53 | 000000001111b(15) | 02:36 |
02:45 | 02:54 | 000000001111b(15) | 02:37 |
単位が分(60秒)ではなく、60+数秒なのか、
それともこんなに誤差があるのか???
もっといろいろな時間を指定して検証したり、
実際に2、30時間後を指定してスリープさせてみたりすれば
わかるのだろうが、、、、
このぐらいにしておこう
← | LinkStation/玄箱 をハックしよう | → HGLAN 1.12 の FLASH ROM |