Amazon Dash Buttonの話

Amazon Dash Buttonの話

M3 Tech Talk #147

2年半ぶりに2度目のAmazon Dash Button利用でキュ キュット(洗剤)を買おうとしたら動かなかったのでIoTボタンにした話です

A87027204ff57be1dadbf36a78a73c1b?s=128

Takaki Hoshikawa

May 15, 2020
Tweet

Transcript

  1. Amazon Dash Button 話 星川 貴樹 (@oboenikui) M3 Tech Talk

    #147
  2. こと 発端 2年半ぶりに2度目 Amazon Dash Button利用でキュ キュット(洗剤)を買おうとしたら動かなかった

  3. こと 発端 https://www.amazon.com/gp/help/customer/display.html?nodeId=201706050 2019/8/31をもって、Dash Buttonデバイスで商品 購入ができなくなりました。

  4. 1回押されただけで捨てられる キュキュットDash Buttonが かわいそう!!!!!!!!

  5. Amazonから 追い打ち https://www.amazon.com/gp/help/customer/display.html?nodeId=201706050 2019/12/31に、あなた ボタン 自動的に登録解除されリセットされる で操作 必要 ありません。

  6. Dash Buttonがリセットされると…… Wi-Fi AP情報が削除される → IoTボタンとして使えなくなる → Amazonアプリから設定もできなくなる でWi-Fi機能を持ちながら無限 プチプチ程度

    価値 ボタンに成り下がる → や い!!!
  7. 期限 !?!?!?!?!? https://www.amazon.com/gp/help/customer/display.html?nodeId=201706050

  8. \(^o^)/

  9. 本当に使えなくなったか確認 Python amazon-dashを利用 or $ pip install -U amazon-dash $

    pip3 install -U amazon_dash
  10. 本当に使えなくなったか確認 $ sudo amazon-dash discovery MACアドレス

  11. \(^o^)/ 検出できた!!!

  12. 補足:セットアップしていない場合 2016年5月以前に製造されたDash Button 場合、セットアッププロセス中に 超音波信号でWi-Fi情報を受信するところでバッファオーバーフローを発生さ せられるため、これを悪用してWi-Fi セットアップができる 利用に Wi-Fiを搭載したLinuxマシンとイヤホンが必要 https://docs.nekmo.org/amazon-dash/rescue.html

  13. インターネットから遮断する インターネットに接続されていると設定がリセットされる恐れがある で、ルー タ 設定で遮断する (家庭用ルータでもペアレンタルコントロール的な機能でできそう)

  14. Dash ButtonでSlack通知する (n番煎じ)

  15. Dash ButtonをIoTボタンにする原理 Dash Button ボタンが押されると 1. 起動 2. Wi-Fi接続 &

    インターネット接続 3. Amazon サーバにデバイス情報を送信 (= 注文処理)
  16. Dash ButtonをIoTボタンにする原理 Dash Button ボタンが押されると 1. 起動 2. Wi-Fi接続 &

    インターネット接続 3. Amazon サーバにデバイス情報を送信 (= 注文処理) インターネット接続をブ ロックしたため
  17. Wi-Fi接続をトリガーとして処理する Wi-Fi接続後、ルータ MACアドレスを知るため にARP要求をブロードキャストする ブロードキャストパケットを監視するサーバを LAN 内に建てておき、Dash Button MACアドレス 情報を持つARP要求

    受信をトリガーとして特定 処理をする 図 引用元:https://www.itbook.info/study/p73.html
  18. Python amazon-dashで監視 Dash Button トリガーアクションとし て主要な処理が実装されている 以前 Node.js dash-buttonが主流 だったようだが、今

    メンテされていない & amazon-dash推しになってる
  19. config file settings: interface: eth0 devices: 0C:47:C9:98:4A:12: # discoveryコマンドで調べたMACアドレス name:

    Slack url: 'https://hooks.slack.com/services/XXXXX/XXXXXX/XXXXXXX' method: post content-type: json body: '{"text": "hello"}' 0C:47:C9:98:4A:13: ...
  20. デプロイ Docker 場合 systemd 場合 (Raspberry Piで動かすならこっち) $ docker run

    -it --network=host \ -v </full/path/path/to/amazon-dash.yml>:/config/amazon-dash.yml \ nekmo/amazon-dash:latest \ amazon-dash run --ignore-perms --root-allowed \ --config /config/amazon-dash.yml $ sudo cp <path/to/amazon-dash.yml> /etc/amazon-dash.yml $ sudo python3 -m amazon_dash.install $ sudo systemctl enable amazon-dash && sudo systemctl start amazon-dash
  21. 動作 押してから2秒くらいでSlack投稿される Dash Button 仕様上連打 できない ಈը

  22. まとめ n番煎じ Dash Button活用法について話しました 余ったDash Buttonがある人 活用してみてください