25. 3つのコンポーネントに分割
o IO
?Controller
? データの入出力を担当
? ネットワークインターフェースに送受信
? PCAP,
?PCAPNGファイルに書き込み
o Address
?Controller
? アドレス処理などを担当
? 文字列からアドレスなど
o Packet
?Controller
? 様々なプロトコルのパケットを解析、作成などを担当
o Module
? 上の三つを使って書かれたモジュール群
Feb
?26
?2016 OSC
?2016
?Tokyo/Spring 25
26. Packet,
?Address
?Controller
o パケットやアドレスのバイナリの生成や、解析などを行う
o 簡単なインターフェースでパケットのデータを編集などを
可能にします
o 例えばARPパケットならこんな感じ
Feb
?26
?2016 OSC
?2016
?Tokyo/Spring 26
31. ユーザのミスを知らせる
o lengthに問題がある場合
? こんな感じに依存しあう値があると…
o 実装は…
? 高レイヤのフィールドから設定させる
(カプセル化の基本)
? パケット通信の基本どうりに作るぜ
Feb
?26
?2016 OSC
?2016
?Tokyo/Spring 31
E
T
H
I
P
U
D
P
D
a
t
a
データ長
UDP
?length
IP
?total
?length
パケット長
42. 鮫ができないFollow
?ICMP
?Stream
o このような通信のパケットを解析して、元の画像を整形
o 実用性。。。 ないです。
o 解析の遊びとしてはおもしろい
Feb
?26
?2016 OSC
?2016
?Tokyo/Spring 42
ETH IP ICMP 分割された画像データ
43. 鮫ができないFollow
?ICMP
?Stream
o 作成するプログラムはこんな感じ
1. パケットを受信
2. 受信したパケットがICMP
?Echo
?Requestならそのデータ部分を
ファイルに出力
o これだけ、だけど何もないところからやると少しだけ大変
Feb
?26
?2016 OSC
?2016
?Tokyo/Spring 43