导航:首页 > 净水问答 > tshark过滤http

tshark过滤http

发布时间:2025-07-02 15:25:24

Ⅰ Wireshark+Elasticsearch+Kibana打造流量回溯系统

流量回溯系统捕获和分析数据流程,一般由以下几个步骤组成:
1.数据包捕获 -记录网络上的数据包流量。
2.协议解析 -解析不同的网络协议和字段。
3.搜索和可视化 -详细或汇总浏览数据。

从 Wireshark 3.0.0rc1 开始,TShark可以使用 -G elastic-mapping 选项,生成Elasticsearch映射文件,存储在Elasticsearch中并进行浏览,使得TShark解析结果可以在在Kibana中进行搜索和可视化。
下面,我将展示如何使用Wireshark和Elastic Stack来建立流量回溯系统:

Packetbeat 可以配置为捕获实时网络数据包,并使用 -I 选项从捕获文件中读取数据包。它可以识别和解析许多应用程序级协议,例如HTTP,MySQL和DNS,以及常规流信息。但packetbeat对报文采用会话方式分析,不能对一个个报文单独分析,倾向于应用层,对网络层面分析不足,并且支持的协议有限,tshark的2000多种存在明显差距。

Wireshark是最受欢迎的数据包捕获和分析软件,它可以识别 2,000多个协议,其中包含200,000多个字段 。除GUI界面操作外,它还提供命令行实用程序 tshark 来捕获实时流量以及读取和解析捕获文件。作为其输出, tshark 可以生成报告和统计信息,还可以分析不同文本格式的数据包数据。

自2.2版( 2016年9月发布 )以来, tshark 支持的 Elasticsearch Bulk API 的JSON格式输出。

将在 eth0 网络接口上实时捕获数据包,并以Elasticsearch Bulk API格式输出到文件 packets.json 。

将从捕获文件 capture.pcap 中读取数据包,并作为JSON格式输出为Elasticsearch Bulk API格式到文件 packets.json 。

将从捕获文件 capture.pcap 中读取数据包,过滤HTTP协议指定字段,并作为JSON格式输出为Elasticsearch Bulk API格式到文件 packets.json 。

将从捕获文件 capture.pcap 中读取数据包,过滤HTTP协议指定字段,并增加"|"分隔符以txt格式输出到文件 packets.txt 。

从5.0版开始,Elasticsearch提出了Ingest Pipeline的概念。一个pipeline 由一系列线程组成,这些可以对数据进行许多不同的更改。

Pipeline示例如下:

该Pipeline只是简单更改数据包将被写入的Elasticsearch索引(默认值为 packets-YYYY-MM-DD )。要在导入数据时使用此管道,请在URL中指定它:

有关更多信息,请参见 Ingest模块文档 和新的摄取方式- 第1 部分 , 第2部分 。

Filebeat和Logstash都有等效的配置选项,用于在将数据发送到Elasticsearch时指定接收Pipeline。

Logstash是Elastic Stack的一部分,并用作数据处理线程。它可以用来读取Elasticsearch Bulk API格式的数据,并在将数据发送到Elasticsearch之前对数据执行更复杂的转换和充实。

配置示例为:
logstash.conf

grok过滤器从,格式为“ protocol:protocol:protocol ”的 frame_frame_protocols 字段(例如“ eth:ethertype:ip:tcp:http ” )中提取最内层的网络协议名称,到顶级“ protocol ”字段中。

Wireshark解析的原始数据包含大量字段,这些字段种绝大多数不会搜索或汇总,因此在所有这些字段上创建索引通常不是正确的选择。
字段太多会降低索引和查询速度, Elasticsearch 5.5开始,默认会将索引中的字段数限制为1000 。另外, tshark -T ek 无论原始数据字段值是文本还是数字,包括时间戳和IP地址,均输出为字符串。
如果要指定正确的数据类型,将数字索引为数字,将时间戳作为时间戳等,防止索引字段激增,应显式指定Elasticsearch映射。

Elasticsearch映射例子如下:

要将 tshark -T ek 的输出数据导入到Elasticsearch中,有以下几种方式。

Filebeat非常轻巧,可以监视一组文件或目录中是否有任何新文件,并自动对其进行处理。读取Tshark输出文件并将数据包数据发送到Elasticsearch。

示例配置如下所示:
filebeat.yml

与Filebeat一样,Logstash可以监视目录中的新文件并自动对其进行处理。与Filebeat相比,它比Elasticsearch Ingest Pipeline可以更广泛地转换数据。

有关Logstash配置的示例,请参见3.1转换数据的部分。

在Kibana中,您现在可以浏览数据包并在它们之上构建仪表板。

*网络数据详细视图,包括一个表格,该表格在可扩展的行中显示原始数据包数据

*显示网络协议分布的饼图

由于来自Wireshark的网络数据具有与syslog等不同的数据格式,因此更改Kibana中的某些设置(“管理”选项卡->“ Kibana高级设置”)很有意义。

Kibana配置如下:

参考

Ⅱ tshark命令参数详解

