Amazon Dash Button をHackして「社内ビール制度」を活性化したい

こんにちは、Enigmo 新卒エンジニアの@sean0628_iです。 Enigmo Advent Calendar 2018 8日目の記事です。

ちなみに、Enigmo は、海外通販サイト BUYMA や、世界中のトレンドをお届けするファッションメディア STYLE HAUS を運営する会社です。

Enigmo では、 「社内ビール制度」が存在し、定時の18:30以降 ビールが飲み放題 です。

毎晩定時後は宴会が繰り広げられて、、、ということはなく、日によっては金曜日ですらも人が疎ら、なんていうこともあります。。。

さてはEnigmo 社員はビールが嫌いなのか?とも思いましたが、実際に話を聞いてみると当然そんなことはありませんでした(安心

実際の声

みんなで楽しくビール飲みたいけど、みんな忙しそうだし。。。 声を掛けるのは気が引ける。。。 社員Tさん

さらに時々こんな声も、

呑んでたなら教えてよ。。。言ってくれれば参加したのに。。。 社員Yさん

ニーズはあるのに、多数障壁があるようです これは、「社内ビール制度」始まって以来の危機だと思い、新卒エンジニアは立ち上がりました。

そうだ、Amazon Dash Button を使ってこの危機を乗り越えよう。

内容

  • Amazon Dash Button(以下、Button)とは?
  • Buttonの仕組み
  • Hackの流れ
  • 気づき・学び
  • 今後の展望

Amazon Dash Button とは?

Amazonダッシュボタンは、注文商品を簡単かつ迅速に作成できるように設計された小型の電子デバイスである。 出典: Wikipedia - Amazon Dash

一般的な利用方法

  1. Amazon 公式アプリにWi-FI&Bluetooth 経由で連動させる
  2. アプリ上でButton に登録したい商品を選択
  3. Step2 で設定した商品がほしくなったらButton を押す
  4. 数日後、商品が手元に届く

Button の仕組み

  1. Buttonの押下により、電源オン
  2. アプリで設定しておいた、Wi-Fiに接続
  3. DHCPでIPを取得
  4. 商品注文リクエス

とここで文系新卒の私は DHCP とはなんぞやと思ったわけです。。。 で、調べました。

利用技術

DHCP とは?

  • コンピューターにIPアドレスを自動割り当てする仕組み
  • IPアドレスは、いわゆる住所のようなもの (IPは 8.8.8.8 こんな感じの数字のやつ)

と、DHCP はなんとなく理解したものの、次なる敵が現れました。

MAC addressARP です。。。

もう横文字嫌だー、と思いながらも開発に必要なため背に腹は代えられず調べました。

MAC address とは?

ARP とは?

  • IP からMAC を調べる仕組み

のことらしい。。。

image.png

出典: What is ARP and ARP spoofing?

Hack の流れ

  1. ARPを利用し、ButtonのMACアドレスを取得*
  2. ButtonのMACアドレスを監視
  3. ButtonからのARP Requestをキャッチ
  4. 任意の処理をする(今回はSlackにmessageを投下)

*: 初回のみ。実際Buttonが押されてからの流れは2~3

実際の実装

長くなるので割愛します。 ソースコード(Sean0628/dash_button): https://github.com/Sean0628/dash_button

テスト運用

↓こんな感じ :tada:

*: リゾート とは、Enigmo 社員の憩いの場所

気づき・学び

普段業務では主にRuby を使っていて、node を初めて使いました。 しかし、やってみると意外に簡単。メンタルブロックをいかに外すかが大切なのだと感じました。

業務では関わることのできないネットワークの分野も面白いなぁと思いました。 機会があれば深掘りしてみたいなぁと。

今後の展望

勉強も兼ねて不要なPCにCentOS を入れて、CentOS をサーバにしてButton を活用したいと思っています。

まだ、本格的なリリースまでは行けてないので、早く始動させてみんなで楽しくビールを飲みたいと思います。

最後まで読んでいただきありがとうございます。


参考: Dash Buttonの設定を管理する

参考: Enabling Interactions with Bots