原理很简单,就是利用pyshark解析pcap文件再利用matplotlib绘图
最终效果(按协议分类):
示例代码:
import pyshark
import collections
import matplotlib.pyplot as plt
import numpy as np
cap = pyshark.FileCapture('pack/sample.pcap', only_summaries=True) # 这里是pcap文件的路径
protocolList = []
for packet in cap:
line = str(packet)
formattedLine = line.split(" ")
protocolList.append(formattedLine[4]) # 按照什么类型分类,这里是协议
counter = collections.Counter(protocolList)
plt.style.use('ggplot')
y_pos = np.arange(len(list(counter.keys())))
plt.bar(y_pos, list(counter.values()), align='center', alpha=0.5, color=['b', 'g', 'r', 'c', 'm']) # 颜色
plt.xticks(y_pos, list(counter.keys()))
plt.ylabel("Frequency")
plt.xlabel("Protocol Name")
plt.savefig("ProtocolGraph.png") # 生成的图片保存在同目录下的'ProtocolGraph.png'
需要安装pyshark模块。
Win需要安装wireshark,linux好像要安装wireshark后单独安装tshark。
Linux:
sudo apt-get install wireshark
sudo apt-get install tshark