読者です 読者をやめる 読者になる 読者になる

ハックできません!Amazon Dash Button

現在AmazonDashButtonをハックしたいのに、できなくて困っています!

当方プログラミングのド初心者でして、

node.js/npm/pcap/AmazonDashButton に詳しい方、お助けいただけませんでしょうか!泣

 

1.はじめに​

 

こんにちは、tanbonomannakaです!。

みなさん、Amazon Dash Button(以下DashButton)ってご存知でしょうか?

公式サイト:Amazon Dash Button​

 

DashButtonはAmazonのプライム会員限定で販売されている商品で、

ボタンをワンプッシュするだけで日々の日用品や食料品を注文できるサービスです。

1個500円で販売されているこの便利ボタン、(しかも初回注文は500円引きされるので実質タダ!)

ハッキングするとちょっとしたIoTおもちゃになるため、エンジニアが色々やってます。

 

「AmazonDashButton ハック」と検索しただけでも下記事例がありました。

 

  • コーヒーメーカーのスイッチ…コーヒーを淹れる
  • 部屋の電気のスイッチ…部屋の電気を付けたり消したりする
  • 宅配ピザスイッチ…DominoPizzaにピザをオーダーする
  • 赤ちゃんログスイッチ…夜泣き、おむつなどのお世話のログを取る
  • タクシースイッチ…タクシーを呼ぶ

 

とにもかくにも、このようにIoTおもちゃとしてカスタムする事例が多く、

amazonではAWSユーザー向けにプログラムできる、素のDashButtonが既に販売されています。

 

そしてこれは19.95$(≒2,300円)もするという…。お手軽にハックできる代でしょうか。



IoTButton.png

​2.私もハックしたい!​

自分でIoTおもちゃをお手軽に作れるなんて面白そう、と思い私も早速やってみることにしました。

どんなボタンを作るかはまだナイショです。

 

参考にした記事は下記の通り。

選定理由としては、 『WindowsOSでできて、Raspberry PiとかArduino使ってなくて、お手軽にできそう!』 だったからです。

 



他の記事も参考にしつつ早速始めてみました。

 

​0.必要なものを用意しよう​​​​​​

とりあえず下記があれば大丈夫そうです。

  • Wi-Fi につながってるPC
  • Amazon Dash Button
  • node.js

 

1.DashButtonをセットアップしよう

じゃーん届きました、こんな感じです。ドキドキわくわく。。

​​​IoTButton2.png

下記リンクを参考にしながら、ButtonのWifi接続Amazonアカウント連携を完了させます。

ポイントは、商品選択画面まで行ったら、「商品選択をキャンセルし、セットアップを完了させないこと」です。

 

これ、完了させてしまってもハックはできるのですが、

ボタンを押すたびに、商品が注文されてしまいます。。おそろしい。。

ですのでもしやる場合は必ず商品選択をキャンセルするようにしましょう。

 

公式セットアップ手順:https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=201746340​​

 

2.node.js/npmをインストールしよう

 

下記リンクを参考にしながらぽちぽちインストール。

参考記事:http://qiita.com/taipon_rock/items/9001ae194571feb63a5e



ふむふむ、バージョン表示されるので、ちゃんと入ったっぽいぞ。

この時の私は、後の苦労も知らずに、「なんか簡単にできそうだな~」と思っていたのでした…。



versionCheck.png

3.モジュール導入

適当なディレクトリを作り、DashButtonforNudeとRobotJSを導入します。

●npm init

まずは、​​作業手順記事の通り、​(20161207 Amazon Dash Button で「ボスが来た」ボタンを作る)

コマンドプロンプトを立ち上げ、作成したディレクトリに移動してから、「npm init」と入力すると

入力を求められたので、ここで初めてnpmについて調べはじめました。

 

ここでは、package.jsonファイルに書き込まれるプロジェクト名/バージョン名などを設定を行っているようです。

後で編集も可能なようだったので一旦下記の通り設定しました。

 

 

参考記事:npmとpackage.json使い方​

http://kokudori.hatenablog.com/entry/2013/04/04/025521

参考記事:Node.js のパッケージ管理ツール npm の作り方と package.json の使い方​

