-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpcapAnalyze.py
More file actions
33 lines (32 loc) · 1.16 KB
/
pcapAnalyze.py
File metadata and controls
33 lines (32 loc) · 1.16 KB
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
import dpkt # version 1.9.0
import socket
# 解析したいpcapファイルを読み込ませる
with open("./tcp-ecn-sample.pcap", "rb") as f:
pcr = dpkt.pcap.Reader(f)
frame_count = 0
flow_list = {}
for t, buf in pcr:
frame_count += 1
try:
eth = dpkt.ethernet.Ethernet(buf)
except:
print("Fail parse FrameNo: ", frame_count, '...skipped')
continue
# 型がIPアドレスなら
if type(eth.data) == dpkt.ip.IP:
ip = eth.data
# 送信元IPアドレス
src = socket.inet_ntoa(ip.src)
# 送信先IPアドレス
dst = socket.inet_ntoa(ip.dst)
flow_word = src + " to " + dst
# 同じipアドレスがflow_listにあれば
if flow_word in flow_list:
# パケットサイズを更新
flow_list[flow_word] += len(str(buf))
else:
# パケットサイズの初期値を代入
flow_list[flow_word] = len(str(buf))
# 結果表示
for k,v in flow_list.items():
print(k, ':', v, '[Byte]')