这是我跟着轩辕大佬学习的一个项目,非常有意思,想着就记录下来,也当做是巩固知识了。
一、Wireshark
首先安装WireShark,抓包首选工具就是他。
打开后会发现Capture区域有个列表,该列表就是展示电脑所有的网卡,例如WI-FI: en0就是其中一个。至于怎么会有这么多,其实不用管。其他的就是一些虚拟网卡。
我们可以看到第一个和第二个的网卡后面都有一段波浪线,这就说明了这个网卡是存在通讯内容的。其中Loopback是我们的回环地址127.0.0.1,也就是虚拟网卡。
点击第一个网卡,双击后就进入到抓包页面。
密密麻麻五颜六色的就是各种数据包,点击上方红色方形按钮,就停止抓包啦。要从新抓包就点击左边那个蓝色鲨鱼按钮。
顶部这边是一个过滤器,可以用它快速筛选你想要看到的数据,比如tcp.port == 80,也可以条件联合过滤,tcp.port == 80 || udp.port == 80
- 语法:支持IP地址、端口、协议及比较/逻辑运算符(如==、>、<、and、or)。
- 使用方法:直接在过滤栏输入语句,修改后立即生效。
还有其他的用法:
时间过滤 | 精确到特定时刻的数据包筛选。 | frame.time == "Sep 26, 2004 23:18:04.954975" |
协议过滤 | 根据协议类型进行筛选。 | tcp.port eq 25 or icmp |
HTTP过滤 | 根据HTTP状态码或请求方法筛选。 | http.response.code == 302 http.request.method == POST |
显示IP地址为192.168.32.121的数据包 | ip.addr == 192.168.32.121 |
更多的可以参考官方文档:https://www.wireshark.org/docs/man-pages/wireshark-filter.html
下面两部分,左边是从上到下分别表示着网络层级模型中从下往上。右边则是数据包的十六进制数据。
二、tshark命令行工具
这玩意儿和Wireshark的关系简单来讲就是一个命令行,另一个是图形。
上述图片中tshark – D表示列举出本机网络接口。其他例如有:
1. 基本捕获
- 指定网卡捕获(
-i
):
tshark -i eth0 # Linux
tshark -i Ethernet0 # Windows
tshark -i any # 捕获所有接口流量
- 捕获指定数量的包(
-c
):
tshark -c 100 # 捕获100个包后停止
- 捕获时过滤流量(
-f
,BPF 语法):
tshark -f "port 80" # 仅捕获HTTP流量
tshark -f "icmp" # 仅捕获ICMP(ping)流量
tshark -f "src 192.168.1.1" # 捕获来自指定IP的流量
2. 输出与显示
- 输出到文件(
-w
和-r
):
tshark -w capture.pcapng # 保存为pcapng文件
tshark -r capture.pcapng # 读取已有抓包文件
- 仅显示特定协议(
-Y
,显示过滤器):
tshark -Y "http.request" # 显示HTTP请求
tshark -Y "dns.qry.name contains google.com" # 显示包含域名的DNS查询
- 格式化输出(
-T
):
tshark -T fields -e ip.src -e ip.dst # 仅显示源IP和目标IP
tshark -T json # 输出为JSON格式
tshark -T text # 默认文本输出
- 提取特定字段(结合
-e
):
tshark -T fields -e frame.time -e ip.src -e http.host -e http.request.uri
- 统计信息(
-z
):
tshark -z http,tree # HTTP请求统计树
tshark -z io,phs # 协议分层统计
tshark -z endpoints,ip # IP端点统计(收发流量TopN)