Tcpdump - Wireshark
tcpdump & wireshark
Tcpdump 常用示例及相关参数
# 抓取指定协议和网络接口的数据包,# -nn表示不解析主机名称,# -c表示抓取的数据包个数# -w表示将内容持久化到文件当中去,一般以`.pcap`后缀结尾tcpdump -i eth0 -c 5 icmp and host 192.168.1.1 -nn
# 简单tcp数据包,保存的文件可以使用wireshark工具进行分析处理tcpdump -i any tcp and host 192.168.2.100 and port 80 -w http.pcap
Wireshark 过滤器
过滤符号及组合
示例
-
ip
相关Terminal window ip.addr != 192.168.43.37 # 过滤非 192.168.43.37 主机的数据包, 官方不推荐使用该格式, 可能会出现漏包的现象.!(ip,addr == 192.168.43.37)# 或者使用not ip.addr == 192.168.43.37(ip.addr == 172.16.7.42 and dns) or (172.16.7.7 and icmp) -
针对协议的过滤
-
获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可
http
注意:是否区分大小写?答:区分,只能为小写
- 捕获多种协议的数据包
http or telnet
- 排除某种协议的数据包
not arp 或者 !tcp
-
针对端口的过滤(视传输协议而定)
- 捕获某一端口的数据包(以tcp协议为例)
Terminal window tcp.port == 80- 捕获多端口的数据包,可以使用and来连接,下面是捕获高于某端口的表达式(以udp协议为例)
Terminal window udp.port >= 2048 -
针对长度和内容的过滤
- 针对长度的过虑(这里的长度指定的是数据段的长度)
Terminal window udp.length < 20http.content_length <=30- 针对uri 内容的过滤
Terminal window http.request.uri matches "user" (请求的uri中包含“user”关键字的)注意:
matches
后的关键字是不区分大小写
的!Terminal window http.request.uri contains "User" (请求的uri中包含“user”关键字的)注意:
contains
后的关键字是区分大小写
的! -
针对http请求的一些过滤实例。
- 过滤出请求地址中包含“user”的请求,不包括域名;
Terminal window http.request.uri contains "User"- 精确过滤域名
Terminal window http.host==baidu.com- 模糊过滤域名
Terminal window http.host contains "baidu"- 过滤请求的content_type类型
Terminal window http.content_type =="text/html"- 过滤http请求方法
Terminal window http.request.method=="POST"- 过滤tcp端口
Terminal window tcp.port==80http && tcp.port==80 or tcp.port==5566- 过滤http响应状态码
Terminal window http.response.code==302- 过滤含有指定cookie的http数据包
Terminal window http.cookie contains "userid"
参考链接
- Wireshark过滤器写法总结: https://www.cnblogs.com/willingtolove/p/12519490.html
- tcpdump 详解:https://xiaolincoding.com/network/3_tcp/tcp_tcpdump.html