Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon Dash Hack

MSR
January 27, 2018

Amazon Dash Hack

Amazon Dash Buttonを乗っ取り、任意のコマンドを実行する

MSR

January 27, 2018
Tweet

More Decks by MSR

Other Decks in Technology

Transcript

  1. AMAZON DASH HACK
    @第33回シェル芸勉強会 大阪サテライト
     msr-i386 / slide_20180127_dash

    View full-size slide

  2. 目次
    Amazon Dash Buttonとは
    Dash Button Hack方法
    デモ
    まとめ
     msr-i386 / slide_20180127_dash

    View full-size slide

  3. 自己紹介
    ハンドルネーム: MSR
    Webブラウザ の作者
    Twitter ID: @msr386
    Tungsten
     msr-i386 / slide_20180127_dash

    View full-size slide

  4. AMAZON DASH
    BUTTON
    押すだけで商品が買えるボタン (※要設定)
    定価500円
    初回購入時に500円割引してくれるので実質タダ
    で入手可能
    Amazon Prime会員限定
     msr-i386 / slide_20180127_dash

    View full-size slide

  5. 今回の目的
    Dash Buttonをハックする
    ボタンを押しても商品を買えないようにする
    dasherを使用してHTTPリクエストをオーバー
    ライドする
    シェルコマンドが実行されるようにする
     msr-i386 / slide_20180127_dash

    View full-size slide

  6. 用意するもの
    Amazon Dash Button
    Wi-Fiルーター
    MacOSもしくはLinuxがインストールされたPC
    注) WSL (Windows Subsystem for Linux)は使用不可
    root権限
     msr-i386 / slide_20180127_dash

    View full-size slide

  7. セットアップ
     msr-i386 / slide_20180127_dash

    View full-size slide

  8. DASH BUTTONの初期設定
    スマートフォン向けAmazonアプリから、Dash
    Buttonの設定を行う
    を 参照し、Dash
    Buttonの設定を行っていく。ただし...
    商品選択画面で商品を選ばずに終了する (重要)
    商品を選んでしまうと、注文が成立してしまう
    Amazon公式のセットアップ方法
     msr-i386 / slide_20180127_dash

    View full-size slide

  9. 環境整備(1)
    node.js, libpcapのインストール
    dasherのインストール
    $ sudo apt install nodejs npm libpcap-dev
    $ node -v
    $ python --version
    $ git clone https://github.com/maddox/dasher.g
    $ cd dasher
    $ npm install
     msr-i386 / slide_20180127_dash

    View full-size slide

  10. 環境整備(2)
    Dash ButtonのMACアドレスを取得
    $ ./script/find_button
     msr-i386 / slide_20180127_dash

    View full-size slide

  11. DASHER準備
    config/config.jsonを編集
    ※dasherにはURLのリクエストを送ったり、任意の
    コマンド実行したりできる
    と連携したり、 に投げたり
    するのが実用的
    {"buttons":[
    {
    "name" : "test Dash",
    "address": "xx:xx:xx:xx:xx:xx",
    "protocol": "udp",
    "cmd": "echo TEST"
    }
    ]}
    IFTTT AWS API Gateway
     msr-i386 / slide_20180127_dash

    View full-size slide

  12. 実行
    $ sudo npm run start
     msr-i386 / slide_20180127_dash

    View full-size slide

  13. デモ
     msr-i386 / slide_20180127_dash

    View full-size slide

  14. 参考
    Amazon Dash ButtonをただのIoTボタンとして使う
    ワンライナーWebサーバを集めてみた
    https://qiita.com/jsoizo/items/3b8bba4160f41aef20f4
    https://qiita.com/sudahiroshi/items/e74d61d939f18779970d#
     msr-i386 / slide_20180127_dash

    View full-size slide

  15. おまけ
    自爆 Dash Button
     msr-i386 / slide_20180127_dash

    View full-size slide