Androidのメモとか

ポキオの日記です。今日も遅延してない。

Amazon Dashボタンのハックにおける期待と落胆(Wi-Fi編)

これ買いました

Amazon Dash

巷で流行りのAmazon Dashボタン。

[asin:B01L2WOS0W:detail]

買ったばかりですが、このボタンをどうにか改造して、他の用途に使えないかの検証をしてみました。

まずはセットアップ

Amazon Dash

セットアップはスマホAmazonアプリから行う模様。位置情報のパーミッションが求められるということは、Wi-FiBluetooth/BLEのスキャンを行っていると思われる。その後、家のAPのSSID/PW入力画面と、商品選択画面が続く。

github.com

上記のサイトのように、SSID/PWの設定が終わり、すぐにセットアップを中断すれば、Amazon Dashボタンに接続先の情報が書き込まれるが、ボタンを押したときに注文される商品の設定がされていない状態のため、どんなにAmazon Dashのボタンを押しても商品は注文されない。

Amazon Dashボタンをハックするには

そもそもAmazon Dashボタンは、ボタンが押されてから設定済みのAPに接続して、特定のURLに何かしらの情報をPOSTして、注文をしていると思われる。ただし、Amazon Dashボタンのハック方法は、上記のDasherを含めて、ネット上の情報を見る限り少しトリッキーである。

Amazon DashボタンがAPに接続した後に、ネットワーク上にBroadcastされるAPR Probeを監視して、そのBroadcastがAmazon Dashボタン(のMACアドレス)から行われたものかどうかを判断するもの。もしAmazon Dashボタンが押されたと検知されたら、他のタスク(例えばIFTTTのトリガーとか)を実行するものである。

Amazon Dash

MacBookからtcpdumpコマンドを走らせて、Wiresharkでパケットを解析してみた。たしかにARPプローブを発見できる。したがって、Amazon Dashボタンをハックするには、以下のことが言えそうである。

  • Amazon Dashボタンのハックは、AP接続後にBroadcastされるARP Probeを監視するのが一般的
  • 逆に言えば、Amazon Dashボタンが接続してくるネットワーク上で、常にARP Probeを監視するスクリプト・マシンが必要になってくる
  • 一方で、Amazon Dashボタンからの購入時、Amazonアプリがネットワーク上に存在しなくても注文ができた
  • AmazonアプリはARP Probeの監視をしておらず、注文自体はAmazon Dashボタン単体で完結しているっぽい

Amazon Dashボタンは非常に安価でDIY魂に火をつける一方で、従来のハック方法では、Amazon Dashボタン押下の監視役が必要となるので、若干面倒である。BLEの通信で授受している情報で抜け穴があれば、なんとかなりそうだが・・・。希望としては、HTTP POSTのURLと、POSTしている内容を変更できたら本当に嬉しいんだけどなぁ・・・。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。