# -*- coding: utf-8 -*-
import pyshark
from scapy.all import *
import matplotlib.pyplot as plt
# 讀取pcap檔案
packets = pyshark.filecapture("./net_package.pcap")
def protocal(packets):
"""製作流量協議型別直方圖
:param packets: 讀取的pcap檔案資料
"""# 新建空字典
dict = {}
for packet in packets:
if packet.highest_layer not in dict.keys():
dict[packet.highest_layer] = 1
else:
dict[packet.highest_layer] += 1
# print(dict)
keys = dict.keys()
values = dict.values()
plt.figure(figsize=(8, 20), dpi=80)
plt.bar(keys, values)
plt.xticks(rotation=45)
plt.xlabel('protocal')
plt.ylabel('amount')
plt.title('the amounts of all protocals')
plt.show()
# print(proto_sum)
def graph_size(packets):
"""作流量大小時序圖
:param packets: 讀取的pcap檔案資料
"""time_stamps =
print("正在統計中。。。")
for packet in packets:
# print(int(float(packet.sniff_timestamp)))
# print(time_stamps)
print("統計完成!")
d = int(float(input("請輸入時間間隔(單位:分鐘):")) * 60)
# d = 30 #半分鐘
num_bins = (max(time_stamps) - min(time_stamps)) // d
step = len(time_stamps) // num_bins
time_labels = [time.strftime("%y-%m-%d %h:%m:%s", time.localtime(i)) for i in time_stamps[::step]]
# 新建20*8英吋圖形,解析度為80
plt.figure(figsize=(20, 8), dpi=80)
# x軸分布資料以及num_bins條柱狀圖
plt.hist(time_stamps, num_bins)
# 標籤旋轉角度45
plt.xticks(range(min(time_stamps), max(time_stamps) + d, d), time_labels, rotation=45)
# plt.xticks(range(min(time_stamps),max(time_stamps)+d,d),rotation = 45)
plt.xlabel("timestamp")
plt.ylabel("amount")
plt.title("amount of per " + str(d) + " s")
plt.show()
def filter(packets):
"""顯示過濾器
:param packets: 讀取的pcap檔案資料
"""protocal = input("請輸入協議型別:")
begin_time = input("請輸入開始時間(example:2019-09-09 10:58:42):")
end_time = input("請輸入結束時間(example:2019-09-09 11:40:00):")
length = int(input("請輸入最大長度限制(單位:位元組):"))
# time.strptime把固定格式時間轉換為時間元組
array_begin_time = time.strptime(begin_time, "%y-%m-%d %h:%m:%s")
# time.mktime把時間元組轉換為以秒表示的時間
begin_time_stamp = float(time.mktime(array_begin_time))
# print("begin_time_stamp:"+str(begin_time_stamp))
array_end_time = time.strptime(end_time, "%y-%m-%d %h:%m:%s")
end_time_stamp = float(time.mktime(array_end_time))
# print("end_time_stamp:"+str(end_time_stamp))
packlist =
for packet in packets:
# sniff_timestamp獲取開始嗅探的時間戳
time_stamp = float(packet.sniff_timestamp)
# 獲取資料報的捕獲長度
size = float(packet.captured_length)
if packet.highest_layer == protocal and time_stamp > begin_time_stamp and time_stamp < end_time_stamp and size <= length:
print(packet)
print("過濾出的資料報個數為 %s" % len(packlist))
# 呼叫函式進行操作
protocal(packets)
graph_size(packets)
filter(packets)
網路流量分析工具Windump
執行平台 windows unix 軟體類別 免費軟體 windump是windows環境下一款經典的網路協議分析軟體,其unix版本名稱為tcpdump。它可以捕捉網路上兩台電腦之間所有的資料報,供網路管理員 入侵分析員做進一步流量分析和入侵檢測。在這種監視狀態下,任何兩台電腦之間都沒有秘密可言,...
網路流量分析器
隨著網路變得越來越快和複雜,新的效能問題出現了。傳統的網路監控會花費太多的時間,網路分析師正在尋找這樣一種工具,不僅能幫助他們盡快找到問題的根源,而且能優化他們的工作流程。那麼,我們如何才能從廣闊的網路中,在任何地方,在幾秒鐘內,精確地看到流量,深入挖掘並找到潛在的弱點 伺服器擁塞 埠使用情況等等?...
tshark網路流量分析入門
大名鼎鼎的網路抓包分析包工具wireshark的終端命令列形式 tshark,除了互動式影象化介面,但凡wireshark具有的功能,它都具有。linux中安裝命令 sudo apt get install tshark在終端中開啟後,直接輸入不含任何引數控制的tshark命令後,會自動進行資料報抓...