Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件

news2024/11/18 11:08:13

本文将介绍一种手动的轻量级的方式,还原HTTP/TLS协议中传输的文件,为流量数据包中的文件分析提供帮助。

如果捕获的数据包中存在非文本类文件,例如png,jpg等图片文件,或者word,Excel等office文件异或是其他类型的二进制文件或者编码文件。如果想要了解这些非文本文件中的内容,往往需要将这些文件提取出来,使用特定的软件进行打开。

如何从PCAP或者pcapng数据包中提取这些文件内容,在之前的文章中《自动还原pcap数据包中文件的几种方法》,这里,介绍了借助Wireshark本身的能力以及scapy等编程的方式还原数据包中的文件内容,针对一些常见协议的批量化处理,借助Wireshark已有的功能以及scapy编程都是不错的方式。但是此种方法存在如下问题:

  • 需要Wireshark能够支持某些传输文件协议的文件导出,例如HTTP,SMB等。但是如果Wireshark不支持该种协议的解析怎么办?
  • 如果数据包中的文件数据不完整怎么办?出现大量重传,丢包等情况。
  • Wireshark协议解析出错怎么办?由于现实场景中,Wireshark很多时候会解析出错,导出的文件也不乏错误场景。
  • scapy编程方式需要针对每一种协议,指定文件的开始和结束。对于一些scapy不能够解析的协议,则并不容易在程序中识别文件的开始和结束。况且编程的方式需要针对每一种文件传输情况编写代码,稍显繁琐。

如下将介绍针对HTTP以及TLS手动的轻量级还原文件的方法。

HTTP

wrieshark 本身提供了导出HTTP文件的能力,如下图1:
在这里插入图片描述
图1
如果该功能正常,则可以直接使用。如果该功能不正常,例如丢包或者数据不完整导致文件解析出现错误或者异常数据导致文件解析出错,则无法直接导出,这个时候本文所提供的方法就能派上用场。当然不仅如此,后文中所介绍的方法在一些文件显示方面比值wireshark也是存在优势的。

提取图片文件

HTTP传输图片的数据包下载链接见这里,对应第7号流,如下图2:
在这里插入图片描述
图2
首先拷贝文件传输的相关数据,由于HTTP协议为文本协议,因此cyberchef是支持对于HTTP协议头部的处理的,因此follow TCP dump,按照原始数据显示后,全选拷贝作为cyeberchef 的输入,关于cyberchef的详细介绍,详见我的专栏《Cyberchef 从入门到精通教程
》,这里,如下图3:
在这里插入图片描述图3
RAW格式的显示内容为16进制的字符串,因此需要先将16进制字符串转换成为对应的16进制数值(即每两个字符构成一个十六进制的数值),同时去除HTTP的头部,则会得到最终的数据内容,如下图4:
在这里插入图片描述
图4
相关模块解释如下:

  • from hex模块将字符串转换为对应的数值。
  • 第一个strip http headers 去除http request的头部,第二个strip http header 去除http response的头部 。
    -cyberchef提供的 render image模块可以直接解析并显示JPEG图像数据。
    其对应的cyberchef的脚本为:
[
  { "op": "From Hex",
    "args": ["Auto"] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Render Image",
    "args": ["Raw"] }
]

可以看到使用cyberchef 能够直接将16进制数据显示图像文件,这个是其优点之一。

gzip压缩

前一个实例中HTTP并没有使用压缩传输,这个例子讲述HTTP压缩传输的场景。关于Gzip的原理,详见我之前的文章《网络传输中的那些编码之-gzip编码》,这里。HTTP传输传使用gzip压缩数据包下载链接见这里。如下图5:
在这里插入图片描述
图5
同样的follow tcp dump,以raw格式显示之后全选作为cyberchef的输入,如下图6:
在这里插入图片描述
图6
同样的需要先将16进制字符串转换成为对应的16进制数值(即每两个字符构成一个十六进制的数值),去除HTTP的头部,然后解压缩,则会得到最终的数据内容,如下图7:
在这里插入图片描述
图7
如果对应的数据中使用了特殊的编码,则可以使用cyberchef中的encoding模块进行相应的编解码。关于cyberchef的更多使用方法介绍,详见我的专栏《Cyberchef 从入门到精通教程》,这里

gzip/chunk

前一个实例中HTTP并没有使用chunk传输,这个例子讲述HTTP chunk传输的场景。关于chunk传输的原理,详见我之前的文章《网络传输中的那些编码之-chunk传输编码》,这里。HTTP传输使用chunk和gzip数据包下载链接见这里。如下图8:
在这里插入图片描述
图8
同样的follow tcp dump,以raw格式显示之后全选作为cyberchef的输入,如下图9:
在这里插入图片描述
图9
将16进制字符串转换成为对应的16进制数值(即每两个字符构成一个十六进制的数值),去除HTTP的头部,然后chunk重组,解压缩,则会得到最终的数据内容,如下图10:
在这里插入图片描述
图10
其对应的cyberchef的脚本为

[
  { "op": "From Hex",
    "args": ["Auto"] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Dechunk HTTP response",
    "args": [] },
  { "op": "Gunzip",
    "args": [] }
]

可以看到cyberchef对于HTTP协议的支持还是非常全面的,因此在HTTP协议处理方面使用cyberchef非常的便捷。

TLS

和HTTP协议不同的是,Wireshark并没有提供导出TLS证书的能力。在之前的文章中《提取pcap网络数据包中数字证书各属性字段信息》,这里,介绍了使用Wireshark lua插件提取流量中的数字证书,这个在批量提取的场景下,还是非常的便捷。但是有的时候只需要提取流量中少数的证书文件,这个时候可以采用手动的方式。

