-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path03devices.re
126 lines (100 loc) · 7.69 KB
/
03devices.re
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
= 実際に組んでみたもの
//lead{
ここではこれまでに述べた要件等々を考慮しつつ実際に組んで運用してみた
デバイスを挙げます. 次章以降の解析結果はこれらをもちいて
データを収集してみたものになります.
//}
== Nexus7 with Android Pcap
//image[nexus7][Nexus 7 と キャプチャ用外部無線LANデバイス(USB)]
このときはいろいろと準備が整っていなかったので無線LANデバイスは一つだけです.
Android PcapがサポートしているデバイスはRTL8187のみなので,
wikidevi@<fn>{wikidevi_rtl8187}の当該デバイスの項から
もっとも手に入りやすかったデバイスとして
amazonで買える ALFA Network の AWUS036EW を採用しました.
タブレットとケーブル, 無線LANデバイスだけと非常にシンプルな構成で
持ち運びや操作性には非常に優れています.
//footnote[wikidevi_rtl8187][https://wikidevi.com/wiki/Rtl8187]
バッテリーの仕様として, Nexus 7の公式サイト@<fn>{nexus7_url}には
「3950mAh, 最長9時間」との記述があります.
実際に測ってみたところ5時間弱は継続してキャプチャができました.
いずれにせよ最大限を考えるとちょっと短いですが,
実際には早めに切り上げたりといったこともあるので
そこまでは必要ないであろうとの判断で
ひとまずこれで充分としました.
なおこの際は機内モードを有効にして3G/LTEと内蔵Wi-Fiデバイスをオフにする,
可能な限りディスプレイの電源を落とす,
他のアプリケーションは殺すといった低限の節電対策(?)はしましたが
それ以外は特に何もしていません.
この構成の問題の一つは, Android Pcapがフレームを収集する方法にあります.
Android Pcapではキャプチャ時にRadiotapヘッダと呼ばれる部分がついてこないのです.
「解析」の章でも後述しますが, 802.11フレームのキャプチャに当たっては
フレームそれ自体に加えてRadiotapヘッダを拾えるのが
理想的です. このヘッダには実際に電波として受信できた情報ではなく
そのフレームに紐付くメタな情報, たとえばそのフレームを受け取った時の
変調方式や転送レート, 信号強度などが含まれています.
これらは無線という, Ethernetとは異なる物理特性を持つ伝送方式について
より具体的に調べるには是非とも欲しい情報です.
が, このヘッダは通常ドライバがある程度お膳立てする必要があり
その部分が実装されていません.
またもう一つの問題点として, 5GHz帯についてはサポート対象外となっています.
これはRTL8187自体が2.4GHz帯(802.11b/g)のみサポートしていることによる制限です.
これらの欠点については, ソースが公開されているのでなんとか自力で直す,
ドライバを追加するといった作業で補填する必要があります.
//footnote[nexus7_url][http://www.google.co.jp/nexus/7]
== Cubieboard 2
#@warn{ここに図}
もう一例として, ここでは手持ちのCubieboard 2を使ったキャプチャデバイスを
挙げます. 前節であげた組み込みボード用いた例になります.
//image[cubieboard2][Cubieboard2]
Raspberry Piの方が有名であり小さく扱い易いのですが,
USBポートの給電問題でいろいろと厄介なのとこれを回避するためには
複数のRaspberry Piでクラスタにしたりといったことが必要そうな点が引っかかりました
(この後Raspberry Piでも似た様なの作ってはみましたが).
台数が増えれば増えるほどバッテリーの数が増えていくとあまりうれしくないので
できれば一つのデバイスでなんとかしたい → cubieboardなら...という流れで
ひとまず手元にあったそれを使いました.
ただし, 実際のところcubieboard2でも過剰にUSBポートにデバイスを挿すと
ボード自体が落ちる例も散見されたので「ある程度マシ」ぐらいの認識で
いた方がよいかもしれません. こちらについては具体的な値の検証はしていません.
OSとしては公式サイトで配布しているCubianなるDebianもどきのLinuxを
動かしています. 単なるLinuxなので, キャプチャもtsharkを用います.
無線LANデバイスにはLogitecのLAN-W300N/U2を3つ用いています.
また, 5GHz用としてNEC Aterm WL300NU-AGおよび Buffalo の WLP-UC-AG300
を予備として用意してあります.
//image[cubieboard2_w_usb][Cubieboard2に3つの無線LANデバイスを挿した例]
Linuxでの無線LANフレームのキャプチャに当たっては, ドライバがMonitorモードに
設定できるものでなければなりません. USB無線LANデバイスは基本的には
子機(ステーション)としての利用が想定されているため, いくつかのデバイスでは
これができない様になっています.
wikideviにある情報やひとまず挿してみた結果から,
LAN-W300N/U2とWLP-UC-AG300については, これらに搭載されているRalink RT2870
とそれに対応するドライバrt2x000についてcubian標準のカーネルに含まれており
Monitorモードへの設定が可能であったことから利用が決定しました.
ドライバが入っていないデバイスについては, カーネルを再コンパイル or モジュール
のみ導入といった手立てでどうにかする必要があります. WL300NU-AG
についてはこれにより導入を図っています.
このデバイスにはAtheros AR9170チップが載っており, carl9170なる
デバイスドライバおよびそれに対応するファームウェアの導入が必要になります.
バッテリーにはBuffaloのBSMPB07WH, 公称10400mAh/3.6Vのものを用いました.
このモバイルバッテリーにはApple用ポート(2.1A)とAndroid用ポート(1A)があり,
cubieboardには前者から専用のケーブルで給電しています.
実際に3つのデバイスでキャプチャをしてみたところおよそ9時間程度は
連続して稼働できているようでした
(きちんとは調べていませんがCubianのパワーセーブ周りの機構が上手く働いている
のかもしれません).
組み込みボードという都合上, オペレーションはシリアルコンソール越しに行う必要があります.
基本的には電源が入ったら勝手にキャプチャを開始するようにしていますが,
正常動作していることの確認やなんらか不具合が
あった際に修復できるようにするためには, このシリアルコンソールを通して
操作できるようにしておけると便利です.
さすがにここでノートPCを持ち出すと本末転倒なので, ここでは前述のNexus 7に
OTGケーブル + USBシリアル変換ケーブルを挿して
オペレーションできるようにしています.
別の問題点として, cubieboard 2にはRTC(Real Time Clock)デバイスが載っていません.
このため, 起動直後は常に 2010/01/01 00:00:00 から時計が始まります.
NTPサーバにリーチできないとその後もずれたままになってしまいます.
対策としては RTCモジュール (Raspberry Piに出ているもの) をGPIOに挿す, USBな
GPSデバイスから時刻を取得する, 手で入力する等々いくつかの
手段があります.
今回はこのあたりは特に対策していませんので, それっぽく時間を
読み替える必要があります.