本文共 8173 字,大约阅读时间需要 27 分钟。
用了一周多的时间看了《Wireshark数据包分析实战详解》这本书的第一篇,这前九章的内容主要是讲解wireshark的使用方法和技巧,以及capinfos、dumpcap、editcap和tshark等命令行工具的使用技巧。另外我也参考了网络上的一些文章,对本阶段学习做一个小总结,方便以后复习。
在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Wireshark的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。
可定制profile配置文件,右键profile,进行管理。
基础使用不在赘述。
语法:<Protocol> <Direction> <Host(s)> < Value> < Logical Operations> <Other expression>
Protocol(协议): ether,fddi, ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议。
Direction(方向):src, dst,src and dst, src or dst等,如果没指明方向,则默认使用 “src or dst” 作为关键字。
Host(s): net, port, host, portrange等,默认使用”host”关键字,”src 10.1.1.1″与”src host 10.1.1.1″等价。
Logical Operations(逻辑运算):not, and, or 等,否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。
host 192.168.5.231 and port 80 and http
port 80 and http
host 192.168.5.231 and not port 80
not port 80
not port 80 and !http
host 192.168.5.231
dst 192.168.5.231
src 192.168.5.231
net 192.168.5.0/24
host 192.168.5.231 and port 53
src 192.168.5.231 and port 53
dst 192.168.5.231 and port 53
port 53
host 192.168.5.231 and arp
host 192.168.5.231 and !arp
arp
!arp
tcp portrange 8000-9000 an port 80
port 5060
port 22
#捕获ssh流量 host 192.168.5.231 and port 25
port 25 and portrange 110-143
vlan
vlan and (host 192.168.5.0 and port 80)
捕获过滤器使用BPF语法,而显示过滤器使用wireshark专有格式。
并且显示显示过滤器区分大小写,大部分使用的是小写。语法格式:
Protocol String1 String2 Comparision operator Value Logical Operations Other expression
Protocol(协议):该选项用来指定协议。该选项可以使用位于OSI模型第2-7层的协议。
String1,String2(可选项):协议的子类。 Comparision operator: 指定运算比较符。英文写法 | C语言写法 | 含义 |
---|---|---|
eq | == | 等于 |
ne | != | 不等于 |
gt | > | 大于 |
lt | < | 小于 |
ge | >= | 大于等于 |
le | <= | 小于等于 |
Logical expression: 指定逻辑运算符。
英文写法 | C语言写法 | 含义 |
---|---|---|
and | && | 逻辑与 |
or | || | 逻辑或 |
xor | ^^ | 逻辑异或 |
not | ! | 逻辑非 |
协议过滤器
arp
#显示所有ARP流量 ip
#显示所有IPv4流量 ipv6
#显示所有IPv6流量 tcp
#显示所基于TCP的流量数据 应用过滤器
bootp
#显示所有DHCP流量 dns
#显示所有NDS流量,包括tcp传输和udp的dns请求和响应 tftp
#显示所有TFPT(简单文件传输协议)流量 http
#显示所有HTTP命令、响应和数据传输包。但是不现实tcp握手包、tcp确认报和tcp断开包的流量数据。 icmp
#显示所有ICMP流量(ping命令发出的数据包)。 字段存在过滤器
bootp.option.hostname
#显示所有DHCP流量,包含主机名(DHCP是基于BOOTP)。 http.host
#显示所有包含http主机名字段的数据包。通常是由一个客户端发给web服务器的请求。 ftp.request.command
#显示所有ftp命令数据,如USER、PASS、RETR命令。 特有的过滤器
tcp.analysis.flags
#显示所有与tcp表示有关的包,包括丢包、重发和零窗口标志。 tcp.analysis.zero_window
#显示被标志的包,表示发送方的缓存空间已满 筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26
筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26
筛选ip地址为192.168.1.1的数据包----ip.addr == 192.168.1.1
筛选192.168.1.0网段的数据---- ip contains “192.168.1”
筛选192.168.1.1和192.168.1.2之间的数据包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2
筛选从192.168.1.1到192.168.1.2的数据包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
筛选tcp协议的数据包----tcp
筛选除tcp协议以外的数据包----!tcp
筛选端口为80的数据包----tcp.port == 80
筛选12345端口和80端口之间的数据包----tcp.port == 12345 && tcp.port == 80
筛选从12345端口到80端口的数据包----tcp.srcport == 12345 && tcp.dstport == 80
特别说明 :http中http.request表示请求头中的第一行(如GET index.jsp HTTP/1.1),http.response表示响应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。
筛选url中包含.php的http数据包----http.request.uri contains “.php”
筛选内容包含username的http数据包----http contains “username”
tshark的 - 转储和分析网络流量
tshark的 [ -2 ] [ -a <捕捉自动停止条件>] … [ -b <捕捉环形缓冲区选项>] … [ -B <捕获缓冲区大小>] [ -c <捕获分组计数>] [ - ? <配置文件>] [ -d <层型> == <选择>,<译码作为协议>] [ -D ] [ -e <字段>] [ -E <现场打印选项>] [ -f <捕获筛选>] [ -F <文件格式>] [ -g ] [ -h ] [ -H <输入hosts文件>] [ -i <采集界面> | - ] [ -I ] [ -K <密钥表>] [ -l ] [ -L ] [ -n ] [ -N <名称解析标志>] [ -o <偏好设置>] … [ -O <协议>] [ -p ] [ -P ] [ -q ] [ -Q ] [ -r ] [ -R <读过滤>] [ -s <捕获的Snaplen>] [ -S <分隔符>] [ -t 一个|广告| adoy | D | DD | E | - [R | U | UD | udoy] [ -T 领域| PDML | PS | PSML |文] [ -u <秒类型>] [ -v ] [ -V ] [ -w | - ] [ -W <文件格式选项>] [ -x ] [ -X <分机选项>] [ -y <捕获链接类型>] [ -Y <显示过滤>] [ -z <统计>] [ --capture注释 <评论> ] [<捕获筛选>]
tshark -G [column-formats|currentprefs|decodes|defaultprefs|fields|ftypes|heuristic-decodes|plugins|protocols|values]
如要查询更详细的选项解析可参考
-a <捕捉自动停止条件>
持续时间:值停止写入捕捉文件后价值秒钟过去了。
作品尺寸:值停止写入捕捉文件后,它达到的大小 值 KB。如果此选项与-b选项一起使用,tshark的 将停止写入当前捕捉文件,并切换到下一个,如果文件大小达到。当读取捕获文件,tshark的将停止读取文件之后读取的字节数超过此数值(完整数据包将被读取,所以比这个数目更多的字节可被读取)。注意,文件大小限制为2吉布最大值。
文件:值停止写入捕捉文件后,值被写入文件的数量。
-c <捕获的数据包数>
-D
这可以在不具有命令列出它们(例如,Windows系统或UNIX系统缺乏系统是有用的ifconfig -a); 数量可在Windows 2000和更高版本的系统,其中接口名称是一个比较复杂的字符串是有用的。
需要注意的是“可以捕获”是指tshark的是能够打开设备进行实时捕捉。根据您的系统,你可能需要从具有特殊权限的帐户下运行tshark的(例如,作为root)才能够捕获网络流量。如果tshark的-D不是从这样的帐户下运行,它不会显示任何接口。
-e <现场>
例如:-e frame.number -e ip.addr -e UDP -e _ws.col.info
给人一种协议,而不是一个单一的场将打印有关的协议作为一个单一的场数据的多个项目。字段之间用制表符分隔默认。 -E控制打印领域的格式。
-E <现场打印选项>
选项??有:
标题= Y | N如果Y,打印的使用给定的字段名称的列表-e 作为输出的第一行; 字段名称将使用相同的字符作为字段值中分离出来。默认为。
分离器= / T | /秒| <字符>设置分隔符使用领域。如果/吨标签将会被使用(这是默认值),如果 /秒,一个单一的空间将被使用。否则,可以通过命令行被接受为选择一部分的任何字符都可以使用。
发生= F | L |一个用于具有多个事件字段选择对哪些发生。如果F第一次出现将被使用,如果升 最后出现的将被使用,如果一个事件都将使用(这是默认值)。
聚合=,| / S | <字符>设置聚合字符用于具有多次出现的字段。如果,一个逗号将被使用(这是默认值),如果/秒,一个单一的空间将被使用。否则,可以通过命令行被接受为选择一部分的任何字符都可以使用。
报价= D | S | N,设置引号字符使用环绕领域 e 使用双引号,单引号,暂无报价(默认值)。
-f <捕获过滤器>
这个选项可以出现多次。如果第一次出现之前使用-i选项,它设置默认的捕获过滤器表达式。如果使用后-i选项,它为在最后指定的接口捕获过滤表达式-i此选项之前发生的选项。如果捕获过滤器表达式没有设置具体而言,如果所提供的默认捕获筛选表达式中使用。
-F <文件格式>
-i <捕捉接口> | -
网络接口名称应与所列出的名称之一“ tshark的-D(如上所述)“; 一个数字,所报告的“ tshark的-D “,也可以使用。如果您使用的是UNIX,“ netstat的-i “或” 使用ifconfig -a “也可能工作获得的接口名,虽然不是所有的UNIX版本都支持-a选项的ifconfig。
如果不指定接口,tshark的搜索列表界面,选择第一个非回送接口,如果有任何非Loopback接口,并选择第一个loopback接口,如果没有非环回接口。如果没有接口可言, tshark的报告错误,不执行捕捉。
管道名即可以是FIFO(命名管道)的名称或`` - ''从标准输入读取数据。从管道读取的数据必须是标准的PCAP格式。
这个选项可以出现多次。当从多个接口捕获,捕获文件将被保存在PCAP-ng的格式。
注:Win32版本的tshark的不支持从管道捕捉!
-r <INFILE>
-w <OUTFILE> | -
注:-w提供原始数据包数据,而不是文字。如果你想文本输出需要重定向标准输出(例如,使用’>’),不使用-w 选项这一点。
-W <文件格式选项>
-F pcapng -W?
将节省主机名解析记录以及捕获的数据包。
Wireshark的未来版本可能会采集格式自动更改为 pcapng需要。
的说法是,可能包含了下面这封信的字符串:
写网络地址解析信息(仅pcapng)
-Y <显示过滤器>
使用此,而不是-R使用单通分析滤波。如果这样做两遍分析(见-2)然后只包匹配的读取滤波器(如果有的话)将被针对该过滤器进行检查。
tshark -i 4 -f “tcp” -w tcp.pcapng
tshark -r "tcp.pcapng" -Y "tcp.analysis.flags"
#使用-Y指定的显示过滤器显示tcp.pcapng流量包 tshark -i 4 -f “dst port 80 and host 192.168.1.3” -T fields -e frame.number -e ip.src -e ip.dst -e tcp.window_size
#导出到达192.168.1.3主机接口4上的80端口的所有数据,并且导出的字段包括帧编号,目的和源ip和tcp窗的大小。 tshark -i 4 -Y "htpp.host" -T fields -e http.host > httphosts.txt
#导出HTTP包的Host字段值。 tshark -i 4 -qz io,phs
#导出统计数据,当按下Ctrl+C停止时,会显示统计信息。 tshark -i 4 -qz hosts
#查看整个网络中活跃的主机列表。 tshark -r "http.capng" -qz expert,notes
#导出http.capng中的专家信息中的notes信息。若只要导出专家信息中的Errors&Warnings信息可以 -qz expert,warn 参考:
《Wireshar数据包分析实战解析》
转载地址:http://ynoen.baihongyu.com/