tshark 命令行版本的wireshark

Posted on Jul 27, 2024
tcpdump用来分析数据包不太直观, 远程抓包专门打开一个wireshark又不太方便, tshark作为命令行版本的wireshark简直是一个完美解决方案

安装

Debian: pkg install tshark

Fedora: dnf install wireshark-cli

FreeBSD: pkg install wireshark

开始捕获数据包

tshark -i <interface>
  • <interface>: 网络接口名称,例如 eth0wlan0 等。

保存捕获的数据包到文件中

tshark -i <interface> -w <file.pcap>
  • <file.pcap>: 捕获数据保存的文件名。

从文件中读取数据包并分析

tshark -r <file.pcap> -Y "http.request"
  • <file.pcap>: 捕获数据的文件名。
  • "http.request": 显示 HTTP 请求数据包。

指定捕获的包的数量

tshark -i <interface> -c <number>
  • <number>: 捕获的数据包数量。

只显示数据包的摘要

tshark -i <interface> -q -z io,stat,0
  • -q: 仅显示网络统计信息。
  • -z io,stat,0: 显示统计信息。

显示数据包的详细信息

tshark -i <interface> -V
  • -V: 显示每个数据包的详细信息。

查看特定协议的数据包

tshark -i <interface> -Y "http"
  • "http": 只显示 HTTP 数据包。

过滤并显示特定 IP 地址的数据包

tshark -i <interface> -f "host 192.168.1.1"
  • "host 192.168.1.1": 过滤指定 IP 地址的数据包。

捕获并实时显示 HTTP 数据包

tshark -i <interface> -f "tcp port 80"
  • "tcp port 80": 只捕获 TCP 80 端口的数据包(HTTP)。

查看 HTTP/HTTPS 请求

tshark -i <interface> -Y '(http.request or tls.handshake.type == 1)' -T fields -e frame.time -e ip.src -e tcp.srcport -e tcp.dstport -e http.host -e tls.handshake.extensions_server_name
  • -Y '(http.request or tls.handshake.type == 1)': 过滤 HTTP 请求和 TLS 握手。
  • -T fields: 输出字段指定。
  • -e frame.time -e ip.src -e tcp.srcport -e tcp.dstport -e http.host -e tls.handshake.extensions_server_name: 指定输出的字段。