import dpktしたよ
2014/02/28 #ssmjp @th0x0472

1
パケットみてますか?
Wireshark
tshark
tcpdump
Network Monitor
etc...
2
今日報告すること

pcapファイルを読んで何かするなら
Python + dpkt もよいですよ。

3
dpktってなに?
公式サイトによると
"Fast, simple packet creation and parsing.
We have no docs, but only sample code for
now. "
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...
コードの説明
for t,buf in p:
t にタイムスタンプが入る
buf にパケットデータがはいる
(L2だからフレームと言うべき?)
あとは好きに出来る
11
使用例2
pcapファイルを読んで、任意のパケットを
アレコレ好きに出来る
目当てのパケットが決まっていたり、
お試し(試行錯誤)する場合おすすめ
インタプリタで使うのがおすすめ
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
Upcoming SlideShare
Loading in …5
×

import dpkt したよ #ssmjp 2014/02/28

2,782 views

Published on

2014年2月の #ssmjp での発表資料。
dpkt の紹介。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,782
On SlideShare
0
From Embeds
0
Number of Embeds
83
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

import dpkt したよ #ssmjp 2014/02/28

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

×