使用命令行控制wireshark对抓包文件进行针对性处理的命令总结
近日,工作中有开发对抓包文件进行针对性过滤的小程序的需求,兜兜转转踩了很多坑后还是绕回了wireshark。
作为最出名的开源软件之一,wireshark也具有使用命令行进行操作的功能,这就是我们今天会总结到的“tshark.exe”。
通常,当你安装好wireshark,这个"tshark"就会和你的wireshark在同一路径下默默的躺着,就长这样:
这个程序和图形化的wireshark功能基本相同,接下来我会针对性地对使用该软件对已经完成抓包生成的抓包文件(.pacpng、.pacp)进行解析的功能命令进行总结。
先上一个例子:
D:\**你的路径**\tshark.exe -r "C:\**你的路径**\抓包数据.pcap" -Y esp -T fields -e esp.spi -e esp.sequence -e ip.src -e ip.dst
运行输出结果如下:
这个代码以tshark的绝对路径开头(配置环境变量会更方便),然后是抓包文件的路径指定文件,然后是各种过滤指令和字段选择,达到了针对某文件输出我们需要的字段的效果。
下面开始系统性介绍。
1、读取抓包文件
-r
读取已有的抓包文件:tshark -r <infile>
<infile>
是输入的抓包文件名。2. 过滤数据
2.1 显示过滤器
-Y
选项指定显示过滤器,过滤解码数据或写入文件的包:tshark -r <infile> -Y <display filter>
<display filter>
是显示过滤器表达式,使用读/显示过滤器的语法,而不是捕获过滤器的语法。2.2 读取过滤器
-R
选项指定读取过滤器,在分析的第一遍中应用,不匹配的包将不考虑后续遍历:tshark -r <infile> -R <read filter>
<read filter>
是读取过滤器表达式,同样使用读/显示过滤器的语法。3. 输出格式
3.1 输出格式类型
-T
选项设置输出格式:tshark -r <infile> -T <format>
<format>
可以是以下之一:ek
:用于批量导入 Elasticsearch 的换行符分隔 JSON 格式。fields
:指定字段的值,格式由-E
选项控制。json
:JSON 文件格式。jsonraw
:仅包含原始十六进制编码包数据的 JSON 文件格式。pdml
:XML 格式的包详情。ps
:PostScript 格式。psml
:XML 格式的包摘要。tabs
:类似于默认文本报告,但使用制表符分隔。text
:默认的人可读文本格式。
3.2 指定输出字段
-e
选项添加要显示的字段,智能与 -T ek|fields|json|pdml
之一配合使用:tshark -r <infile> -T fields -e <field1> -e <field2> ...
<field1>
, <field2>
等是要显示的字段。3.3 设置字段打印选项
-E
选项控制字段打印格式:tshark -r <infile> -T fields -E <option>
<option>
可以是以下之一:bom=y|n
:是否添加 UTF-8 字节顺序标记,默认为n
。header=y|n
:是否打印字段名作为输出的第一行,默认为n
。separator=/t|/s|<character>
:设置字段分隔符,默认为制表符。occurrence=f|l|a
:选择字段的出现次数,默认为a
。aggregator=,|/s|<character>
:设置字段聚合符,默认为逗号。quote=d|s|n
:设置字段的引用字符,默认为无。escape=y|n
:是否对字段值中的空白控制字符进行转义,默认为y
。
def process_certificates(self, file_path, display_filter):
command = [
self.tshark_path,
'-r', file_path,
'-Y', f'tls.handshake.type==11&&{display_filter}',
'-T', 'fields',
'-e', 'ip.src',
'-e', 'ip.dst',
'-e', 'tls.handshake.certificate'
]
lines = self.run_tshark_command(command)
for line in lines:
parts = line.split('\t')
if len(parts) < 3:
continue
src_ip, dst_ip, certs_hex = parts
try:
certs = certs_hex.split(',')
for cert_hex in certs:
cert_der = bytes.fromhex(cert_hex)
self.process_single_cert(cert_der, src_ip, dst_ip)
except ValueError:
continue
def run_tshark_command(self, command):
try:
result = subprocess.run(
command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True,
text=True
)
return result.stdout.splitlines()
通过调用上面的函数,我们就完成了对命令的拼接,对输出的读取。
经过进一步简单处理,我们就达到了筛选所有TLS握手过程中传递的证书的效果,还顺带得到了他们的源IP目的IP等信息。
最后经过同理的简单开发,可得到这样的效果
——END——
工具在Github上有,顺便求一波star:https://github.com/Draina233/GetPcapEncrypt
使用命令行控制wireshark对抓包文件进行针对性处理的命令总结的更多相关文章
- 使用Java命令行方式导入第三方jar包来运行Java程序的命令
1.首先使用命令行进入到a.java所在的文件夹:(比如我的在D:\javaeeworkspace\SharedPS_WS\src\com\dyf\main 这样一个路径下,) d: 回车, cd D ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...
- Ubuntu 16.04安装Wireshark进行抓包
技巧: 1.可以通过tcpdump抓取某个网卡的包,然后输出日志文件,通过Wireshark进行分析. 2.可以设置Wifi热点,然后通过手机连接这个热点,然后进行tcpdump的分析,然后输出日志文 ...
- Wireshark网络抓包(一)——数据包、着色规则和提示
一.数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息. 帧:物理层.链路层 包:网络层 段:传输层.应用层 1)Frame 物理层数据帧概况 2)Ethernet ...
- Wireshark数据抓包教程之安装Wireshark
Wireshark数据抓包教程之安装Wireshark 安装Wireshark 通过上一节的学习可以根据自己的操作系统来下载安装Wireshark了.本书中已开发版1.99.7(中文版)为主,下面介绍 ...
- Wireshark数据抓包教程之Wireshark的基础知识
Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...
- Wireshark数据抓包教程之Wireshark捕获数据
Wireshark数据抓包教程之Wireshark捕获数据 Wireshark抓包方法 在使用Wireshark捕获以太网数据,可以捕获分析到自己的数据包,也可以去捕获同一局域网内,在知道对方IP地址 ...
- wireshark怎么抓包、wireshark抓包详细图文教程
wireshark怎么抓包.wireshark抓包详细图文教程 作者:佚名 来源:本站整理 发布时间:2013-05-02 19:56:27 本日:53 本周:675 本月:926 总数:3749 ...
- Wireshark 网络抓包工具Wireshark的使用
阅读目录 wireshark介绍 wireshark不能做的 wireshark VS Fiddler 同类的其他工具 什么人会用到wireshark wireshark 开始抓包 wireshark ...
- Wireshark网络抓包(四)——工具
一.基本信息统计工具 1)捕获文件属性(Summary) 1. File:了解抓包文件的各种属性,例如抓包文件的名称.路径.文件所含数据包的规模等信息 2. Time:获悉抓包的开始.结束和持续时间 ...
随机推荐
- 安装opencv_contrib-3.4.9, fatal error: opencv2/xfeatures2d.hpp: 没有那个文件或目录. 解决方法
1. 在Opencv的CmakeLists.txt 中加入以下include语句: INCLUDE_DIRECTORIES("/home/yourusername/Dependencies/ ...
- 从异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }说开去
从异常{ 无法将 匿名方法 转换为类型"System.Delegate",因为它不是委托类型 }说开去. 查看如下代码: this.Invoke(delegate { Messag ...
- C# 设置label(标签)控件的背景颜色为透明
有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件.那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答 ...
- IdentityServer4中的核心类
启动配置器IIdentityServerBuilder 可以把它理解为一个IServiceCollection的容器,它商品有几个扩展方法,方便我们用来注册ids使用到的相关服务,为啥不直接扩展ISe ...
- MySQL事务ACID-隔离级别-锁介绍
⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则 ...
- cmake-2
似懂非懂,一定要搞懂基础的,剩下的边做边学,从案例中入手. 有关cmake的介绍,请参考: 1.https://www.cnblogs.com/pam-sh/p/13885959.html 2.htt ...
- A note on the calculation of some functions in finite fields: Tricks of the Trade解读
本节对该paper进行解读,记录笔记. 经常见到的是在素域\(F_p\)上计算的,尤其是双线性对出现后,在扩域\(F_{p^m}\)上计效率就需要优化了.该论文主要总结了一些在有限域上进行某些计算(求 ...
- 「youlai-boot」入门篇:从0到1搭建 Java、Spring Boot、Spring Security 企业级权限管理系统
作者主页: 有来技术 开源项目: youlai-mall︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 仓库主页: GitCode︱ Gitee ...
- 小程序uni-app中uview中select选择器第二次无法选中设置的默认值
<u-select v-model="subjectFlag" title="选择科目" @confirm="okSubjecthander&q ...
- [译] WinForms:分析一下(我用 Visual Basic 写的)
原文 | Klaus Loeffelmann 翻译 | 郑子铭 如果您从未看过电影<分析这一点>,下面是简短的介绍:假设一个纽约家族的成员有可疑的习惯,他决定认真考虑接受治疗以改善他的精神 ...