绘制ssh流量样本报文长度与时间序列

2017/04/14

写了一个简单的脚本来看看SSH流量的报文长度序列和时间
结果分析在后面。
241 /home/Traffic/MessLength/

#! /usr/bin/python
#coding:utf-8
#Auther:VChao
#2017/04/14
#Version 2

#This script is designed for getting the pcap message length sequence.
#And plot it.
#Plot time order and length order in one plot.

import dpkt

import matplotlib
matplotlib.use('Agg')

from matplotlib import pyplot as plt

def main(fileName):
    Length = []
    Beta = []
    with open(fileName,"r") as f:
        pcap = dpkt.pcap.Reader(f)
        num = 30
        data = pcap.readpkts()
        preTime = data[0][0]
        Length.append(len(data[0][1]))
        Beta.append(0.0)
        for item in data[1:num]:
            Length.append(len(item[1]))
            Beta.append(item[0] - preTime)
            preTime = item[0]
            
    index = [ i+1 for i in range(num)]

    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    pl1, = ax1.plot(index,Length,"o-",color= "r",label = "Length")
    #获取一个双Y轴
    ax2 = ax1.twinx()
    pl2, = ax2.plot(index,Beta,"x-",color = "g",label = "Time Diff")
    
    #这两句应该是为了设置标签的颜色
    #ax1.yaxis.label.set_color(pl1.get_color())
    #ax2.yaxis.label.set_color(pl2.get_color())
    #设置不同坐标轴的颜色
    ax1.tick_params(axis = "y",colors = pl1.get_color())
    ax2.tick_params(axis = "y",colors = pl2.get_color())
    #plt.legend()
    #plt.legend([pl1,pl2],("Lenght","Time diff"),"best")
    #loc指的应该是从低端到最上(最右)的比例
    ax1.legend(loc = (0.02,0.92),shadow = True)
    ax2.legend(loc = (0.02,.85),shadow = True)

    plt.savefig(fileName[:-5]+"v2.png")

if __name__ == "__main__":
    fileName = "ssh.pcap"
    main(fileName)
绘制ssh流量样本报文长度与时间序列_第1张图片
画图结果

图中有一些尖刺,这些尖刺的实质内容,就是最开始协商一些密钥的情况。
而且,这些如果协议确定的话,是可以直接看出来他们是干什么的。
就是交换密钥的过程。

绘制ssh流量样本报文长度与时间序列_第2张图片
报文内容

本来是想看,报文长度增加了,这个时间会不会同时变化,不过从图中可以看出,没有很大的关联性。

你可能感兴趣的:(绘制ssh流量样本报文长度与时间序列)