GNU开发工具——WireShark网络分析工具

GNU开发工具——WireShark网络分析工具

一、WireShark网络分析工具简介

1、WireShark简介

Wireshark是目前全球使用最广泛的开源网络封包分析软件(前身为Ethereal),由Gerald Combs编写并于1998年以GPL开源许可证发布。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。

2、WireShark架构


GUI:处理所有的用户输入输出(所有窗体,对话框等)
Core:核心模块,通过函数调用将其他模块连接在一起
Epan:包分析引擎(WireShark Packetage Analyzing)
Protocol-Tree:负责独立包的信息剖析。
Dissectors:存在于epan/dissectors目录下的各种协议解析器,支持700+种协议解析,对于每种协议,×××都能识别出协议字段(field),并显示出字段值(field value)。
Dissector Plugins:支持将解析器的具体实现作为独立模块存在。
Display-Filters:显示过滤引擎,源码在epan/dfilter目录
Capture:抓包引擎接口,利用libpcap/WinPcap从底层抓取网络数据包,libpcap/WinPcap提供了通用的抓包接口,能从不同类型的网络接口(包括以太网,令牌环网,ATM网等)获取数据包。
Wiretap:wiretap库用于读写捕获的文件,读写格式时libpcap、 pcapng或者其他类型的文件格式。
Dumpcap:捕获引擎本身,执行需要提升权限。
WinPcap/libpcap:提供不同平台的包捕捉以及过滤支持功能的库。

3、libpcap简介

WireShark使用libpcap/WinPCAP作为接口,直接与网卡进行数据报文交换。
libpcap(Packet Capture Library),即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库,是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。
WinPcap是一个专为Windows系统设计的、基于libpcap的库。
地址:http://www.winpcap.org/
libpcap是一个c库,用于网络抓包和过滤,源于tcpdump项目。tcpdump项目中抓包、过滤、capture file的读写的代码被提取出来成为libpcap,由tcpdump项目的开发者维护。
libpcap主要由两部份组成:网络分接头(Network Tap)和数据过滤器(Packet Filter)。网络分接头从网络设备驱动程序中收集数据拷贝,过滤器决定是否接收该数据包。Libpcap利用BSD Packet Filter(BPF)算法对网卡接收到的链路层数据包进行过滤。BPF算法的基本思想是在有BPF监听的网络中,网卡驱动将接收到的数据包复制一份交给 BPF过滤器,过滤器根据用户定义的规则决定是否接收此数据包以及需要拷贝该数据包的哪些内容,然后将过滤后的数据给与过滤器相关联的上层应用程序。
libpcap的包捕获机制就是在数据链路层加一个旁路处理。当一个数据包到达网络接口时,libpcap首先利用已经创建的Socket从链路层驱动程序中获得该数据包的拷贝,再通过Tap函数将数据包发给BPF过滤器。BPF过滤器根据用户已经定义好的过滤规则对数据包进行逐一匹配,匹配成功则放入内核缓冲区,并传递给用户缓冲区,匹配失败则直接丢弃。如果没有设置过滤规则,所有数据包都将放入内核缓冲区,并传递给用户层缓冲区。

二、WireShark快速抓包

1、WireShark主窗口


MENUS(菜单栏):显示打开文件的路径名称
SHORTCUTS(工具栏,快捷方式):常用功能菜单的快捷方式
DISPLAY FILTER(显示过滤器):显示过滤器设置
PACKET LIST PANE(封包列表):封包列表
PACKET DETAILS PANE(封包详细信息):选中封包的详细信息
DISSECTOR PANE(16进制数据):选中封包的16进制数据
MISCELLANOUS(状态栏,杂项)

2、网卡接口选择

打开菜单栏Capture->Options,界面如下:

3、快速抓包

选择网卡,点击“开始抓包”按钮。

4、停止抓包

点击“停止抓包”按钮,界面如下:

三、WireShark显示设置

1、显示设置

