可视化数据包分析工具-CapAnalysis

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenguang.blog.51cto.com/350944/1325742

可视化数据包分析工具-CapAnalysis

我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具—CapAnalysis(可视化数据包分析工具),将比Xplico更加细致的分析功能,先别着急安装,下面我们首先了解Pcap包的基本结构,然后告诉你如何使用,最后是一段多媒体教程给大家演示一些精彩环节。

下面这段我制作的可视化视频也深受大家喜欢:

http://www.tudou.com/programs/view/kpZrZxCk5ZI/

1.PCAP结构

以太网中的数据帧是由数据链路层负责封装,网络层传输的数据包都被加上帧头和帧尾成为可以被数据链路层识别的数据帧。虽然帧头和帧尾所用的字节数是固定的,但依被封装的数据包大小的不一样,所以以太网的长度也在动态变化,但其大小在64~1518B。下图我们先了解一下PCAP格式文件结构,从下图我们能看出Pcap文件的整体结构和头结构。

clip_image002

图1Pcap包结构

1.PCAP文件的头数据结构含义

PCAP文件头数据24(4+2+2+4+4+4+4)B各字段说明:

?Magic:4B0x1A2B3C4D,用来标示文件的开始;

?Major:2B0x0200,代表当前文件主要的版本号;

?Minor:2B0x0400,代表当前文件次要的版本号;

?ThisZone:4B,代表当地的标准时间;

?SigFigs:4B,表示时间戳的精度;

?SnapLen:4B,表示最大的存储长度;

?LinkType:4B,表示链路类型。

2Packet数据包头和组成含义

PCAP格式文件中数据包的组成与数据包头的结构字段说明如下:

?Timestamp:时间戳高位,精确到s;

?Timestamp:时间戳低位,精确到μs;

?Caplen:当前数据区的长度,即抓到的数据帧长度,由此可以得到下一个数据帧的位置;

?Len:离线数据长度,网络中实际数据帧的长度,一般不大于Caplen,多数情况下和Caplen数值相等;

Packet数据即Packet(通常就是链路层的数据帧)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,也就是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,下一组数据在文件中的起始位置。需要靠第一个Packet包确定。最后Packet数据部分的格式其实就是标准的网络协议格式。

2.PCAP分析工具

1)分析工具安装

选用Ubuntu10.x以上系统,执行一下命令

$sudoapt-getupdate&&sudoapt-getinstall-ygdebi&&sudogdebi-ncapanalysis_*.deb

注意,除了上面手动安装CapAnalysis工具以外,我们可以使用DEFT8.0工具盘来直接使用,用它启动系统并进入到图形界面就能直接使用。由于CapAnalysis后台使用的数据库是PostgreSQL,所以它的运行性能要较Mysql数据库的一些工具高。

2)Deft8中启动Capanalysis方法

在服务中先启动Apache服务,然后启动capanalysis服务,最后启动数据库。

#sudoservicepostgresqlstop

#sudoservicepostgresqlstart

3)访问CapanalysisWeb界面:

http://your_server_ip:9877orhttp://localhost:9877

注意,为了激活系统首先要获取Key,点击“clickheretirequestthekey”,这时输入email地址,并确认,网站会发送一个临时的key给你。注意同一个Ip不能重复申请。

刚进去是需要初始化系统的,点击New,新添加一个分析事件名称,然后用抓包工具例如tcpdump、wireshark等工具抓取pacp包,一般我们要通过过滤器,过滤掉无用的数据包。

4)导入分析数据包

#catcgweb.pcap|nc127.0.0.130001

如果有新的包过来可以继续导入,第二次抓包,再导入:

#catcgweb2.pcap|nc127.0.0.130001

数据流会进行累加,并记录次序。我们还可以在Ossim系统中,导出Snort抓到的可疑数据包,然后通过这种方法导入,来集中分析,你会得到一些意想不到的效果。

系统会启动如下界面

clip_image004

为了激活系统首先要获取Key,点击clickheretirequestthekey

clip_image006

