0%

总结分享-Wireshark常用命令总结

功能总结

导出数据包

方法:File | Export Packet Dissections | as”CSV”(Comma Separated Values packet summary)file…

  1. 导出格式有纯文本、CSV、XML、JSON等;
  2. 不仅可以输出选中列,还可以输出当前页面展示的列,以及所有列(在导出弹框中设置);
  3. 可以设置包格式,比如导出统计行、统计头、包详细数据等;

添加展示列

方法:Package Details 面板中展开包详情,找到指定字段右键单击并选择Apply as Column 选项

显示一个TCP/UDP 会话

方法1:选中一个包,右键选择Conversation Filter|[TCPIUDP]命令

方法2:选中一个包,右键选择Follow[TCPIUDP] Stream 命令

方法3:工具栏选择Statistics|Conversations命令

方法4:在TCP 头部,通过右键单击stream index 字段并选择Apply as Filter 命令

命令总结

捕获过滤命令

捕获过滤器仅支持协议过滤。

1. 主机相关过滤命令*

  • host 10.3.1.1: 捕获到达/来自10.3.1.1主机的数据(支持IPv6地址)。
  • not host 10.3.1.1: 捕获除了到达/来自10.3.1.1主机的所有数据。
  • src host 10.3.1.1: 捕获来自10.3.1.1 主机上的数据。
  • dst host 10.3.1.1: 捕获到达10.3.1.1 主机上的数据。
  • host 10.3.1.1 or host 10.3.1.2: 捕获到达/来自10.3.1.1主机上的数据,和到达/来自10.3.1.2 主机的数据。

2. 端口相关过滤命令*

  • port 53: 捕获到达/来自端口号为53的UDP/TCP 数据(典型的DNS 数据)。
  • not port 53 : 捕获除到达/来自端口号为53的所有UDP/TCP 数据。
  • port 80: 捕获到达/来自端口号为80的UDP/TCP 数据(典型的HTTP 数据)。
  • udp port 67 : 捕获到达/来自端口号为67的UDP 数据(典型的DHCP 数据)。
  • tcp port 21: 捕获到达/来自端口号为21的TCP 数据(典型的FTP 数据)。
  • portrange 1-80: 捕获到达/来自1~80端口号的UDP/TCP 数据。
  • tcp portrange 1-80: 捕获到达/来自1~80端口号的TCP 数据。

3. 主机和端口混合过滤命令*

  • port 20 or port 21 :捕获到达/来自20 或21 端口号的所有UDP/TCP 数据。
  • host 10.3.1.1 and port 80: 捕获到达/来自端口号为80, 并且是到达/来自10.3.1.1主机的UDP/TCP 数据。
  • host 10.3.1.1 and not port 80: 捕获到I来自10.3.1.1 主机,并且是非80 端口的UDP/TCP 数据。
  • udp src port 68 and udp dst port 67: 捕获来自端口为68, 目标端口号为67 的所有UDP 数据(典型的DHCP 客户端到DHCP 服务器的数据) 。
  • udp src port 67 and udp dst port 68: 捕获来自端口号为67, 目标端口号为68 的所有UDP 数据(典型的DHCP 服务器到DHCP 客户端的数据)。

4. IP地址范围过滤命令

  • net 192.168.0.0/24:捕获到达/来自192.168.0.0网络中任何主机的数据。
  • net 192.168.0.0 mask 255.255.255.0: 捕获到达/来自192.168.0.0网络中任何主机的
    数据。
  • ip6 net 2406:daOO:ff00::/64: 捕获到达/来自2406:daOO:ffDO:OOOO ( IPv6) 网络中任
    何主机的数据。
  • not dst net 192.168.0.0/24: 捕获除目的IP地址是192.168.0.0网络外的所有数据。
  • dst net 192.168.0.0/24:捕获到达IP地址为192.168.0.0网络内的所有数据。
  • src net 192.168.0.0/24: 捕获来自IP地址为192.168.0.0网络内的所有数据。