通过对显示设置工具栏的按钮进行设置,可以放大、缩小、重置主界面的显示区。

2、列设置

默认列表显示:序号、时间、源、目的、协议、长度、信息
A、增加列
在封包详细信息区的任意字段,如TTL,右键选择菜单“Apply as Column”,将选择的字段信息添加到封包列表区作为一列。

B、删除列
在封包列表区的某列右键点击,选择“Remove This Column”菜单项,将该列从列表区删除。

C、修改列
在封包列表区的某列右键点击,选择“Edit Column”菜单项,可以修改该列的名称。

3、时间设置

A、时间格式设置
点击菜单栏“View->Time Display Format”,选择合适的时间显示格式。

B、时间参考设置
选中封包列表区的Time列的某项,右键单击菜单“Set/Unset Time Reference”设置该数据项为时间参考点,可以设置多个时间参考点。

4、名字解析

名字解析将MAC地址、IP地址、端口号等转换成名字,方便记忆,默认开启MAC地址解析。
点击菜单栏“Capture->Options->Options”,选中“Name Resolution”的三个复选框,如下图:

四、WireShark数据包操作

1、标记数据包

A、标记/高亮数据包
在封包列表区选中某个封包,右键选择“Mark/Unmark Packet”标记/取消标记高亮。

B、修改数据包颜色
在封包列表区单击右键,选择“Colorize Conversation->Ethernet->New Coloring Rule”菜单项,可以对Ethernet协议进行具体的配色工作。

2、注释数据包

在封包列表区的某个数据包上单击鼠标右键,选择“Packet Comment”菜单项,对数据包进行注释。

3、合并数据包

点击菜单栏“File->Merge”菜单项,弹出对话框,选择要合并的数据包。
WireShark需要将当前抓取的数据包保存为文件后才能和其他数据包合并。

4、导出数据包

可以导出特定的数据包,如过滤后的特定协议数据包、标记数据包、特定范围内的数据包。

也可以导出数据包为其他格式文件。

五、WireShark参数设置

1、首选项设置

点击菜单栏“Edit->Preference”菜单项,

主界面布局设置

封包列表区的列信息设置

字体和颜色设置

2、抓包选项设置

点击菜单栏“Capture->Options”菜单项
A、网卡设置

B、多文件连续保存
创建一个文件名,开启文件连续保存,如每个文件达到1M或每隔1分钟存取一个文件。

C、名字解析设置
多文件连续保存时,可以选择抓包停止的条件,抓取一定数量的数据包、抓取一定数量的文件时自动停止抓包。选取MAC地址解析、TCP解析等功能。

六、WireShark过滤器

1、抓包过滤器

通过BPF(Berkeley Packet Filter)语法选择性抓取某些特定条件的数据包。
类型:host、net、port
方向:src、dst
协议:ether、ip、tcp、udp、http、ftp
逻辑运算符:与(&&)、或(||)、非(!)
A、ethernet过滤器
第二层过滤器,根据mac地址来进行过滤???

ether?host?XX:抓取源和目的为指定的mac的以太网帧??
ether?dst?XX:抓取目的为指定mac的以太网帧??
ether?src?XX:抓取源为指定mac的以太网帧??
ether?broadcast:抓取所有以太网广播流量??
ether?multicast:抓取多播流量??
ether?proto?<protocol>:抓取指定协议的以太网流量,比如以太网类型为0x0800,ether?proto?0800。以太网类型指的是以太网帧帧头的ether-type字段,表示上层的协议类型。0x0800为ipv4、0x86dd为ipv6、0x0806为arp。?
ether host 00:88:ca:86:f8:0d
ether src host 00:88:ca:86:f8:0d
ether dst host 00:88:ca:86:f8:0d

B、主机和网络过滤器,第三层过滤器??
ip或ipv6:抓取ipv4或ipv6流量??

