October 10, 2022
By: Kevin

tshark抓包保存为文件

  1. 1. 什么是 Tshark?
  2. 2. 安装 Tshark
  3. 3. 以管理员权限打开 PowerShell
  4. 4. 列出网络接口
  5. 5. 构造抓包命令
  6. 6. 实时监控与停止
  7. 7. 查看抓包结果
  8. 8. 常见问题与优化建议
    1. 小结

下面是面向 Windows PowerShell 新手的完整教程, 教你如何使用 Tshark 抓取 TCP 2000 端口的通信, 并将数据保存到文件中. 所有示例都在 PowerShell 下执行, 使用英文标点.

1. 什么是 Tshark?

  • Tshark 是 Wireshark 的命令行版本, 相当于 Linux 下的 tcpdump.
  • 它可以在终端里启动抓包, 会话结束后生成 pcap/pcapng 文件, 方便后续分析.

2. 安装 Tshark

  1. 访问 Wireshark 官网 , 下载并运行最新的 Windows 安装程序.

  2. 安装时 务必勾选 " Tshark CLI" 组件:

    • 在组件列表里, 展开 " Tshark" 选项, 确保 " Tshark" 和 " Command line tools" 已选中.
  3. 安装完成后, Tshark 的可执行文件会被放在:

    C:\Program Files\Wireshark\tshark.exe
    
  4. (可选)将该目录加入到系统 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. 查看抓包结果

  1. 使用 Wireshark 图形界面

    • 双击 port2000_capture.pcapng 即可用 Wireshark 打开并分析.
  2. 在命令行中快速查看

    # 只看前 10 条摘要
    tshark -r port2000_capture.pcapng -c 10
    
  3. 导出为文本

    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
    

小结

  1. 安装 Wireshark 并勾选 Tshark.
  2. 以管理员身份在 PowerShell 里运行.
  3. tshark -D 查接口编号.
  4. 使用 -f "tcp port 2000" 只捕获目标端口.
  5. -w 持续写入文件, 按 Ctrl+C 停止.

这样, 你就能在 Windows PowerShell 下, 不丢包地抓取 TCP 2000 端口的全部通信, 并保存为标准 pcapng 文件, 方便后续分析. 希望对你有帮助, Kevin!

Tags: wireshark network