TLS数据包下载链接见这里,如下图11:
在这里插入图片描述
图11
追踪流会显示该流上所有的数据,由于我们只需要证书的数据,因此可以直接拷贝wireshark解析的字段。

以hex stream拷贝作为cyberchef的输入,如下图12:
在这里插入图片描述
图12
将其另存为证书文件,如下图13:
在这里插入图片描述
图13
上述方式还原证书文件还是非常的方便和快捷,适合还原少数证书的场景。

总的来说,通过cyberchef和wireshark相配合,能够提高分析pcap数据包的效率。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang云原生项目:—实现ping操作

熟悉报文结构 ICMP校验和算法: 报文内容,相邻两个字节拼接到一起组成一个16bit数,将这些数累加求和若长度为奇数,则将剩余一个字节,也累加求和得出总和之后,将和值的高16位与低16位不断求和,直…

基于STM32 HAL库的FFT计算与数学运算:幅值、频率、均方根、平均值、最大值、最小值、峰峰值与标准差

一、用STM32进行FFT计算与数学运算的过程 1. 信号采集 首先,我们需要使用STM32的ADC模块来采集模拟信号,比如三相交流电。ADC将模拟信号(如电压或电流)转换为数字信号,供后续处理。 采样数量:FFT的计算通…

关于Github报错Verify your two-factor authentication (2FA) settings的解决方案

如果我们在使用GitHub出现2FA验证问题:Verify your two-factor authentication (2FA) settings,那么可以参考下面的解决方法解决问题。 当然,如果有国外的手机号直接使用验证码接收就可以,问题是不支持中国手机啊。那么怎么办呢&…

【机器学习chp2】贝叶斯最优分类器、概率密度函数的参数估计、朴素贝叶斯分类器、高斯判别分析。万字超详细分析总结与思考

前言,请先看。 本文的《一》《二》属于两个单独的知识点:共轭先验和Laplace平滑,主要因为他们在本文的后续部分经常使用,又因为他们是本人的知识盲点,所以先对这两个知识进行了分析,后续内容按照标题中的顺…

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要: 警告的定义:警告是编译器用来告诉你某些地方可能存在问题,尽管编译器不强制要求你修复…

01.防火墙概述

防火墙概述 防火墙概述1. 防火墙的分类2. Linux 防火墙的基本认识3. netfilter 中五个勾子函数和报文流向 防火墙概述 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的 规则检…

express 从0-1如何创建一个项目 注册接口

内容参考: windos下安装mysql express 使用mysql 一、创建一个空项目 二、创建一个包管理工具 npm init -y三、安装需要的插件及app.js的部分实现 npm i express 安装express 框架 npm i cors 安装cors 用于跨域 npm install mysql2 安装mysql数据库 npm i b…

Shell基础(4)

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

续上篇博客(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客 继续更新 本篇博客内容为道路拓扑检查与修正&#x…

Python防检测之鼠标移动轨迹算法

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

3D编辑器教程:如何实现3D模型多材质定制效果?

想要实现下图这样的产品DIY定制效果,该如何实现? 可以使用51建模网线上3D编辑器的材质替换功能,为产品3D模型每个部位添加多套材质贴图,从而让3D模型在展示时实现DIY定制效果。 具体操作流程如下: 第1步:上…

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…

Cellebrite VS IOS18Rebooting

Cellebrite VS IOS18Rebooting我们想分享一些有关 iOS 18 重启“功能”的信息。在过去一周左右的时间里,人们对 iOS 18 中一项新的未记录功能产生了极大关注,该功能会导致设备在一段时间不活动后重新启动。 这意味着,如果设备在一定时间不活…

【Linux】:进程信号(详谈信号捕捉 OS 运行)

✨ 来去都是自由风,该相逢的人总会相逢 🌏 📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞…

视觉SLAM相机——单目相机、双目相机、深度相机

一、单目相机 只使用一个摄像头进行SLAM的做法称为单目SLAM,这种传感器的结构特别简单,成本特别低,单目相机的数据:照片。照片本质上是拍摄某个场景在相机的成像平面上留下的一个投影。它以二维的形式记录了三维的世界。这个过程中…

MongoDB在现代Web开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 MongoDB在现代Web开发中的应用 MongoDB在现代Web开发中的应用 MongoDB在现代Web开发中的应用 引言 MongoDB 概述 定义与原理 发展…

OceanBase 分区表详解

1、分区表的定义 在OceanBase数据库中,普通的表数据可以根据预设的规则被分割并存储到不同的数据区块中,同一区块的数据是在一个物理存储上。这样被分区块的表被称为分区表,而其中的每一个独立的数据区块则被称为一个分区。 如下图所示&…

Linux(CentOS 7) yum一键安装mysql8

1、通过yum安装 (1)下载mysql 在Linux找个地方输入以下命令 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm (2)安装mysql yum 仓库配置文件 [rootVM-8-15-centos ~]# sudo rpm -Uvh mysql80-c…

记一次预览USB摄像头并获取实时回调数据的过程(UVCAndroid集成)

背景 主工程是gradle4.8 jdk1.8 启用jetifier要接入的usb摄像头的库是UVCAndroid gradle8.7 jdk17 接入过程 看了下setCallbackActivity非常适合我们的需求,而且回调后的数据是RGB888,看到demo中用到了xml若干于是想到用aar打包,整个过程也…

shell脚本_永久环境变量和字符串操作

一、永久环境变量 1. 常见的环境变量 2. 设置永久环境变量 3.1.将脚本加进PATH变量的目录中 3.2.添加进环境变量里 3.2.修改用户的 shell 配置文件 二、字符串操作 1. 字符串拼接 2. 字符串切片 3. 字符串查找 4. 字符串替换 5. 字符串大小写转换 6. 字符串分割 7…