这时输入email地址,并确认,网站会发送一个临时的key给你。注意同一个Ip不能重复申请。

clip_image008

clip_image010

刚进去是需要初始化系统的

clip_image012

点击New,新添加一个表单

clip_image014

收集数据包:

clip_image016

先用tcpdump抓包(您也可以选用Wireshark图形化抓包工具)

#tcpdump–wcgweb.pcap

#catcgweb.pcap|nc127.0.0.130001

这是第一次抓包,

执行文这条命令以后发现有了数据

clip_image018

第二次抓包

#tcpdump–wcgweb2.pcap

在执行

#catcgweb2.pcap|nc127.0.0.130001数据流会进行累加

clip_image020

分析数据包:

clip_image022

通过下图我们能够发现,它通过可视化的方式展现流量,有读者会问,这是一种什么图像呢?雷达图、柱状图都认识了,最下方的是什么图形表达方式呢?它叫桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应网络数据流量的大小,这里应用于数据的可视化分析。

clip_image024

clip_image026


浏览高清视频请点击:http://www.tudou.com/programs/view/PN9Xi8IlQW0/


本文出自 “李晨光原创技术博客” 博客,请务必保留此出处http://chenguang.blog.51cto.com/350944/1325742

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网易云歌单添加到php,给自己的网站添加网易云音乐歌单吧^ ^

这个是怎么实现的?一起来看看吧APlayer首先我们需要一个音频播放器,这里我用到了APlayer,这是由bilibili前端大神DIYgod开源的播放器,有兴趣的可以去TA的主页看看,非常惊艳,这里我就不多说了我们看一下APla…

python学完面向对象之后_Python学完基础语法后,再往后应该学什么?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼第一阶段:Python语言及应用课程内容:Python语言基础,面向对象设计,多线程编程,数据库交互技术,前端特效,Web框架,爬虫框架,…

百度应用部署秘籍

2019独角兽企业重金招聘Python工程师标准>>> 【背景介绍】 传统PaaS采用sandbox实现app间的资源安全隔离,sandbox需要对运行环境和编程语言进行底层的功能限制,例如:禁止创建进程和线程,禁止部分系统调用,禁…

php新闻删除功能设计,php原生开发新闻站之删除新闻

我们前两篇文章都完成了新闻的添加、修改。那么我们这个节课程就给大家介绍删除新闻,这个比之前的两个都要简单点!首先创建一个new_delete.php,接着我们要在新闻列表页找到删除的按钮,给这个按钮加一个连接,我们同样需要通过id来传…

java8新特性_JAVA8十大新特性详解

一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sq…

spark1.6.1 on yarn搭建部署

注:本文是建立在hadoop已经搭建完成的基础上进行的。 Apache Spark是一个分布式计算框架,旨在简化运行于计算机集群上的并行程序的编写。该框架对资源调度,任务的提交、执行和跟踪,节点间的通信以及数据并行处理的内在底层操作都进…

php 精度问题怎么解决,JavaScript 中精度问题以及解决方案

JavaScript 中的数字按照 IEEE 754 的标准,使用 64 位双精度浮点型来表示。其中符号位 S,指数位 E,尾数位M分别占了 1,11,52 位,并且在 ES5 规范 中指出了指数位E的取值范围是 [-1074, 971]。精度问题汇总想…

主线程是如何向子线程传递数据的?_c++ 利用thread创建线程

用进行多线程开发小时候,老师总是教育我们上课要专心,“一心不可二用”。可是CPU这个不听话的“熊孩子”偏偏却在一个芯片中加入了两个甚至多个运算核心,想要一“芯”二用。从硬件厂商的角度,通过增加CPU的运算核心,突…

php多维数组交集,求数组差/交集函数-php数组函数(二)

求数组差集函数函数只检查了多维数组中的一维。可以用 array_diff($array1[0], $array2[0]) 检查更深的维度。u:自定义函数比较,a(association):同时比较键和值。自定义函数callable $value_compare_func必须返回一个小于零,等于零…

寻找水王(2)

