網路流量分析

2021-09-27 02:34:11 字數 3091 閱讀 8472

# -*- 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命令後,會自動進行資料報抓...