host?<host>:抓取源或目的为指定主机名(网址)或ip的流量??
dst?host?<host>:抓取目的为指定主机名(网址)或ip的流量??
src?host?<host>:抓取源为指定主机名(网址)或ip的流量??
gateway?<host>:抓取穿越网关的流量,host必须是主机名。??
net?<net>:抓取源或目的为指定网络号的流量,如:net?192.168.1或net?192.168.1.0??
dst?net?<net>:抓取目的为指定网络号的流量??
src?net?<net>:抓取源为指定网络号的流量??
net?<net>?mask?<netmask>:抓取源或目的由net和mask共同指明的ipv4网络号的流量,ipv6流量无效。如:net?192.168.1.0?mask?255.255.255.0??
dst?net?<net>?mask?<netmask>:抓取目的由net和mask共同指明的ipv4网络号的流量,ipv6流量无效。??
src?net?<net>?mask?<netmask>:抓取源由net和mask共同指明的ipv4网络号的流量,ipv6流量无效。??
net?<net>/<len>:抓取源或目的为指定网络和长度的流量,如:net?192.168.1.0/24??
dst?net?<net>/<len>:抓取目的为指定网络和长度的流量??
src?net?<net>/<len>:抓取源为指定网络和长度的流量??
broadcast:抓取ip广播包,通常如:ip?broadcast??
multicast:?抓取ip多播包??
ip?proto?<protocol?code>:抓取ip包头协议类型字段值等于特定值的数据包。如:tcp为6,udp为17,icmp为1??
ip6?proto?<protocol>:?抓取ipv6包头中下一个包头字段值等于特定值的ipv6数据包。无法用该原词根据ipv6扩展包头链中的相关字段值执行过滤。??
icmp?[icmptype]==<identifier>:抓取特定类型[icmptype]的icmp数据包,<identifier>表示的是icmp头部中的类型字段值,如,0(icmp?echo?reply数据包)或8(icmp?echo?request数据包)等。如:icmp[icmptype]==icmp-echo?或?icmp[icmptype]==8??
ip[2:2]==<number>:抓取指定长度的ip数据包(number表示ip包头中的ip包总长度字段值)??
ip[8]==<number>:抓取具有指定ttl的ip数据包(number表示ip包头中的ttl字段值)??
ip[9]==<number>:抓取指定协议类型的ip数据包(number表示ip包头中的协议类型字段值)??
ip[12:4]==ip[16:4]:表示数据包源和目的ip相同??
注:中括号内的数字表示相关协议头部的内容,第一个数字指从协议头部的第几个字节开始关注,第二个数字表示所要关注的字节数。
host 192.168.1.1
src host 192.168.1.1
dst host 192.168.1.1

C、tcp和udp及端口过滤,第四层?过滤器

port?<port>:匹配port指明的端口号,如:port?80或port?http??
dst?port?<port>:目的端口号为指定的端口号??
src?port?<port>:源端口号为指定的端口号??
tcp?portrange?<p1>-<p2>或udp?portrange?<p1>-<p2>:用来抓取端口范围介于p1和p2之间的tcp或udp数据包??。
tcp?src?portrange?<p1>-<p2>或udp?dst?portrange?<p1>-<p2>??。
tcp?[tcpflags]?&?(tcp-syn|tcp-fin)!=0:抓取tcp连接中用来发起连接(syn标记位置1)或终止连接(FIN标记位置1)的数据包?。
tcp?[tcpflags]?&(tcp-rst)!=0:抓取所有RST标记位置1的TCP数据包,RST标记位用来立刻拆除连接,PSH用来表示将数据提交给末端进程处理。??
less?<length>:抓取不长于指定长度的数据包,写法等价于:len?<=?<length>??
greater?<length>:抓取不短于标识符指定的长度的数据包,写法等价于:len?>=?<length>??
tcp?portrange?2000-2500:抓取端口在这个范围内的tcp数据包?。
tcp[13]?&?0x00=0:抓取所有标记位都未置1的tcp流量(在怀疑遭遇空扫描攻击时使用)?。
tcp[13]?&?0x01=1:抓取FIN位置1,但ACK位置0的TCP流量??
tcp[13]?&?0x03=3:抓取SYN和FIN位同时置1的TCP流量??
tcp[13]?&?0x05=5:抓取RST和FIN位同时置1的TCP流量??
tcp[13]?&?0x06=6:抓取SYN和RST位同时置1的TCP流量??
tcp[13]?&?0x08=8:抓取PSH位置1,但ACK位置0的TCP流量??
13指代TCP头部中的标记字段,‘=’号后面数字表示tcp标记位的置位情况。0表示标记位都没置1,1表示FIN位置1,但ACK位置0,1+2表示SYN和FIN位同时置1,1+4表示RST和FIN同时置1,2+4表示SYN和RST同时置1,8表示PSH位置1,但ACK置0.??
port 80
! port 80
dst port 80
src port 80

