text2pcap: 将hex转储文本转换为Wireshark可打开的pcap文件
简介
Text2pcap是一个读取ASCII hex转储的程序,它将描述的数据写入pcap或pcapng文件。text2pcap可以读取包含多个数据包的hexdumps,并构建多个数据包的捕获文件。text2pcap还能够生成虚拟以太网,IP和UDP,TCP或SCTP标头,以便仅从应用级数据的hexdump构建完全可处理的数据包转储。
用法
该工具集成在Wireshark安装包中,进入DoS切换到Wireshark安装目录(缺省:C:\Program Files\Wireshark)。使用命令: text2pcap [选项] <输入文件名> <输出文件名>
选项
-o hex | oct | dec
指定偏移的基数(十六进制,八进制或十进制)。默认为十六进制。详细介绍见后文注意事项。
-t <timefmt>
将包之前的文本视为日期/时间码; timefmt是strptime(3)支持的排序格式字符串。示例:时间“10:15:14.5476”的格式代码为“%H:%M:%S”。如果不指定时间,则使用当前系统时间。
-n
以pcapng格式而不是pcap格式写入文件。缺省为pcap格式
-l
指定此数据包的链路层标头类型。缺省为以太网(1)。有关可能的封装的完整列表,请参见http://www.tcpdump.org/linktypes.html。 请注意,如果转储是封装数据包的完整十六进制转储,并且您希望指定确切的封装类型,则应使用此选项。示例:-l 7用于封装BSD样式的ARCNet数据包。
-m <max-packet>
设置最大数据包长度,默认为262144.
-h
帮助选项
当捕获报文为非完整数据实(比如只有应用层数据),可以使用以下选项对报文头进行构造:
-e <l3pid>
在每个数据包之前包含一个虚拟以太网报头。以十六进制指定以太网头的L3PID。如果您的dump具有第3层标头和有效负载(例如IP标头),但没有第2层封装,请使用此选项。示例:-e 0x806指定ARP数据包。对于IP数据包,您也可以使用-l 101来指示Wireshark的原始IP数据包,而不是生成虚假的以太网头。请注意,-l 101不适用于任何非IP第3层数据包(例如ARP),而使用-e生成虚拟以太网头适用于任何类型的L3数据包。
-i <proto>
在每个数据包之前包含虚拟IP头。以十进制指定数据包的IP协议。如果转储是IP数据包的有效负载(即具有完整的L4信息)但每个数据包没有IP头,请使用此选项。请注意,每个数据包也会自动包含适当的以太网标头。示例:-i 46指定RSVP数据包(IP协议46)。有关分配的Internet协议号的完整列表,请参见http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml。
-4 <srcip>,<destip>
使用指定的IPv4 目的和源地址预先添加虚拟IP头。此选项应附带以下选项之一:-i,-s,-S,-T,-u使用此选项可应用“自定义”IP地址。示例:-4 10.0.0.1,10.0.0.2对所有IP数据包使用10.0.0.1和10.0.0.2。
-6 <srcip>,<destip>
使用指定的IPv6目标和源地址预先添加虚拟IP头。此选项应附带以下选项之一:-i,-s,-S,-T,-u使用此选项可应用“自定义”IP地址。示例:-6 fe80 :: 202:b3ff:fe1e:8329,2001:0db8:85a3 :: 8a2e:0370:7334使用fe80 :: 202:b3ff:fe1e:8329和2001:0db8:85a3 :: 8a2e:0370 :7334表示所有IP数据包。
-T <srcport>,<destport>
在每个数据包之前包含虚拟TCP标头。以十进制指定数据包的源和目标TCP端口。如果转储是数据包的TCP有效负载但不包含任何TCP,IP或以太网标头,请使用此选项。请注意,每个数据包都会自动包含适当的以太网和IP标头。序号将从0开始。
-u <srcport>,<destport>
在每个数据包之前包含虚拟UDP标头。以十进制指定数据包的源和目标UDP端口。如果转储是数据包的UDP有效负载但不包含任何UDP,IP或以太网标头,请使用此选项。请注意,每个数据包都会自动包含适当的以太网和IP标头。示例:-u1000,69使数据包看起来像TFTP / UDP数据包。
说明
一个标准的hex dump报文应该如下:
如上图所示是wireshark官方文档中的hex dump示例,标红的地方即为偏移量(offset),缺省为16进制,每一个新数据包以偏移量0开头第一行一共16字节,因此第二行的偏移量为16,对应到十六进制即为:0x00010。
此外还有几个地方需要注意:
1、每行的宽度或字节数没有限制。此外,行末尾的文本转储也会被忽略。
2、字节/十六进制数可以是大写或小写。
3、忽略偏移之前的任何文本,包括电子邮件转发字符'>'。
4、字节串行之间的任何文本行都将被忽略。
5、偏移量用于跟踪字节,因此偏移量必须正确。
6、任何只有字节而没有前导偏移的行都将被忽略。
7、偏移被识别为长于两个字符的十六进制数。
8、忽略字节后的任何文本(例如字符转储),此文本中的任何十六进制数也会被忽略。
9、偏移量为零表示启动新数据包,因此具有一系列hexdumps的单个文本文件可以转换为具有多个数据包的抓包文件。
示例
接下来通过root-me上的一道题目演示如何将hex dump文本转换为pcap文件。题目地址为:https://www.root-me.org/en/Challenges/Network/ETHERNET-frame ,其中所涉及到的报文为:
00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00
00 00 00 9b 06 40 26 07 53 00 00 60 2a bc 00 00
00 00 ba de c0 de 20 01 41 d0 00 02 42 33 00 00
00 00 00 00 00 04 96 74 00 50 bc ea 7d b8 00 c1
d7 03 80 18 00 e1 cf a0 00 00 01 01 08 0a 09 3e
69 b9 17 a1 7e d3 47 45 54 20 2f 20 48 54 54 50
2f 31 2e 31 0d 0a 41 75 74 68 6f 72 69 7a 61 74
69 6f 6e 3a 20 42 61 73 69 63 20 59 32 39 75 5a
6d 6b 36 5a 47 56 75 64 47 6c 68 62 41 3d 3d 0d
0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 49 6e 73
61 6e 65 42 72 6f 77 73 65 72 0d 0a 48 6f 73 74
3a 20 77 77 77 2e 6d 79 69 70 76 36 2e 6f 72 67
0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d
0a
根据提示可知该报文为以太网类型的报文,我们可以使用缺省参数进行转换而无需通过-l指定链路层类型。
结合上一节中的说明可知,该报文没有设置偏移字段,因此我们需要手工设置偏移字段,偏移字段需要大于2个字符,这里我们设置成4个字符,报文的开始偏移量一定要设置为0,每行16个字节,正好第二位加一:
0000 00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00
0010 00 00 00 9b 06 40 26 07 53 00 00 60 2a bc 00 00
0020 00 00 ba de c0 de 20 01 41 d0 00 02 42 33 00 00
0030 00 00 00 00 00 04 96 74 00 50 bc ea 7d b8 00 c1
0040 d7 03 80 18 00 e1 cf a0 00 00 01 01 08 0a 09 3e
0050 69 b9 17 a1 7e d3 47 45 54 20 2f 20 48 54 54 50
0060 2f 31 2e 31 0d 0a 41 75 74 68 6f 72 69 7a 61 74
0070 69 6f 6e 3a 20 42 61 73 69 63 20 59 32 39 75 5a
0080 6d 6b 36 5a 47 56 75 64 47 6c 68 62 41 3d 3d 0d
0090 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 49 6e 73
00a0 61 6e 65 42 72 6f 77 73 65 72 0d 0a 48 6f 73 74
00b0 3a 20 77 77 77 2e 6d 79 69 70 76 36 2e 6f 72 67
00c0 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d
00d0 0a
00d1
将以上报文保存到txt文本,使用缺省参数进行转换:
此时我们使用wireshark打开刚刚生成的pcap文件:
可以看到报文被完整的解析出来,上图中标红的字段经过base64解码后即为该题目的password。
另外一种方法亦可将hex dump文本解析为pcap。打开wireshark——点击文件——从hex转储文件导入:
如果手工设置了或者hex转储文件自带偏移量则可以选择偏移量为16进制,如果hex dump文件没有偏移值则偏移量选择无也可以正常导入文件:
参考资料:https://www.wireshark.org/docs/man-pages/text2pcap.html
text2pcap: 将hex转储文本转换为Wireshark可打开的pcap文件的更多相关文章
- JSON文本转换为JSONArray 转换为 List<Object>
package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import java.util.Arr ...
- 利用Code128字体将文本转换为code128条形码
利用Code128字体将文本转换为code128条形码[转] 最近在做仓储的项目,许多的打印文件都包含条形码,之前一直使用C39P24DhTt字体直接转换为39码,但是最近要求使用code128编 ...
- 将txt文本转换为excel格式
将txt文本转换为excel格式,中间使用的列分割为 tab 键 一.使用xlwt模块 注:Excel 2003 一个工作表行数限制65536,列数限制256 需要模块:xlwt 模块安装:xlwt ...
- 用Excel如何将文本转换为数字的七种方法
用Excel如何将文本转换为数字的七种方法 当下,很多工作都会用到Excel,下面本文分步介绍了如何将包含文本的Excel单元格转换为包含数字的单元格. 概述: 当导入在另一程序(如 dBASE 或 ...
- 一招教你如何在Python中使用Torchmoji将文本转换为表情符号
很难找到关于如何使用Python使用DeepMoji的教程.我已经尝试了几次,后来又出现了几次错误,于是决定使用替代版本:torchMoji. TorchMoji是DeepMoji的pyTorch实现 ...
- 将rgb表示方式转换为hex表示方式-------------将hex表示方式转换为rgb表示方式(这里返回rgb数组组合)
/** * kevin 2021.1.4 * 将rgb表示方式转换为hex表示方式 * @param {string} rgbColor 传过来的hex格式的颜色 * @returns { ...
- 【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
问题描述 如何在Windows环境中,不安装第三方软件的情况下(使用Windows内置指令),如何抓取网络包呢?并且如何转换为Wireshark 格式呢? 操作步骤 1) 以管理员模式打开CMD,使用 ...
- 将 Word 文本转换为表格
文本转换为表格的功能,首先点击"插入"选项卡"表格"组中的"表格"下拉按钮,打开下拉列表中选择"文本转换成表格"选项.
- Qt文本读写之一:输入输出设备和文件操作
一.输入输出设备 QIODevice类是Qt中所有I/O设备的基础接口类,为诸如QFile.QBuffer和 QTcpSocket等支持读/写数据块的设备提供了一个抽象接口.QIODevice类是抽象 ...
随机推荐
- JAVA基础知识(八)值传递与引用传递
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响 ...
- hadoop学习(三)----hadoop2.x完全分布式环境搭建
今天我们来完成hadoop2.x的完全分布式环境搭建,话说学习本来是一件很快乐的事情,可是一到了搭环境就怎么都让人快乐不起来啊,搭环境的时间比学习的时间还多.都是泪.话不多说,走起. 1 准备工作 开 ...
- java并发编程(一)----线程基础知识
在任何的生产环境中我们都不可逃避并发这个问题,多线程作为并发问题的技术支持让我们不得不去了解.这一块知识就像一个大蛋糕一样等着我们去分享,抱着学习的心态,记录下自己对并发的认识. 1.线程的状态: 线 ...
- 基于Starling的mask实现
作为一个从c++转过来的程序员,flash原生的自定义mask实在是太好用,能方便实现各种效果,比如新手引导的高亮.viewport效果等.可惜starling的显示对象并不支持mask特性,查阅go ...
- Ubuntu 18.04 LTS版本 GoldenDict安装与配置
为何安装? GoldenDict是一款Linux下很好用的词典软件,其具有的关于词典的裁剪功能使得用户能够方便地对各种词典进行添加或删除,其具有的屏幕取词功能能够帮助用户方便地进行翻译,其具有的网络源 ...
- 超实用,Linux中查看文本的小技巧
日常开发中,我们经常需要在服务器上进行各种文本,日志的查看操作,本文主要对常用的文本,日志查看技巧进行了一番总结和归纳,方便大家收藏起来后续查看使用: tail命令查看日志信息 实时监控日志: tai ...
- golang timeoutHandler解析及kubernetes中的变种
Golang里的http request timeout比较简单,但是稍不留心就容易出现错误,最近在kubernetes生产环境中出现了的一个问题让我有机会好好捋一捋golang中关于timeout中 ...
- There’s More Than One Way To Do It!
There’s More Than One Way To Do It!
- Nginx安装之源码安装
nginx部署 1. 安装依赖 yum install gcc gccc++ pcre pcre-devel zlib zlib-devel openssl openssl-devel-y 2. 下载 ...
- 我是如何学习写一个操作系统(二):操作系统的启动之Bootloader
前言 今天本来的任务看书和把之前写的FragileOS整理一下,但是到现在还在摸鱼,书也只看一点.后来整理了一下写这个系列的思路,原本的目的是对操作系统原理性的学习和对之前写的一个玩具型操作系统的回顾 ...