tshark抓包保存为文件
下面是面向 Windows PowerShell 新手的完整教程, 教你如何使用 Tshark 抓取 TCP 2000 端口的通信, 并将数据保存到文件中. 所有示例都在 PowerShell 下执行, 使用英文标点.
1. 什么是 Tshark?
- Tshark 是 Wireshark 的命令行版本, 相当于 Linux 下的 tcpdump.
- 它可以在终端里启动抓包, 会话结束后生成 pcap/pcapng 文件, 方便后续分析.
2. 安装 Tshark
访问 Wireshark 官网 , 下载并运行最新的 Windows 安装程序.
安装时 务必勾选 " Tshark CLI" 组件:
- 在组件列表里, 展开 " Tshark" 选项, 确保 " Tshark" 和 " Command line tools" 已选中.
安装完成后, Tshark 的可执行文件会被放在:
C:\Program Files\Wireshark\tshark.exe(可选)将该目录加入到系统 PATH 中, 这样在任何目录都能直接执行
tshark.
3. 以管理员权限打开 PowerShell
- Tshark 需要访问原始网络接口.
- 在开始菜单搜 " PowerShell" , 右键选择 " 以管理员身份运行" .
- 如果没用管理员权限, 会提示 " Permission denied" .
4. 列出网络接口
在 PowerShell 中输入:
tshark -D
输出示例:
1. \Device\NPF_{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} (Ethernet)
2. \Device\NPF_{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY} (Wi-Fi)
...
- 每一行前面的数字就是 接口编号.
- 记住你要监听的接口编号, 比如 " 1" 对应有线网卡, 或 " 2" 对应无线网卡.
5. 构造抓包命令
为了只抓取 TCP 端口 2000 的流量, 并把所有报文保存到文件, 我们使用:
# 假设接口编号是 1, 输出文件保存在当前目录
tshark -i 1 -f "tcp port 2000" -w port2000_capture.pcapng
各参数说明:
-i 1指定监听接口编号 1.-f "tcp port 2000"capture filter, 在内核层面过滤, 只捕获 TCP 2000 端口报文.-w port2000_capture.pcapng持续写入 pcapng 文件, 直到你手动停止.
6. 实时监控与停止
执行上述命令后, PowerShell 会显示实时统计, 如已捕获的报文数等.
要停止抓包:
- 在 PowerShell 窗口内按 Ctrl+C
- Tshark 会优雅地关闭并保存文件头信息, 确保文件可用.
7. 查看抓包结果
使用 Wireshark 图形界面
- 双击
port2000_capture.pcapng即可用 Wireshark 打开并分析.
- 双击
在命令行中快速查看
# 只看前 10 条摘要 tshark -r port2000_capture.pcapng -c 10导出为文本
tshark -r port2000_capture.pcapng -V > port2000_full.txt
8. 常见问题与优化建议
丢包监控 在另一终端实时查看丢包统计:
tshark -q -z io,stat,1每秒输出一次捕获/丢包情况, 确保 " Packets Lost" 为 0.
磁盘空间 pcapng 文件会不断变大, 请提前确认磁盘空间充足.
性能优化
- 写入 SSD 盘比机械盘更快.
- 抓包过程中避免在同一磁盘进行大量其他 I/O 操作.
指定文件大小轮转(可选) 如果想限制单个文件大小, 并自动生成多个文件, 可加上:
# 每个文件最大 100 MB, 最多保留 5 个文件 tshark -i 1 -f "tcp port 2000" ` -b filesize:102400 ` -b files:5 ` -w port2000_%03d.pcapng
小结
- 安装 Wireshark 并勾选 Tshark.
- 以管理员身份在 PowerShell 里运行.
tshark -D查接口编号.- 使用
-f "tcp port 2000"只捕获目标端口. -w持续写入文件, 按 Ctrl+C 停止.
这样, 你就能在 Windows PowerShell 下, 不丢包地抓取 TCP 2000 端口的全部通信, 并保存为标准 pcapng 文件, 方便后续分析. 希望对你有帮助, Kevin!