Linux抓包工具tcpdump使用总结,WireShark的过滤用法

tcpdump与WireShark是Linux下的两个常用,功能强大的抓包工具,下面列出这两个工具的简单用法。

tcpdump用法

tcpdump用法:

sudo tcpdump -i ens33 src 192.168.0.19 port 80 -xx -Xs 0 -w test.cap
sudo tcpdump -i ens33 src port 80 -xx -Xs 0 -w test.cap

参数说明:
-i: 指定网卡
src: 指明包的来源
port: 指明端口号
-xx: 指抓到的包以16进制显示
-X: 指以ASCII码显示
-s 0: 指明抓整个包
-w: 写到文件中

 

WireShark过虑用法

【WireShark中的逻辑运算】
与: and 或 &&
或: or 或 ||
非: not 或!

WireShark中的判断语句
等于: eq 或 ==
大于: gt 或 >
小于: lt 或 <
大于等于: ge 或 >=
小于等于: le 或 <=
不等于: ne 或 !=

组合符(小括号)
()

包含与正由表达式匹配运算符
contains
matches
注意:matches 后的关键字是不区分大小写的,contains后面的关键字区分大小写。

【协议过滤】
在表达式输入框中输入协议名称即可。
注意:协议名称为小写,大写会报错
http
udp
tcp
arp
icmp
smtp
pop
dns
ip
ssl
ftp
telnet
ssh
rdp
rip
ospf

捕获多种协议,只需要对协议进行逻辑组合
http or udp

排除某种协议的数据包
not arp not tcp

【http域名与url过滤】
按内容长度过滤
http.content_length <= 100
http.content_length_header <= 100

 

针对数据包内容的过滤
匹配http请求中含有/api/member/health/check 的请求信息
http.request.uri matches "/api/member/health/check"

 

查询url中包含/api/member/home/test.html? 字符串的信息

http.request.uri contains "/api/member/home/test.html?"

 

按域名过滤

http.host == "jd.com" #精确过滤
http.host contains "jd.com" #模糊过虑

 

过滤请求的uri,取值是域名后的部分
http.request.uri=="/online/setpoint"

 

过滤完整的url
http.request.full_uri=="https://passport.jd.com/uc/login"

 

按http响应的状态过虑
http.response.code==302
http.response.code==401

 

过滤所有的http响应包
http.request==1
http.response==1


过滤所有请求方式为POST或GET的http请求包,注意POST或GET为大写
http.request.method==GET
http.request.method==POST

 

过滤含有指定cookie的http数据包
http.cookie contains userid

 

过滤http头中server字段含有nginx字符的数据包
http.server contains "nginx"

 

过滤content_type是text/html的http响应
http.content_type == "text/html"

 

过滤content_type是application/json的http响应

http.content_type == "application/json"


过滤content_encoding是gzip的http包
http.content_encoding == "gzip"

 

过滤所有含有http头中含有server字段的数据包
http.server


过滤HTTP/1.1版本的http包,包括请求和响应
http.request.version == "HTTP/1.1"

 

过滤http响应中的phrase
http.response.phrase == "OK"

 

【ip与端口过滤】
按目标地址过滤
ip.dst==192.168.0.19

 

按源地址过滤
ip.src==192.168.0.26

 

按目标地址或源地址过滤
ip.addr==192.168.0.19

 

按目标端口或源端口过滤
tcp.port==1935
udp.port==2365

 

按源端口过滤
tcp.srcport==2365
udp.srcport==2365

 

按目标端口过滤
tcp.dstport==1935
udp.dstport==1935

 

【数据过滤】
按包长度过滤
tcp.length < 300
udp.length < 300

 

过滤指定长度的udp数据包
udp.length == 20


过滤指定长度的tcp数据包
tcp.length == 20

 

过滤data部分长度为8的数据包
data.len==8

 

过滤指定内容的数据包
data.data == 00:08:30:03:00:00:00:00


【捕获经过指定ip的数据包】

抓取192.168.0.1 收到和发出的所有数据包
host 192.168.0.9

 

源地址192.168.0.1发出的所有数据包
src host 192.168.0.9

 

目标地址192.168.0.1收到的所有数据包
dst host 192.168.0.9

 

根据主机名过滤
src host hostnam

 

根据MAC地址过滤
ether host 80:05:09:03:E4:35

 

网络过滤,过滤整个网段
net 192.168.0
src net 192.168
dst net 192

 

【MAC地址过滤】

过滤目标或源地址是00:11:22:33:44:55的数据包
eth.addr== 00:11:22:33:44:55

 

过滤源地址是00:11:22:33:44:55的数据包
eth.src== 00:11:22:33:44:55

 

过滤目标地址是00:11:22:33:44:55的数据包
eth.dst== 00:11:22:33:44:55

 

【组合过滤】

捕获udp源端口等于3457,源ip等于3457,或者udp目标端口等于1091,目标ip等于192.168.0.10的数据包
(upd.srcport==3457 and ip.src=192.168.0.9) or (upd.dstport==1091 and ip.dst=192.168.0.10)

 

抓取所有目的网络是192.168,但目的主机不是192.168.0.2 的TCP数据
(tcp) and ((dst net 192.168) and (not dst host 192.168.0.2))

 

抓取所有目标MAC 地址是80:05:09:03:E4:35 的ICMP 数据
(icmp) and ((ether dst host 70:03:09:15:F4:12))
icmp && eth.dst==70:03:09:15:F4:12

 

Linux抓包工具tcpdump使用总结,WireShark的过滤用法

上一篇:oracle构建一致性读


下一篇:Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.Depe