http://phiary.me/node-js-package-manager-npm-usage/#post-h3-id-2_0

 

package.png 



●npm install robotjs 

​次に、RobotJSの導入です。

「npm install robo​tjs」と入力して実行します。

 

結果がこちら↓

robotjs warn1.png 

 

~~

robotjs warn2.png 

 

うっなんかwarning3つも出ている…。エラーではないけれども気になる…。

一番下は問題ないとして、上の2つは解消することにしました。

 

!!問題①発生!!

npm WARN prefer global node-gyp@3.4.0 should be installed with -g
npm WARN prefer global node-ninja@1.0.2 should be installed with -g
 

-gというオプションを調べると、どうやらパッケージのインストール場所が変わるそう。(参考リンク)

-gを付けるとグローバルインストールとなり、npmのインストール場所にパッケージをインストールしてくれるとのこと。

(付けなければカレントディレクトリのnode_modules内にインストールされる)

 

 

でもそもそもnpm-gypとnode-ninjaって何ですか??泣 

と思いつつも、先に実行、早速入れてみる。

 

!!解決①-①グローバルインストールしてみる!!

WARNINGなくうまくいきました!!(キャプチャ割愛)
 

!!解決①-②「npm install robotjs」のリトライ!!

上の二つの警告はきちんと無くなりました!
 
環境準備でこれだけつまずくとは…先が思いやられます。​


●npm install --save dash-button​
​​いよいよ、dash-buttonパッケージをインストールします。
 
いざ実行!
 
 
 
dashbutton_error1.png
dashbutton_error2.png

 

​う、うわぁ~!!!!!!!!!!!!

 

Errorがたくさん出ている…。

これまた上から一つずつつぶしていきましょう。。。

 

!!問題②発生!!

..\pcap_binding.cc(2): fatal error C1083: include ファイルを開けません。
'pcap/pcap.h':No such file or directory [C:\temp\Work\Study\A
mazonDashButton\JOY\node_modules\pcap\build\pcap_binding.vcxp
roj]
..\pcap_session.cc(2): fatal error C1083: include ファイルを開けません。
'pcap/pcap.h':No such file or directory [C:\temp\Work\Study\A
mazonDashButton\JOY\node_modules\pcap\build\pcap_binding.vcxp
roj]
gyp ERR! build e
 
上記の赤字のメッセージ内にpcapという言葉がたくさん出ています。
pcapって何だ?と思いつつ、ないと言われているファイルを探しに行くことに。

 

no such.png

ふむ、確かにpcapフォルダ自体がごっそりありません。

pcap、何なんだ、と思いググってみました。

 

​pcap Wiki

pcap (packet capture) とは、コンピュータネットワーク管理の分野におけるパケットスニファのためのAPIである。

Unix系のシステムではpcapはlibpcapとして実装されている。WindowsではWinPcapというlibpcapを移植したものが使われている。

モニタリングソフトウェアは、ネットワーク上を流れているパケットをキャプチャするためにlibpcapやWinPcapを利用することができる。

さらに新しいバージョンでは、リンク層上にパケットを送り出すことや利用可能なネットワークインターフェースの一覧を取得することもできる。

 

ふむふむ、AmazonDashButtonをハックする上で、どこに役立っているのだろう?と思い、さらにググると、良さそうな記事が何件かヒットしました。
これ以上書くと長くなるので割愛しますが、私は下記記事をつまみつつ、勉強しました。
 
​参考記事:第11回 MACアドレスを解決するARPプロトコル​

!!解決②-①pcapインストールしてみる!!

 

!!問題③発生!!

…えげつない量のエラーが発生しました。​​

 

うっ…。

問題がどんどんネストして行きます…。

 

エラーの内容や数を見る限り、なんとなくですが、何かのversionが違ったり、

決定的な何かのインストールがごっそり抜けていたりする気がする。。。

のですが原因がわからない。。。

 

どなたかこちらに詳しい方おられましたらご意見いただけると助かります。泣

 

一応最後のpcapインストール時のエラーメッセージを

少しの希望をもって、こちら に記載しておきます。