捕获接口:
-i: -i interface 指定捕获接口,默认是第一个非本地循环接口;
-f: -f capture filter 设置抓包过滤表达式,遵循libpcap过滤语法,这个实在抓包的过程中过滤,如果是分析本地文件则用不到。
-s: -s snaplen 设置快照长度,用来读取完整的数据包,因为网络中传输有65535的限制,值0代表快照长度65535,默认也是这个值;
-p: 以非混合模式工作,即只关心和本机有关的流量。
-B: -B buffer size 设置缓冲区的大小,只对windows生效,默认是2M;
-y: -ylink type 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等;
-D: 打印接口的列表并退出;
-L 列出本机支持的数据链路层协议,供-y参数使用。
捕获停止选项:
-c: -c packet count 捕获n个包之后结束,默认捕获无限个;
-a: -a autostop cond. ... ration:NUM,在num秒之后停止捕获;
filesize:NUM,在numKB之后停止捕获;
files:NUM,在捕获num个文件之后停止捕获;
捕获输出选项:
-b ringbuffer opt. ... ring buffer的文件名由-w参数决定,-b参数采用test:value的形式书写;
ration:NUM - 在NUM秒之后切换到下一个文件;
filesize:NUM - 在NUM KB之后切换到下一个文件;
files:NUM - 形成环形缓冲,在NUM文件达到之后;
RPCAP选项:
remote packet capture protocol,远程抓包协议进行抓包;
-A: -A user:password,使用RPCAP密码进行认证;
输入文件:
-r: -r infile 设置读取本地文件
处理选项:
-2: 执行两次分析
-R: -R read filter,包的读取过滤器,可以在wireshark的filter语法上查看;在wireshark的视图-过滤器视图,在这一栏点击表达式,就会列出来对所有协议的支持。
-Y: -Y display filter,使用读取过滤器的语法,在单次分析中可以代替-R选项;
-n: 禁止所有地址名字解析(默认为允许所有)
-N: 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。
-d: 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”;tshark -d. 可以列出所有支持的有效选择器。
输出选项:
-w: -w outfile|- 设置raw数据的输出文件。这个参数不设置,tshark将会把解码结果输出到stdout,“-w -”表示把raw输出到stdout。如果要把解码结果输出到文件,使用重定向“”而不要-w参数。
-F: -F output file type,设置输出的文件格式,默认是.pcapng,使用tshark -F可列出所有支持的输出文件类型。
-V: 增加细节输出;
-O: -O protocols,只显示此选项指定的协议的详细信息。
-P: 即使将解码结果写入文件中,也打印包的概要信息;
-S: -S separator 行分割符
-x: 设置在解码输出结果中,每个packet后面以HEX mp的方式显示具体数据。
-T: -T pdml|ps|text|fields|psml,设置解码结果输出的格式,包括text,ps,psml和pdml,默认为text
-e: 如果-T fields选项指定,-e用来指定输出哪些字段;
-E: -E fieldsoption=value如果-T fields选项指定,使用-E来设置一些属性,比如
header=y|n
separator=/t|/s|char
occurrence=f|l|a
aggregator=,|/s|char
-t: -t a|ad|d|dd|e|r|u|ud 设置解码结果的时间格式。“ad”表示带日期的绝对时间

Ⅲ 在linux上tshark怎么过滤

抓Mysql包命令如下:
tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
tshark -s 512 -i em1 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
过滤HTTP请求:
# tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R 'http.request.method == "GET" || http.request.method == "HEAD"'
输出:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 123.126.68.27 -> 173.255.196.50 HTTP GET /grep.html HTTP/1.1
12.066470 123.126.68.27 -> 173.255.196.50 HTTP GET /pro_lang.html HTTP/1.1
-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查询语句

tshark使用-f来指定捕捉包过滤规则,规则与tcpmp一样,可以通过命令man pcap-filter来查得。
tshark使用-R来过滤已捕捉到的包,与界面板wireshark的左上角Filter一致。

阅读全文

与tshark过滤http相关的资料

热点内容
出水管怎么换滤芯 浏览:384
校园用的饮水机多少钱哪有卖 浏览:170
三淼污水提升泵 浏览:262
北京洁明过滤器 浏览:1000
埋深4米的污水管道多少钱 浏览:230
科林贝思净水器换好滤芯如何复位 浏览:412
清远污水一体化处理多少钱 浏览:500
香港游泳池净水设备多少钱 浏览:642
玉溪哪有污水处理设备 浏览:744
污水处理厂现场设备有那些 浏览:795
下水道往上反污水 浏览:20
污水处理的生物处理方法有哪些 浏览:162
纳米树脂补牙后根管治疗就可以了吗 浏览:20
河北污水环保公司 浏览:566
90级净水多少钱 浏览:299
反渗透净水器压力桶长期不用 浏览:592
柴油滤芯怎么拧才不会坏 浏览:181
安吉尔净水器us和ac亮黄灯换哪个滤芯 浏览:265
污水处理厂处理规模Q啥意思 浏览:87
ro膜净水器好处 浏览:333