これ買いました
巷で流行りのAmazon Dashボタン。
買ったばかりですが、このボタンをどうにか改造して、他の用途に使えないかの検証をしてみました。
まずはセットアップ
セットアップはスマホのAmazonアプリから行う模様。位置情報のパーミッションが求められるということは、Wi-FiやBluetooth/BLEのスキャンを行っていると思われる。その後、家のAPのSSID/PW入力画面と、商品選択画面が続く。
上記のサイトのように、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のトリガーとか)を実行するものである。
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している内容を変更できたら本当に嬉しいんだけどなぁ・・・。