Amazon Dash Buttonをハックする

ウィルキンソン Dash Buttonをハックしたときの備忘録。

Amazon Dash Buttonのセットアップ

まずはAmazon iOS/Androidアプリを使って、Amazon Dash Buttonのセットアップ。商品選択でキャンセルしておくことに注意。

MACアドレスの取得

使用するのはdash-buttonというライブラリ。これをインストールする。

npm i -S dash-button

package.jsonscriptsに手を加える:

{
    "scripts": {
        "scan": "dash-button scan"
    }
}

スキャン実行中に、Amazon Dash Buttonを押すとMACアドレスが取得できる:

sudo npm run scan

> amazon-dash-button@1.0.0 scan /Users/uraway/github/amazon-dash-button
> dash-button scan

Scanning for DHCP requests and ARP probes on en0...
Detected a DHCP request or ARP probe from xx:xx:xx:xx:xx:xx

うまくいかない場合は、インターフェースオプション(--interface/-i)をつけて、他のインターフェースを試してみるといいかもしれない。

Amazon Dash Buttonを入退室ボタンにしてみる

SlackのAPIを使って、Slackに入退室のメッセージを送信するボタンにハックしてみる。

const DashButton = require('dash-button');
const Slack = require('node-slack');

const DASH_BUTTON_MAC_ADDRESS = 'xx:xx:xx:xx:xx:xx';
const HOOK_URL = 'https://hooks.slack.com/services/*****';

let button = new DashButton(DASH_BUTTON_MAC_ADDRESS);
let slack = new Slack(HOOK_URL);

let i = 0;

button.addListener(() => {
  i++;
  console.log(`${i} times working!`);
  if (i % 2 === 0) {
    slack.send({
      text: '入室しました',
      username: 'WILLKINSON'
    });
  } else {
    slack.send({
      text: '退室しました',
      username: 'WILLKINSON'
    });
  }
});

スクリプト実行中にAmazon Dash Buttonを押すと…

ウィルキンソン Dash Button

ウィルキンソン Dash Button