tshark存储数据到mysql_网络分析利器wireshark命令版(2):tshark使用示例

本文介绍了tshark作为wireshark的命令行工具,如何用于网络抓包和分析。内容包括基本用法、常用命令,如查看版本、网络接口,以及抓取特定协议、过滤条件的示例。通过实例展示了如何实时打印MySQL查询语句、HTTP请求URL,以及从pcap文件中提取数据并输出到CSV。同时,还提到了DNS报文过滤和常见问题解答。
摘要由CSDN通过智能技术生成

tshark是wireshark网络分析工具下的一个分支,主要用于命令行环境进行抓包、分析,尤其对协议深层解析时,tcpdump难以胜任的场景中。本系列文章将整理介绍tshark相关内容。

基本用法

常用命令

查看tshark版本

tshark -v

列出当前存在的网络接口

tshark -D

网卡描述依据OS有不同的编号方式,在不了解网络设备及编号情况下,一般先用“tshark -D”查看网络接口的编号以供-i参数使用。

注: linux可以结合ifconfig命令查看

tshark对指定网卡监听,抓包

sudo tshark -i

抓取网卡eth0的流量并写入capture123.pcap

tshark -i eth0 -w capture123.pcap

读取之前的文件capture123.pcap

tshark -i eth0 -r capture123.pcap

抓取网卡eth0的流量10分钟

tshark -i eth0 -a duration:600

注: 默认时间单位为秒

抓取网卡eth0的10000个数据包

tshark -c 10000 -i eth0

抓取网卡eth0涉及192.168.1.1的流量报文

tshark -i eth0 -f “host 192.168.1.1”

注: 与wireshark、tcpdump一致,均使用BPF过滤表达式

抓取网卡eth0指定协议的流量报文

tshark -i eth0 -f “”

协议名可以为: tcp, udp, dns, icmp, http等

案例

实时打印当前mysql查询语句

tshark -s 512 -i eth1 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query

说明:

-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(包括域名)

tshark -s 512 -i eth1 -n -f 'tcp dst port 8000' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d 't'

说明:

-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文件。

tshark -r evidence.pcap -T fields -e frame.time_relative -e ip.src -e ip.dst -e ip.proto -e tcp.srcport -e tcp.dstport -e frame.len -E header=n -E separator=, -E quote=n -E occurrence=f > output.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请求

tshark -r test.cap -T fields -e frame.time -e ip.src -e ip.dst -e dns.qry.name -R 'udp.dstport==53 || dns'

说明:

-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.

tshark -r 20190409.pcap -f 'udp' -w udp-20190409.pcap

读取文件时只能使用显示过滤,也就是只能使用-Y或-2 -R过滤

tshark: -R without -2 is deprecated. For single-pass filtering use -Y.

tshark -r 20190409.pcap -R 'udp' -w udp-20190409.pcap

显示过滤-R参数需要和-2一起使用,或使用-Y

参考:

系列文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值