求解内容极其相似,相同的思路进行求解即可。同时删除4个不同的ID后,剩余数据中3个多数id仍然是多数ID。 上题只需要一个结果,而现在需要3个结果,上题用到的nTimes,也应改为3个计数器。现在我们需要3个变量来记录当前遍…

centos7.4php测试,CentOS7.4 通过yum安装php7.0

一、删除旧版本如果已经安装过php就先删除之前的版本。检查方法如下:yum list installed | grep php然后将安装的包进行删除比如 yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 ph…

正则过滤符号_多角度理解正则项

过拟合和欠拟合什么是过拟合和欠拟合过拟合:模型在训练集上效果好,在测试集上效果差欠拟合:在训练集上效果就不好产生过拟合的原因参数太多,模型复杂度太高数据量少,训练轮次过多样本中噪声较大,模型拟合了…

PHP页面中嵌套go语言,go语言嵌套类型的使用细节

1. 定义在Go语言中,嵌套类型是将已有的类型直接声明在新的结构类型里。被嵌入的类型被称为新的外部类型的内部类型。通过嵌入类型,与内部类型相关的成员变量会提升到外部类型上。就好像这些成员变量直接声明在外部类型一样。如下图所示:外部类…

jvm内存模型_JVM内存模型的相关概念

1.前言Android的虚拟机是根据移动设备的特点基于Java虚拟机(JVM)改进而来,虽然没有保留规范,但作为Java语言的使用者,了解一下JVM的规范还是有必要的。2.JVM内存模型JVM在执行Java程序时,会把它管理的内存划分为若干个的区域&…

php session bug,thinkphp2.x中session的BUG及解决办法

很多人出现一个TP构建的APP,出现SESSION相同导致用户未经授权就登陆了其它项目,N久没有找到原因。今天晚上跟踪了一下代码,找到了问题。主要原因在于TP在项目实例化的时候没有对SESSION进行配置就直接初始化了。/Core/App.class.php中看到这段…

LNMP/LEMP(PHP7.0.04+mysql5.7.12+nginx1.10.0)

预览:Installing Nginx with PHP 7 and MySQL 5.7 (LEMP) on Ubuntu 16.04 LTSThis tutorial exists for these OS versionsUbuntu 15.10 (Wily Werewolf)Ubuntu 14.04 LTS (Trusty Tahr)Ubuntu 13.04 (Raring Ringtail)Ubuntu 12.10 (Quantal Quetzal)Ubuntu 12.04 LTS (Preci…

length函数的头文件_Framebuffer 应用编程中涉及的 API 函数

本节程序的目的是&#xff1a;打开 LCD 设备节点&#xff0c;获取分辨率等参数&#xff0c;映射 Framebuffer&#xff0c;最后实现描点函数。5.2.1 open 函数在 Ubuntu 中执行“man 2 open”&#xff0c;可以看到 open 函数的说明&#xff1a;头文件&#xff1a;#include <s…

xib中UIScrollView固定底部内容

UIScrollView的高度在xib中设置 需要固定的部分用代码添加: UIImageView *textLogo [[UIImageView alloc] initWithFrame:CGRectMake((kMSScreenWith - 153)/2, (kMSScreenHeight - 118 > 549 ? kMSScreenHeight : 667) - 173, 153, 35)]; textLogo.image [UIImage image…

java 陷阱,java 中的陷阱。

看了一段北风网的视频&#xff0c;总结几个经典的java陷阱给大家。答案在博客中&#xff1a;http://blog.csdn.net/ol_beta/archive/2010/05/17/5598867.aspx欢迎大家讨论&#xff01;1、找奇数&#xff1a;Java codepublic static boolean isOdd(int i){return i % 2 0;}上面…

python上传本地文件到ftp_python实现的简单FTP上传下载文件实例

本文实例讲述了python实现的简单FTP上传下载文件的方法。分享给大家供大家参考。具体如下&#xff1a;python本身自带一个FTP模块&#xff0c;可以实现上传下载的函数功能。#!/usr/bin/env python# -*- coding: utf-8 -*-from ftplib import FTPdef ftp_up(filename "201…