reference: https://blog.csdn.net/ningjinghai11/article/details/81984907
使用wireshark抓包注意事项:
由于网卡默认的一包数据比较小,应该手动设置成巨包格式。
步骤:
1.点击配置
2.高级->巨帧数据包->选择4096字节。
抓包数据显示如下:
可见收到的万兆网UDP包,源地址为192.168.1.10,目的地址为192.168.1.5,源即fpga板卡,目的即主机的万兆网卡。
数据分析:
以太网帧格式:
Ethernet II类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。其中前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。(注:ISL封装后可达1548字节,802.1Q封装后可达1522字节)。
接下来的2个字节标识出以太网帧所携带的上层数据类型,如下:
IPv4: 0x0800
ARP:0x0806
PPPoE:0x8864
802.1Q tag: 0x8100
IPV6: 0x86DD
MPLS Label:0x8847
(1)源MAC+目的MAC+TYPE
001b_21bd_be04为目的MAC,即万兆网卡的MAC;bbbb_bbbb_bbbb为源MAC地址,即FPGA板卡的AMC地址。(12字节)
0800为以太网类型(2字节),
(2)data段 此处的总包长包括此段的长度20字节+UDP包长 总包长=0x4500开始的20个字节+UDP包长
4500(2字节);啥意思不清楚
089c为总包长(=2204),8e57为帧序号,0x0000为flag,0x80(128)为Time to live , 0x11(17)为protocol UDP;
209a为header_checksum,c0a8_010a为源IP地址(192.168.1.10),c0a8_0105为目的IP地址(192.168.1.5);
(3)UDP包段
UDP包长(2184)=source_port(2字节)+destination_port(字节)+udp_length(2字节)+checksum(2字节)+data(2176字节)
1B58为source_port_ID(=7000),1784为destination_port_ID(6020),0888为udp_length(2184),69d7为checksum;
后面的为data 2176字节。
wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
首先说几个最常用的关键字,“eq” 和 “==”等同,可以使用 “and” 表示并且,“or”表示或者。“!" 和 "not” 都表示取反。
一、针对wireshark最常用的自然是针对IP地址的过滤。其中有几种情况:
(1)对源地址为192.168.0.1的包的过滤,即抓取源地址满足要求的包。
表达式为:ip.src == 192.168.0.1
(2)对目的地址为192.168.0.1的包的过滤,即抓取目的地址满足要求的包。
表达式为:ip.dst == 192.168.0.1
(3)对源或者目的地址为192.168.0.1的包的过滤,即抓取满足源或者目的地址的ip地址是192.168.0.1的包。
表达式为:ip.addr == 192.168.0.1,或者 ip.src == 192.168.0.1 or ip.dst == 192.168.0.1
(4)要排除以上的数据包,我们只需要将其用括号囊括,然后使用 "!" 即可。
表达式为:!(表达式)
二、针对协议的过滤
(1)仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。
表达式为:http
(2)需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。
表达式为:http or telnet (多种协议加上逻辑符号的组合即可)
(3)排除某种协议的数据包
表达式为:not arp !tcp
三、针对端口的过滤(视协议而定)
(1)捕获某一端口的数据包
表达式为:tcp.port == 80
(2)捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式
表达式为:udp.port >= 2048
四、针对长度和内容的过滤
(1)针对长度的过虑(这里的长度指定的是数据段的长度)
表达式为:udp.length < 30 http.content_length <=20
(2)针对数据包内容的过滤
表达式为:http.request.uri matches "vipscu" (匹配http请求中含有vipscu字段的请求信息)