D、复合过滤:
host 192.168.1.100 && port 8080
抓包过滤器在菜单栏“Capture->Options”

2、显示过滤器

将抓取的数据包通过显示过滤器过滤出某些特定的数据包。
逻辑操作符:and、or、xor、not
比较操作符:==、!=、>、<、>=、<=
IP地址:ip.addr、ip.src、ip.dst
端口:tcp.port、tcp.srcport、tcp.dstport、tcp.flag.syn、tcp.flag.ack
协议:arp、ip、icmp、tcp、udp、dns
过滤IP地址:

ip.addr == 192.168.1.1
ip.src == 192.168.1.1
ip.dst == 192.168.1.1
ip.src == 192.168.1.100 and ip.dst == 58.250.135.156

过滤端口:

tcp.port == 80
tcp.srcport == 80
tcp.dstport == 80
tcp.flag.syn == 1

过滤协议:

arp
tcp
udp
not http

复合过滤:

ip.src == 192.168.1.100 and tcp.dstport == 80
ip.addr == 192.168.1.106 and udp.port == 4000

七、WireShark高级功能

1、数据流追踪

将TCP、UDP、SSL等碎片化的数据包进行重组并完整呈现出来。
单击菜单栏“Analyze->Follow->TCP Stream”或是选中某个TCP数据包右键菜单“Folow->TCP Stream”,查看数据流。

2、专家信息

可以对数据包中特定状态进行警告说明。
点击菜单栏“Analyze->Expert Information”菜单项

根据对统计出的不同级别(Error、Warning、Note、Chat)的数据包,点击相应的数据包,主界面显示区会跳到相应的数据包并高亮标记。

3、统计摘要信息

对抓取的数据包进行全局统计
点击菜单栏“Statistics->Capture File Properties”菜单项

可以查看抓取的数据包的统计信息。

4、协议分层统计

点击菜单栏“Statistics->Protocol Hierarchy”菜单项

可以统计通信流量中不同协议占用的百分比。

5、网络节点统计

“Statistics->Endpoints”

统计通信会话中每个节点接收和发送的数据包和字节数,通过网络节点统计可以找出网络中哪个节点(IP地址或端口号)最占用带宽。

6、网络会话统计

“Statistics->Conversations”

统计通信会话之间接收和发送的数据包和字节数,通过网络会话统计可以找出网络中哪个会话(IP地址或端口号)最占用带宽。

7、数据包长度统计

“Statistics->Packet Lengths”

统计数据流量中数据包长度的分布。

8、图表分析

“Statistics->IO Graph”查看网络吞吐量图表。

对网络中的吞吐流量进行实时图形显示,可以对不同过滤条件过滤的数据包以不同的线型、颜色表示。
“Statistics->Flow Graph”查看数据流图

将会话通信过程图形可视化出来。

原文地址:http://blog.51cto.com/9291927/2108319

时间: 2024-10-10 01:36:58

GNU开发工具——WireShark网络分析工具的相关文章

Wireshark网络分析工具

