前言
本篇记录一下wireshark软件基本的使用方法
参考文章:
https://zhuanlan.zhihu.com/p/672867223
数据流追踪
当我们想查看某条数据包对于的数据流的话。可以选中数据,右键选择追踪流;
里面就会有tcp流、udp流、ssl流、http流。数据包属于哪种流就选择对应的流;
查看信息
当我们要查看某条流的信息的时候,可以右键对应的信息选择显示分组字节
过滤器表达式
协议过滤:
- TCP:只显示TCP协议的数据流
- HTTP:只显示HTTP协议的数据流
- ICMP:只显示ICMP协议的数据流
- ARP:只显示ARP协议的数据流
- DNS:显示DNS协议的数据流

IP过滤:
- ip.addr = 192.168.116.138,只显示ip为192.168.116.138有关的数据流
- ip.src = 192.168.116.138,只显示源IP地址为192.168.116.138的数据流
- ip.dst = 192.168.116.138,只显示目标IP地址为192.168.116.138的数据流



端口过滤:
- tcp.port == 80,只显示80端口TCP数据流
- udp.prot == 67,只显示67端口UDP数据流
- tcp.srcport == 80, 只显示源地址的80端口数据流
- tcp.dstport == 80,只显示目的地址80端口数据流

过滤http协议:
http.request.method=="GET",显示get请求http.request.method=="POST",显示POST请求- http.request.url contains admin ,显示url中包含admin的请求
- http.request.code==404,显示状态码为404
- http contains “FLAG”,请求或相应中包含特定内容

连接符:and,or
如:tcp.port == 80 and ip.addr = 192.168.116.138
过滤包长度:
- udp.length==20,整个UDP数据包
- tcp.len>=20,TCP数据包中的IP数据包
- ip.len==20,整个IP数据包
- frame.len==20,整个数据包

数据包结构
第一行:数据包整体概述
第二行:链路层详细信息,主要的是双方的mac地址
第三行:网络层详细信息,主要的是双方的IP地址
第四行:传输层的详细信息,主要的是双方的端口号
第五行:TCP或UDP是传输的DATA,DNS则是域名的相关信息

分析
搜索:Ctrl+F关键字搜索,选择“分组详情”后才可以搜索数据包中的内容
tshark
是 wireshark 的命令行工具
基础操作
列出可用的网络接口:
tshark -D
抓包:
# 监听
tshark -i eth0
# 将捕获到的原始数据写入文件
tshark -i eth0 -w output.pcap
# 捕获指定的报文数量后停止
tshark -c 100
# 设置自动停止条件(duration:秒, filesize:KB, files:文件数)
tshark -a duration:60
分析文件:
tshark -r input.pcap
过滤器使用
捕获时过滤 -f:只抓符合条件的包
tshark -f "tcp port 80"
捕获后/读取文件时过滤 -Y:
# 过滤 http 请求
tshark -r input.pcap -Y "http.request"
输出格式控制:
# 设置输出格式,fields自定义字段输出,需要配合 -e 指定字段;ek 用于导入 Elasticsearch 的 JSON 格式
-T text|fields|json|ek
# 提取特定协议字段
tshark -r input.pcap -T fields -e ip.src -e ip.dst -e http.host
# 字段打印设置
-E header=y # 打印列名
-E separator=, # 指定分隔符,默认为tab
-V # 详细模式
-x # 以十六进制和ASCII码形式显示原始数据