tshark命令小结

基本语法:

tshark -a <capture autostop condition> ... [ -b <capture ring buffer option>] ... [ -B <capture buffer size (Win32 only)>  [ -c <capture packet count> ] [ -d <layer type>==<selector>,<decode-as protocol> ] [ -D ] [ -f <capture filter> ] [ -F <file format> ] [ -h ] [ -i <capture interface>|- ] [ -l ] [ -L ] [ -n ] [ -N <name resolving flags> ] [ -o <preference setting> ... [ -p ] [ -q ] [ -r <infile> ] [ -R <read (display) filter> ] [ -s <capture snaplen> ] [ -S ] [ -t ad|a|r|d ] [ -T pdml|psml|ps|text ] [ -v ] [ -V ] [ -w <outfile>|- ] [ -x ] [ -X <eXtension option>] [ -y <capture link type> ] [ -z <statistics> ]

根据试验,参数的书写有讲究。模仿tcpdump,可以把抓包过滤表达式写在命令的最后 一般将抓包表达式用引号quote起来(在windows上是双引号"),一是为了视觉方便,一是为了逃避其中字符和shell语法的冲突(如“>”“||”等)。抓包过滤表达式也可以写在-f参数的后面,注意,此时更应该使用引号或者将-f放在最后。否则,它们会认为-f(可省)后面 的参数都是表达式的一部分,而导致命令格式混乱

主要参数分类含义权作解说如下

1. 抓包接口

  • -i 设置抓包的网络接口,不设置则默认为第一个非自环接口
  • -D 列出当前存在的网络接口。在不了解OS所控制的网络设备时,一般先用“tshark -D”查看网络接口的编号以供-i参数使用
  • -f 设定抓包过滤表达式capture filter expression)。抓包过滤表达式的写法雷同于tcpdump,可参考tcpdump man page的有关部分
  • -s 设置每个抓包的大小,默认为65535,多于这个大小的数据将不会被程序记入内存、写入文件。(这个参数相当于tcpdump-stcpdump默认抓包的大小仅为68
  • -p 设置网络接口以混合模式工作,即只关心和本机有关的流量
  • -B 设置内核缓冲区大小,仅对windows有效
  • -y 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB
  • -L 列出本机支持的数据链路层协议,供-y参数使用。   

2. 抓包停止条

  • -c 抓取的packet,在处理一定数量的packet后,停止抓取,程序退出
  • -a 设置tshark抓包停止向文件书写的条件,事实上是tshark在正常启动之后停止工作并返回的条件。条件写为test:value的形式,如“-a duration:5”表示tshark启动后5抓包然后停止;“-a filesize:10”表示tshark在输出文件达到10kB后停止;“-a files:n”表示tshark在写满n个文件后停止。(windows版的tshark0.99.3用参数“-a files:n”不起作用——会有无数多个文件生成。由于-b参数有自己的files参数,所谓-b的其它参数结合使用无从说起。这也许是一个bug,或tsharkman page的书写有误。

3. 文件输出控

  • -b 设置ring buffer文件参数ring buffer文件名由-w参数决定-b参数采用test:value的形式书写。“-b duration:5”表示5写下一个ring buffer文件;“-b filesize:5”表示每达到5kB写下一个ring buffer文件;“-b files:7”表示ring buffer文件最多7,周而复始地使用,如果这个参数不设定,tshark会将磁盘写满为止

4. 文件输

  • -r 设置tshark分析的输入文件。tshark既可以抓取分析即时的网络流量,又可以分析dump在文件中的数据。-r不能是命名管道和标准输入

5. 处理

  • -R 设置读取(显示)过滤表达式read filter expression)。不符合此表达式的流量同样不会被写入文件。注意,读取(显示)过滤表达式的语法和底层相关的抓包过滤表达式语法不相同,它的语法表达要丰富得多,请参考http://www.ethereal.com/docs/dfref/http://www.ethereal.com/docs/man-pages/ethereal-filter.4.html。类似于抓包过滤表达式,在命令行使用时最好将它们quote起来
  • -n 禁止所有地址名字解析(默认为允许所有)
  • -N 启用某一层的地址名字解析“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n-N参数同时存在,-n将被忽略。如果-n-N参数都不写,则默认打开所有地址名字解析
  • -d 将指定的数据按有关协议解包输出。如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”。注意选择子和解包协议之间不能留空格

6. 输出

  • -w 设置raw数据的输出文件。这个参数不设置,tshark将会把解码结果输出到stdout“-w-”表示把raw输出到stdout。如果要把解码结果输出到文件,使用重定向“>”而不要-w参数
  • -F 设置输出raw数据的格式,默认为libpcap“tshark -F”会列出所有支持的raw格式
  • -V 设置将解码结果的细节输出,否则解码结果仅显示一个packet一行的summary
  • -x 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据
  • -T 设置解码结果输出的格式,包括text,ps,psmlpdml,默认为text
  • -t 设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间(delta
  • -S 在向raw文件输出的同时,将解码结果打印到控制台
  • -l 在处理每个包时即时刷新输出
  • -X 扩展项
  • -q 设置安静的stdout输出(例如做统计时
  • -z 设置统计参数

7. 

  • -h 显示命令行帮助
  • -v 显示tshark的版本信息

  • -o 重载选项



### TShark 命令使用指南 TShark 是 Wireshark 提供的一个命令行工具,用于在网络接口上捕获和解析数据。它支持多种协议,并可以将捕获的数据保存到文件中以便后续分析。以下是关于 `tshark` 命令的一些常见用法及其参数说明: #### 1. **基本语法** `tshark` 的基本语法如下: ```bash tshark [选项] [过滤器表达式] ``` #### 2. **常用参数** - `-r`: 指定输入的 pcap 文件路径。 ```bash tshark -r input.pcap ``` 此命令会读取指定的 `.pcap` 文件并显示其中的内容[^1]。 - `-w`: 将捕获的数据写入文件而不是标准输出。 ```bash tshark -w output.pcap ``` - `-i`: 指定要监听的网络接口编号或名称。 ```bash tshark -i eth0 ``` - `-f`: 设置捕捉过滤器(capture filter),类似于 tcpdump 中使用的 BPF 表达式。 ```bash tshark -f "port 80" ``` - `-Y`: 应用显示过滤器(display filter)。此功能允许用户仅查看满足特定条件的数据。 ```bash tshark -r capture.pcap -Y "http.request.method == GET" ``` - `-T fields`: 输出字段模式,常与其他标志一起使用以提取某些字段值。 ```bash tshark -r file.pcap -T fields -e ip.src -e ip.dst ``` - `-z`: 执行统计操作,例如按主机、端口或其他维度汇总流量信息。 ```bash tshark -r packets.pcap -z conv,tcp ``` - `-V`: 显示详细的解码信息。 ```bash tshark -r packet_capture.pcap -V ``` - `-q`: 静默运行,不打印每条记录的具体细节。 ```bash tshark -r test.pcap -q -z io,stat,"COUNT(http)" ``` - `-d`: 修改协议解释方式,强制将某种类型的流量按照另一种协议处理。 ```bash tshark -r data.pcap -d tcp.port==80,http ``` #### 3. **高级特性** ##### a) 实时传输至远程机器 如果需要从一台设备获取数据并通过 SSH 发送到另一台计算机上的 Wireshark 客户端,则可采用以下方法: ```bash ssh user@remote_host 'sudo tcpdump -U -n -i any -w -' | wireshark -k -i - ``` 这里利用了 TCPDump 和管道机制实现无缝衔接[^2]。 ##### b) 处理 USB 流量 当尝试调试涉及 USB 设备通信场景下的问题时,可能需要用到特殊字段如 `-e usb.capdata` 来导出原始二进制负载;不过需要注意的是,在部分情况下该选项可能导致异常行为[^5]。 --- ### 示例代码片段 假设我们想监控某个局域网内的 HTTP 请求活动并将结果存储下来: ```bash tshark -i wlan0 -f "tcp port 80" -w http_traffic.pcap ``` 或者如果我们已经有一个现成的日志文件想要检索所有 DNS 查询事件的话: ```bash tshark -r network_log.pcapng -Y dns && echo Success || echo Failed ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值