5. 广播或多播地址过滤命令

  • ip broadcast: 捕获到255.255.255.255 的数据。
  • ip multicast: 捕获通过224.0.0.0~239.255.255.255的数据。
  • dst host ff02::1: 捕获所有主机到IPv6多播地址的数据。
  • dst host ff02::2: 捕获所有路由到IPv6多播地址的数据。(跟上一个有什么区别?

6. MAC地址过滤命令

  • ether host 00:08:15:00:08:15: 捕获到达/来自00:08:15:00:08:15主机的数据。
  • ether src 02:0A:42:23:41:AC: 捕获来自02:0A:42:23:41:AC 主机的数据。
  • ether dst 02:0A:42:23:41:AC: 捕获到达02:0A:42:23:41:AC 主机的数据。
  • not ether host 00:08:15:00:08:15:捕获到达/来自除了00:08:15:00:08:15的任何MAC
    地址的流量。

7. 特定ICMP协议过滤命令

  • icmp:捕获所有ICMP 数据包。
  • icmp[0]=8 : 捕获所有ICMP 字段类型为8 (Echo Request) 的数据包。
  • icmp[0]=17: 捕获所有ICMP 字段类型为17 (Address Mask Request) 的数据包。
  • icmp[0]=8 or icmp[0]=0: 捕获所有ICMP 字段类型为8 (Echo Request) 或ICMP
    字段类型为0 (Echo Reply) 的数据包。
  • icmp[0]=3 and not icmp[1]=4 :捕获所有ICMP 字段类型为3 (Destination
    Unreachable) 的包,除了ICMP 字段类型为3/代码为4 (Fragmentation Needed and
    Don’t Fragment was Set) 的数据包。

显示过滤命令

显示过滤器可以帮助用户在捕捉结果中进行数据查找。该过滤器可以在得到的捕捉结果中修改,以显示有用数据。

既支持协议过滤也支持内容过滤。

1. 通用语法格式

1
2
Protocol | [String1] [String2] | Comparison-Operator | Value | Logical-Operations | Other-expression
协议(2~7层) 协议子类 比较运算符 比较值 逻辑运算符 其他表达式

其中比较运算符有如下6个:

英文写法 C 语言写法 含义
eq == 等于
ne != 不等于
gt > 大于
lt < 小于
ge >= 大于等于
le <= 小于等于
contains - 包含
matches - 匹配

逻辑运算符有如下4个:

英文写法 C 语言写法 含义
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not ! 逻辑非

2. 协议过滤命令*

  • arp: 显示所有ARP 流量,包括免费ARP 、ARP 请求和ARP 应答。
  • ip(v6): 显示所有IPv4/IPv6 流量,包括有IPv4(IPv6) 头部嵌入式的包(如ICMP 目标不可达的数据包,返回到ICMP 头后进入到IPv4 头部)。
    • ip(v6).src
    • ip(v6).dst
    • ip(v6).host
    • ip(v6).addr
  • tcp: 显示所有基于TCP 的流量数据。

3. 应用过滤命令*

  • bootp: 显示所有DHCP 流量(ipv4下基于BOOTP,ipv6下不是基于BOOTP,过滤时使用dhcpv6) 。
  • dns: 显示所有DNS 流量,包括基于TCP 传输和UDP 的DNS 请求和响应。
  • tftp: 显示所有TFTP (简单文件传输协议)流量。
  • http: 显示所有HTTP 命令、响应和数据传输包。但是不显示TCP 握手包、TCP确认包或TCP 断开连接的包。
  • http contains “GET”: 显示HTTP 客户端发送给HTTP 服务器的所有GET 请求数据。
  • icmp: 显示所有ICMP 流量。

4. 字段存在过滤命令

  • bootp.option.hostname: 显示所有DHCP 流量,包含主机名( DHCP 是基于BOOTP) 。
  • http.host: 显示所有包含有HTTP 主机名字段的HTTP 包。该包通常是由客户端发送给一个Web 服务器的请求。
  • ftp.request.command: 显示所有FTP 命令数据,如USER 、PASS 或RETR 命令。
  • ftp.request.arg matches “admin”: 显示匹配admin 字符串的数据。
  • tcp.analysis.flags: 显示所有与TCP 标识相关的包,包括丢包、重发或者零窗口标志。
  • tcp.analysis.zero_window: 显示被标志的包,来表示发送方的缓冲空间已满。

5. 逻辑运算过滤命令

  • &&或and: ip.src=l0.2.2.2 && tcp.port=80,表示显示源地址10.2.2.2 主机,并且端口号为80 的所有IPv4 流量。
  • ||或or: tcp.port=80 || tcp.port=43,表示显示到达/来自80 或443 端口的所有TCP数据。
  • !或not: !arp,表示查看除ARP 外的所有数据。
  • !=或ne: tcp.flags.syn != 1,表示查看TCP SYN 标志位不是1 的TCP 数据帧。

注:

ip.addr != 10.2.2.2 表示显示IP 源或目标地址字段非10.2.2.2 的数据包。如果一个包的源或目标IP 地址字段中不包含10.2.2.2, 则显示该数据包。在该语法中使用了一个隐含或,并且不会过滤掉任何数据包。

!ip.addr == 10.2.2.2 表示显示在IP 源和目标地址字段不包含10.2.2.2 的数据包。当排除到达/来自一个特定IP 地址的数据时,这是一个合适的过滤器语法。

!tcp.flags.syn==l 表示显示TCP SYN 标志位不等于1的所有TCP 包和其他协议包,如UDP 、ARP数据包将匹配该过滤器。因为UDP 和ARP 协议中没有TCP SYN 标志位为1 的数据包。

tcp.flags.syn != 1 表示仅显示包括SYN 设置为0 的TCP 包。

6. 时间过滤命令

  • frame.time_delta > 1,表示时间延迟超过1 秒的数据,显示捕获文件中所有包的时间。
  • tcp.time_delta > 1,表示TCP 时间差大于1 秒的数据。

注:上述命令主要用于判断各种网络延迟。