近日,工作中有开发对抓包文件进行针对性过滤的小程序的需求,兜兜转转踩了很多坑后还是绕回了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对抓包文件进行针对性处理的命令总结的更多相关文章

  1. 使用Java命令行方式导入第三方jar包来运行Java程序的命令

    1.首先使用命令行进入到a.java所在的文件夹:(比如我的在D:\javaeeworkspace\SharedPS_WS\src\com\dyf\main 这样一个路径下,) d: 回车, cd D ...

  2. Wireshark数据抓包分析——网络协议篇

                   Wireshark数据抓包分析--网络协议篇     watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...

  3. Ubuntu 16.04安装Wireshark进行抓包

    技巧: 1.可以通过tcpdump抓取某个网卡的包,然后输出日志文件,通过Wireshark进行分析. 2.可以设置Wifi热点,然后通过手机连接这个热点,然后进行tcpdump的分析,然后输出日志文 ...

  4. Wireshark网络抓包(一)——数据包、着色规则和提示

    一.数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息. 帧:物理层.链路层 包:网络层 段:传输层.应用层 1)Frame 物理层数据帧概况 2)Ethernet ...

  5. Wireshark数据抓包教程之安装Wireshark

    Wireshark数据抓包教程之安装Wireshark 安装Wireshark 通过上一节的学习可以根据自己的操作系统来下载安装Wireshark了.本书中已开发版1.99.7(中文版)为主,下面介绍 ...

  6. Wireshark数据抓包教程之Wireshark的基础知识

    Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...

  7. Wireshark数据抓包教程之Wireshark捕获数据

    Wireshark数据抓包教程之Wireshark捕获数据 Wireshark抓包方法 在使用Wireshark捕获以太网数据,可以捕获分析到自己的数据包,也可以去捕获同一局域网内,在知道对方IP地址 ...

  8. wireshark怎么抓包、wireshark抓包详细图文教程

    wireshark怎么抓包.wireshark抓包详细图文教程 作者:佚名  来源:本站整理  发布时间:2013-05-02 19:56:27 本日:53 本周:675 本月:926 总数:3749 ...

  9. Wireshark 网络抓包工具Wireshark的使用

    阅读目录 wireshark介绍 wireshark不能做的 wireshark VS Fiddler 同类的其他工具 什么人会用到wireshark wireshark 开始抓包 wireshark ...

  10. Wireshark网络抓包(四)——工具

    一.基本信息统计工具 1)捕获文件属性(Summary) 1. File:了解抓包文件的各种属性,例如抓包文件的名称.路径.文件所含数据包的规模等信息 2. Time:获悉抓包的开始.结束和持续时间 ...

随机推荐

  1. [转]OpenCV三角测量重建triangulatePoints原理解析

    opencv源代码注释 附上opencv三角测量函数的主要代码和注释 cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2, CvMat* pr ...

  2. [转]Spring Security打造一个简单Login登录页面,实现登录+跳转+注销+角色权限功能,核心代码不到100行!

    原文链接:Spring Security打造一个简单Login登录页面,实现登录+跳转+注销+角色权限功能,核心代码不到100行!

  3. [转]IDEA2020.2.3中创建JavaWeb工程的完整步骤记录

    原文链接: IDEA2020.2.3中创建JavaWeb工程的完整步骤记录

  4. 大型IM稳定性监测实践:手Q客户端性能防劣化系统的建设之路

    本文来自腾讯手Q基础架构团队杨萧玉.邱少雄.张自蹊.王褚重天.姚伟斌的分享,原题"QQ 客户端性能稳定性防劣化系统 Hodor 技术方案",下文进行了排版和内容优化. 1.引言 接 ...

  5. k8s集群部署mysql完整过程记录

    挂载MySQL数据卷 在k8s集群中挂载MySQL数据卷 需要安装一个NFS. 在主节点安装NFS yum install -y nfs-utils rpcbind 在主节点创建目录 mkdir -p ...

  6. 基于sass tailwindcss的传统页面开发脚手架

    这是一个基于sass和tailwindcss的快速开发传统多页面的npm脚手架. package.json { "name": "sass-tailwindcss-sta ...

  7. Kubernetes GPU 虚拟化方案

    主流架构 Device Plugin:K8s制定设备插件接口规范,定义异构资源的上报和分配,设备厂商只需要实现相应的API接口,无需修改kubelet源码即可实现对其他硬件设备的支持. Extende ...

  8. ofd文件拆分合并思路探索 -- 附下载程序

      前言  ofd文件拆分合并会在多个场合用到,但市面上此类工具并不多.拆分和合并虽然为两个功能,但从编程角度考虑,其处理思路有相同之处.文章就以合并为例,讲一下处理思路.作者也写了一个拆分合并小工具 ...

  9. springboot-多模块构建-2

    三个标签完成springboot定时任务配置 1. 问题描述 Java项目定时任务是必备模块,月高风黑夜跑个批处理,记录或者统计一些系统信息. 2. 解决方案: 结合springboot,只需三个标签 ...

  10. ClickHouse-3引擎

    引擎 数据库引擎 index 表引擎 数据库引擎 数据库引擎允许您处理数据表. 默认情况下,ClickHouse使用Atomic数据库引擎.它提供了可配置的table engines和SQL dial ...