tshark是wireshark
网络分析工具下的一个分支,主要用于命令行环境进行抓包、分析,尤其对协议深层解析时,tcpdump
难以胜任的场景中。本系列文章将整理介绍tshark相关内容。
基本用法
常用命令
- 查看tshark版本
- 列出当前存在的网络接口
- tshark对指定网卡监听,抓包
- 抓取网卡eth0的流量并写入capture123.pcap
- 读取之前的文件capture123.pcap
- 抓取网卡eth0的流量10分钟
注: 默认时间单位为秒
- 抓取网卡eth0的10000个数据包
- 抓取网卡eth0涉及192.168.1.1的流量报文
- 抓取网卡eth0指定协议的流量报文
案例
实时打印当前mysql查询语句
说明:
- -s 512 :只抓取前512个字节数据
- -i eth0 :监听eth0网卡
- -n :禁止域名解析
- -f ‘tcp dst port 3306’ :只捕捉协议为tcp,目的端口为3306的数据包
- -R ‘mysql.query’ :过滤出mysql.query查询语句的报文
- -T fields -e mysql.query :打印mysql查询语句
实时打印当前http请求的url(包括域名)
说明:
- -s 512 :只抓取前512个字节数据
- -i eth1 :监听eth1网卡
- -n :禁止网络对象名称解析
- -f ‘tcp dst port 8000’ :只捕捉协议为tcp,目的端口为8000的数据包
- -R ‘http.host and http.request.uri’ :过滤出http.host和http.request.uri
- -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri
- -l :输出到标准输出
读取之前抓包文件进行报文数据分析
需要从抓包的文件evidence04.pcap中提取出报文相关数据信息,如时间、源IP、目的IP、协议名、源Port、標Port、包大小等信息,最后输出到csv文件。
说明:
- -r evidence.pcap 需要分析的报文记录文件(pcap格式)
- -T fields 输出格式,选fields按字段,也可以选json等其他格式,需结合-e 及 -E使用
- -e frame.time_relative 取出封包的相对时间
- -e ip.src 提取源IP
- -e ip.dst 提取目的IP
- -e ip.proto 提取协议名
- -e tcp.srcport 提取源Port
- -e tcp.dstport 提取目的Port
- -e frame.len 提取数据帧大小
- -E header=n 是否输出字段名称(cvs的第1行)
- -E separator=, 指定分割符,/t是tab,/s是一格空格
- -E quote=n 指定是否对字段用引号,d是双引号,s是单引号,n是不用
- -E occurrence=f 多值时是否保留,f是第一个值,l是最后一个值,a是所有值都列出,默认全部
- output.csv 输出文件路径及名称
DNS报文过滤
使用tshark过滤dns cap包中源ip、目的ip、request请求
说明:
- -r test.pcap 需要分析的报文记录文件(pcap格式)
- -T fields 输出格式,选fields按字段,也可以选json等其他格式,需结合-e 及 -E使用
- -e frame.time 提取数据帧时间
- -e ip.src 提取源IP
- -e ip.dst 提取目的IP
- -e dns.qry.name 提取dns查询的域名信息
- -R 'udp.dstport==53 || dns' 显示过滤,仅对udp目标端口为53或者dns协议的报文进行处理
- 默认直接显示在终端上,不记录文件。
常见问题
tshark: Only read filters, not capture filters, can be specified when reading a capture file.
读取文件时只能使用显示过滤,也就是只能使用-Y
或-2 -R
过滤
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
显示过滤-R
参数需要和-2
一起使用,或使用-Y
参考:
系列文章: