一、tshark简介
tshark是一个网络协议分析器。它允许您从实时网络捕获数据包数据,或者从以前保存的捕获文件读取数据包,或者将这些数据包的解码形式打印到标准输出,或者将数据包写入文件。TShark的本机捕获文件格式是pcapng格式,这也是Wireshark和其他各种工具使用的格式。如果不设置任何选项,TShark的工作方式将非常类似于tcpdump。它将使用pcap库捕获来自第一个可用网络接口的流量,并在每个接收到的数据包的标准输出上显示摘要行。
博文实验环境说明:
- 操作系统:ceontos7.6
- wireshark:1.10.14
二、安装步骤
1、安装epel扩展源
[root@s145 yum.repos.d]# yum install -y epel-release
2、安装wireshark
#tshark是wireshark的一个工具,我们可以直接安装wireshark
[root@s145 yum.repos.d]# yum install -y wireshark
3、查看版本
[root@s145 yum.repos.d]# tshark -v
TShark 1.10.14 (Git Rev Unknown from unknown)
三、使用示例
1、获取命令帮助
[root@s145 ~]# tshark --help
2、查看命令版本
[root@s145 ~]# tshark -v
3、eth0接口抓包
[root@s145 ~]# tshark -i eth0
4、抓取前10个包
[root@s145 ~]# tshark -i eth0 -c 10
5、抓包http包
[root@s145 ~]# tshark -i eth0 -f ‘tcp dst port 80’
6、抓取http请求包
[root@s145 ~]# tshark -i eth0 -f ‘tcp dst port 80’ -R “http.request”
7、抓取http包并打印指定字段
[root@s145 ~]# tshark -i eth0 -n -f ‘tcp dst port 80’ -R ‘http.host and http.request.uri’ -T fields -e http.host -e http.request.uri -l
8、抓包并过来指定IP地址的包
[root@s145 ~]# tshark -i eth0 -R “ip.addr == 47.103.25.27”
-R参数可以使用满足wireshark过滤规则的包,过滤规则可以参考博文:
抓包工具之wireshark常用过滤表达式
四、命令参数说明
此处参数说明仅介绍部分常用参数,参数详细说明见官网文档:https://www.wireshark.org/docs/man-pages/tshark.html
1、捕获接口参数
参数 | 参数说明 |
---|---|
-i <interface> | 接口名或网卡编号 (默认: 第一个非环回接口) |
-f <capture filter> | 使用libpcap过滤表达式进行包过滤 |
-s <snaplen> | 设置每个抓包的大小,默认为262144。 |
-p | 不使用混杂模式抓捕报文(即只抓取与本机有关的流量) |
-I | 如果支持则启用镜像模式 |
-B <buffer size> | 内核缓存大小 (默认4MB) |
-y <link type> | 链路层类型 (默认为找到的第一个协议) |
-D | 列出所有接口并退出 |
-L | 列出所有接口链路层类型并退出(供-y参数使用) |
2、捕获终止条件参数
参数 | 参数说明 |
---|---|
-c <packet count> | 捕获到n个包时停止 (默认不限,持续捕获) |
-a <autostop cond.> … duration:NUM | 捕获进行NUM后停止 |
-a <autostop cond.> … filesize:NUM | 输出文件大于NUM KB后停止 |
-a <autostop cond.> … files:NUM | 输出超过NUM个文件后停止 |
3、捕获输出参数
参数 | 参数说明 |
---|---|
-b <ringbuffer opt.> … duration:NUM | 在NUM秒后写入下一个文件(文件名由-w参数决定) |
-b <ringbuffer opt.> … interval:NUM | 创建时间间隔NUM秒 |
-b <ringbuffer opt.> … filesize:NUM | 在文件大于NUM KB后写入下一个文件 |
-b <ringbuffer opt.> … files:NUM | 循环缓存: 在NUM个文件后替换早前的 |
4、读取文件参数
参数 | 参数说明 |
---|---|
-r <infile> | 设置需要读取的文件名及路径 |
5、分析处理参数
参数 | 参数说明 |
---|---|
-2 | 执行两次分析 |
-R <read filter> | 包的读取过滤器,可以在wireshark的filter语法上查看;在wireshark的视图->过滤器视图,在这一栏点击表达式,就会列出来对所有协议的支持。 |
-Y <display filter> | 使用读取过滤器的语法,在单次分析中可以代替-R选项; |
-n: | 禁止所有地址名字解析(默认为允许所有) |
-N <name resolve flags> : | 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。 |
-d <layer_type>==,<decode_as_protocol> … | 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”;tshark -d. 可以列出所有支持的有效选择器。 |
6、输出参数
参数 | 参数说明 |
---|---|
-w <outfile|-> | 使用pcapng格式将报文写入"outfile"文件 (或’-'表示标准输出,直接显示在终端) |
-C <config profile> | 启动时使用指定的配置文件 |
-F <output file type> | 设置输出文件格式类型, 默认为pcapng格式 "-F"留空则列出所有的文件类型 |
-V | 输出中增加报文层次树(包详细信息) |
-O <protocols> | 仅显示以下协议的详细信息,逗号分割 |
-P | 每写入一个文件后进行包情况汇总 |
-S <separator> | 数据包之间的行分割符 |
-x | 输出中增加16进制和ascii字符信息(报文按字节显示) |
-T pdml|ps|psml|json|jsonraw|ek|tabs|text|fields|? | 文本输出格式 (默认文本:text) |
-j <protocolfilter> | 当-T ek|pdml|json 设置时协议层过滤 (例:“ip ip.flags text”, 过滤不展开的所有字节点,除非过滤中有指定的子节点) |
-J <protocolfilter> | 当 -T ek|pdml|json 选项设置时进行顶层协议过滤, (例: “http tcp”, 过滤展开的所有字节点) |
-e <field> | 当 -T fields 设置时打印字段 (如tcp.port,_ws.col.Info) 此选项可以多个用于打印多个字段 |
-E<fieldsoption>= | 当-Tfields选项启用时用于输出配置: |
7、其他
参数 | 参数说明 |
---|---|
-h | 显示帮助 |
-v | 显示版本 |
-o <name>: … | 覆盖配置项 |
-K <keytab> | 使用keytab文件用于解密kerberos |
-G [report] | 生成一份或多份报告,默认report=“fields”,使用"-G help"获取更多信息 |
五、QA
1、yum安装tshark提示No package tshark available
- 原因:确实没有tshark包,tshark是wireshark的一个工具
- 解决方案:安装wireshark
[root@s145 yum.repos.d]# yum provides tshark