下载官网:https://www.wireshark.org/download.html 一路无脑安装即可,看不懂的就遇到勾选的选项全部勾选安装完成即可使用.运行后页面如下: 使用wireshark常用的过滤命令 过滤源ip.目的ip.在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src==1.1.1.1:如来源IP或者目标IP等于某个IP  ip.src eq 192.1

GNU开发工具——CMake快速入门

GNU开发工具--CMake快速入门 一.CMake简介 不同Make工具,如GNU Make.QT的qmake.微软的MS nmake.BSD Make(pmake)等,遵循着不同的规范和标准,所执行的Makefile格式也不同.如果软件想跨平台,必须要保证能够在不同平台编译.而如果使用Make工具,必须为不同的Make工具编写不同的Makefile.CMake是一个比Make工具更高级的编译配置工具,是一个跨平台的.开源的构建系统(BuildSystem).CMake允许开发者编写一种平台无

GNU开发工具——CMake进阶

GNU开发工具--CMake进阶 一.CMake基础指令 1.cmake_minimum_required cmake_minimum_required (VERSION 2.8)cmake_minimum_required用于规定cmake程序的最低版本,可选.如果CMakeLists.txt文件中使用了高版本cmake特有的一些命令时,就需要使用cmake_minimum_required对CMake进行版本限制,提醒用户升级到相应版本后再执行cmake. 2.project project

GNU开发工具——CMake工程实践

GNU开发工具--CMake工程实践 一.CMake构建Qt工程 1.Qt工程源码 创建Migration目录,在目录下创建main.cpp文件: #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label(QString("Hello Qt%1!").arg(int(QT_VERSI

GNU开发工具——CMake模块

GNU开发工具--CMake模块 一.find_packge高级功能 1.find_package的模式 find_package()有Module模式(基本用法)和Config模式(完全用法),其中Module模式是基础,Config模式则提供复杂高级功能.find_package是否使用Config模式可以通过下列条件判断:(1)find_package()中指定CONFIG关键字(2)find_package()中指定NO_MODULE关键字(3)find_package()中使用了不再M

网络分析工具:wireshark/termshark/scapy

毋庸置疑,wireshark 是当前网络分析工具中的王者. 但是仅有这一个工具显然也是不够的,我们除了抓包,还希望进行网络拓扑分析.协议栈分析,端口扫描等等,因此出现了一大堆特定功能的工具.不过简单起见,我们可以用一个 scapy 完成其中的大部分工作.这个工具让我们可以使用 Python 修改网络底层的数据包. 另外为了在服务器上进行抓包分析,可以使用 wireshark 的命令行工具 tshark,但是 tshark 只支持抓包并输出到文件,然后进行后续分析. 为了方便地进行实时分析,可以使

开发与测试分析工具集锦(网络摘要)不断更新

一.测试工具 (一)软件测试工具 (二)网络分析工具 1.TcpDump工具(网络安全分析工具 ):抓包分析                     tcpdump 是一个运行在命令行下的嗅探工具.它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包.tcpdump 是一个在BSD许可证下发布的自由软件.                     tcpdump是非常强大的网络安全分析工具,可以将网络上截获的数据包保存到文件以备分析.可以定义过滤规则,只截获感兴趣的数据包,

抓包工具tcpdump及分析工具wireshark

一.抓包工具tcpdump tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息.因此系统中存在网

科来网络分析工具 (自己使用过 感觉还不行)

科来网络分析工具官网 在网易云课堂学习课程 Wireshark协议分析从入门到精通 时听老师说起过国内的这家厂商的网络分析软件,所以自己测试了下 我只测试了  科来MAC地址扫描器  和 科来Ping工具 这两个小辅助工具 务性能管理系统(UPM) 网络回溯分析系统(RAS) 网络分析系统(CSNAS) 我没用使用  科来MAC地址扫描器 最大线程可设置为100 运行图如下 科来Ping工具  看我这里的网络 似乎不怎么好啊,这里屏蔽了cnblogs,我也不知道为什么 原文地址:https://