とりあえず昨日得られた16進数のデータを解析してみることに。
84 B7 11 89 08 84 8A 08 8A 11 84 89 11 9C 11 84 89 08 8A 08 84 89 09 89 08 84 8A 08 8A 08 84 89 08 8A 08 84 8A 08 89 09 84 92 08 89 08 84 8A 08 8A 08 84 89 12 89 08 84 8A 08 89 09 84 92 11 89 09 84 89 08 8A 08 84 8A 08 89 08 84 8A 08 8A 08 84 89 09 92 7F 84 7F 7F 7F 7F 84 7F 7F 7F 7F 84 7F 7E B6 11 84 89 09 89 08 84 8A 11 8A 11 84 9B 11 89 09 84 89 08 8A 08 84 8A 08 89 08 84 8A 08 8A 08 85 89 08 8A 08 8A 84 08 92 08 8A 84 08 89 08 8A 84 08 8A 11 89 84 08 8A 08 8A 84 08 92 11 8A 84 08 89 09 89 84 08 8A 08 8A 84 08 89 08 8A 84 08 8A 08 92 84 7F 7F 7F 7F 84 7F 7F 7F 7F 84 7F 7F 7F 7F 84 7F 7F 7F 5F 9F 14 01 9F 15 00 00 80 84 B7 11 89 09 84 89 08 8A 11 84 89 11 9B 11 84 8A 08 8A 08 85 89 09 89 08 8A 84 08 89 08 8A 85 08 8A 08 89 08 84 8A 08 93 08 84 89 08 8A 08 84 8A 11 89 08 84 8A 08 8A 08 84 89 08 93 11 84 8A 08 89 08 84 8A 08 8A 08 84 89 08 8A 08 84 89 09 92 11 84 89 7F 7F 7F 84 7F 7F 7F 7F 84 7F 7F 7F 76 84 B6 11 8A 08 84 89 08 8A 11 84 89 11 9C 10 84 8A 08 8A 08 84 8A 08 89 08 84 8A 08 8A 08 85 89 08 8A 08 8A 84 08 89 09 92 84 08 89 09 89 84 09 89 11 8A 84 08 89 08 8A .....
なにがなにやらわからない。
何しろこのデータがなんなのか、リモコンのボタンに対応したデータなのかすらわからない。
でも、これでやるしかないので、共通点を探すところから暗号解読開始。
まず最初の1byteは84が多くて、85だったり8Eだったりもするようだ。
よくよく眺めてみると、8に続く数字が後に続くバイト数を表していることを発見。
84 B7 11 89 08 なら4byte。
85 89 08 8A 08 8A なら5byte。
ところが 84 7F 7F 7F 5F 9F 14 01 9F 15 00 00 80 なんて変則なものも…
何回かやってると、 5F 9F 14 01 9F 15 00 00 80 はどうやらボタンから指を離した時に出るようだ。
つまりボタンを押しっぱなしだと 5F 9F 14 01 9F 15 00 00 80 が出ないで、ずっとデータが流れてる状態。
これは後々、長押しとかの処理に使えそうだ。
そんな訳で 84 7F 7F 7F 5F 9F 14 01 9F 15 00 00 80 の先頭1byteは無視。
というか、どの行も先頭1byteは制御文字でデータではないので無視してOK!
データだけに整理すると…
B6 11 8A 08 89 09 89 11 8A 11 9B 11 8A 08 89 08 8A 08 8A 08 89 09 89 08 8A 08 89 08 8A 07 8B 08 92 08 8A 08 89 08 8A 11 8A 08 89 09 89 08 8A 08 92 11 8A 08 8A 08 89 08 8A 08 8A 08 92 08 8A 11 89 09 88 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 76 B6 11 8A 08 8A 08 89 11 8A 11 9B 11 8A 08 89 09 89 08 8A 08 89 09 89 08 8A 08 89 09 89 08 8A 08 92 09 89 08 89 09 89 12 89 08 8A 08 89 08 8A 08 92 11 8A 08 8A 08 89 09 89 08 8A 08 92 08 8A 11 89 09 89 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 75 B7 11 89 09 89 08 8A 11 89 11 9B 12 89 08 8A 08 8A 08 89 08 8A 08 8A 08 89 08 8A 07 8B 08 89 08 93 08 89 08 8A 08 8A 11
なんとなく同じような数字が並んでる気がする。
7Fがやたら並んでるのはスペースじゃないだろうか?
以前Quoted-printableだかBASE64だかで、帳尻あわせにスペース=が入ってたし。
そんな訳で7Fの固まりあたりでデータを区切る。
そうするとBx〜から1つのデータが始まってる法則を発見。
整理すると、
B7 11 8A 08 89 08 8A 11 8A 10 9C 11 89 08 8A 08 8A 08 89 09 89 08 8A 08 89 09 89 08 8A 08 8A 08 92 08 89 09 89 08 8A 11 89 09 89 08 8A 08 8A 08 92 11 8A 08 89 09 89 08 8A 08 92 11 93 10 8A 08 89
あとはこの法則がほんとに正しいのか再現性やらをリモコンの40個のボタン全部で試してみる。
どうやらあってるらしい。
それぞれ、ボタンによってデータの長さが64〜70byteと違うようだ。
ボタンごとの違いを見るために、全部のボタンのデータを1byteずつ念入りに見比べる……
ほとんど共通してるが、1xが出る位置が違うようだ。
40個のボタンそれぞれについて、1xが何byte目にくるか、長さはいくつかのデータをとる。
これだけでいくつかのボタンは分別できたが、まだ重複がある。
重複してるデータを見比べると……
8xの影に隠れてた9xの存在を軽んじてたのがいかんかったらしい。
最終的にデータにおける9xと1xの位置から40個のボタンの違いが判別可能であると確定。
これで再起動したら全然違うデータ吐いたりしたら、泣くな。
とにもかくにも、なんとかリモコンのボタンが判別できるようになったので、あとは対応した動作を記述するのみ。
意味わからんデータでも、やればできるもんやな。
最近の記事を見る
⇒ブログでのnofollowの使い方 後編 (2008/10/01) ⇒ブログでのnofollowの使い方 前編 (2008/09/30) ⇒GoogleChromeに潜む小悪魔 〜GoogleUpdate.exe〜 (2008/09/25) ⇒QLOOKの解析タグのカスタマイズを使いこなす (2008/09/19) ⇒メモリーカード変換アダプタ一覧 (2008/09/15) ⇒Buzzurlを導入してみた (2008/09/09) ⇒Firefox 3のブックマークを解析してみた (2008/09/03) ⇒Googleでの検索順位が一気に上昇・復活 (2008/08/29) ⇒CREATIVE ZEN その9(ZEN関連記事のまとめ) (2008/08/24) ⇒ブログやサイトにソースコードを乗せる時に便利なツール (2008/08/22)
テーマ:PC周辺機器 - ジャンル:コンピュータ メインカテゴリ:ハードウェア カテゴリ:GV-MC/RCkit
|