import dpktしたよ2014/02/28 #ssmjp @th0x0472
1
パケットみてますか?
Wireshark
tshark
tcpdump
Network Monitor
etc...
2
pcapファイルを読んで何かするならPython + dpkt もよいですよ。
今日報告すること
3
公式サイトによると
"Fast, simple packet creation and parsing.
We have no docs, but only sample code for now. "
dpktってなに?
4
ソースみてみる% pwd
~/dpkt-1.8
% find ./ -name '*py' | wc -l
72
% find ./ -name '*py' | xargs grep -v '^$' | wc -l
7318
5
入手&導入dpktで検索すればイッパツ。
Debian系ならパッケージある。それで入れるのがお手軽。
最近のMac向けのパッケージはないみたい。
Windowsは試してない。(やる気もない)
6
僕が出来るコト
pcapを読む。読んでパケットをごにょごにょする。
7
これはムリpcap-ng を読み書きできない。最近のWireshark/tshark使うときはまった。
tshark -F pcap -w <filename>
通信はできない。
8
使用例1
pcapファイル内の全パケットを順に読んで、code blockに通す
主流ぽい。
スクリプトにするならこうかな。
9
コードの例import dpkt
p = dpkt.pcap.Reader(open(filename,'rb'))
for t,buf in p: eth = dpkt.ethernet.Ethernet(buf) ip = eth.data ...
10
コードの説明for t,buf in p:
t にタイムスタンプが入る
buf にパケットデータがはいる(L2だからフレームと言うべき?)
あとは好きに出来る
11
使用例2pcapファイルを読んで、任意のパケットをアレコレ好きに出来る
目当てのパケットが決まっていたり、お試し(試行錯誤)する場合おすすめ
インタプリタで使うのがおすすめ
12
コードの例
>>> import dpkt>>> p = dpkt.pcap.Reader(open(filename,'rb'))>>> p.readpkts()
13
コードの説明
p.readpkts() 各パケットのタイムスタンプとパケットデータのタプルのリスト
[(ts1,pdata1), (ts2,pdata2), ...]
14
コードの説明
p.readpkts()[n][1] で、pcapファイル中 n番目のパケットデータにアクセスできる
(リストのカウント0始まりだからn番目じゃなくてn−1番目じゃね?とか細かいことは(ここでは)気にしない)
15
デモをやりました
16
おまけ
Python だけなの?→ PerlもRubyも、pcapを読み書きするためのライブラリはありました。でもそれ以上はしらべてません。
17
おまけ
lbpcap...
→使用例2のインタプリタで1つ取り出してごにょごにょがやりたかったんですよぅ
18
おまけ
pcapファイル中のパケットの情報の集計する、統計とるなら、tshark + Excel の方が・・・→ そうですね。
19
おしまいご清聴ありがとうございました。
20
Top Related