zoukankan      html  css  js  c++  java
  • WireShark 自带工具 editcap 和 text2pcap 配合完成改包操作

    一、拆包

      首先声明这种方法比较复杂而且需要点技术水平,不建议菜鸟尝试(可以使用WireEdit等其他工具编辑pcap包)其实在熟练这种方法后也可以很快的,但这种方法主要还是方便吧,不用下载其他什么软件。(除了WireShark)

    不过菜鸟也不会点进这篇技术文章吧。

     

    先说主要思想

    editcap和text2pcap是WireShark自带的两款功能强大的命令行程序

    editcap是wireshark的命令行工具可以实现切割包和具体报文

    text2pcap可以根据你导出来的字符数据重新转化为数据报文

    因此我们可以先对原始包切割,切出想要的报文帧

    导出为数据字串

    修改数据字串

    再用text2pcap转回报文,这样就完成了修改工作。

     

    接下来是实际操作过程,我将把我遇到的比较复杂的例子来讲解,其他情况以此类推:

    例子是一个巨帧TCP报文,人工实现IP分片功能。

    打开CMD控制台窗口

    转到WireShark安装目录 cd C:Program FilesWireshark 找到editcap.exe和text2pcap.exe 如图

     

    接下来是官方文档editcap.html和text2pcap.html,我只截有用到的部分。

     

     

     

    首先切割文件,找到巨帧的那个报文序号,利用editcap来把pcap文件拆成三部分:巨帧报文之前的部分,巨帧报文一部分,巨帧之后部分。命令如下:

    editcap -r C:UsersAdministratorDesktopLargePcap.pcapng C:UsersAdministratorDesktopHeader.pcapng 1-31

    editcap -r C:UsersAdministratorDesktopLargePcap.pcapng C:UsersAdministratorDesktopJuZhen.pcapng  32

    editcap C:UsersAdministratorDesktopLargePcap.pcapng C:UsersAdministratorDesktopTail.pcapng 1-32

    这里的巨帧是第32条报文,长度为2974明显大于以太网帧的1500,所以你必须要处理pcap包,才能使这个包符合实际的传输过程;命令中 -r 参数是保留指定报文,不加的话是剔除指定报文。

    这里默认是pcapng格式,如果要转格式加 -F(详细见上面的说明);

    把这个包拆成两部分: 一个1514(MTU 可能不同)另一个1460。这里使用 -C 参数来剪报文内的数据。

     

     

    editcap -C -1460:1460 C:UsersAdministratorDesktopJuZhen.pcapng C:UsersAdministratorDesktop esult_1.pcapng

    editcap -C 54:1460 C:UsersAdministratorDesktopJuZhen.pcapng C:UsersAdministratorDesktop esult_2.pcapng

     

    这个语句要注意的是 offset :length offset是偏移,length是裁剪长度;还有就是要知道命令是把指定的给去除掉 (PS:我在这绕了很久)。

    二、改包

      打开result_1.pcapng和result_2.pcapng文件选中要改的报文,复制 -> as Hex Dump ,然后新建一个txt文件右键粘贴。

    我把result_1.pcapng 和 result_2.pcapng 复制到 result_1.txt、result_2.txt中

    接下来就是重中之重了 -------- 修改报文中的数据

    同时打开result.pcapng 和 result.txt,在WireShark中找到要修改的字节,对照着txt文件的相应地方改成你要的数值就行了(要注意不要改动他导出的文件格式)

    我这里的这个例子是要改动IP层的Total Length、Identification 和 Header CheckSum

    以及TCP层的Sequence Number 和 Checksum

    在txt中改掉对应的16进制,保存就完成了改包。

    三、合包

      然后使用text2pcap来合包操作,两条语句分别进行 txt Hex 转 pcapng 网络包

    text2pcap C:UsersAdministratorDesktop esult_1.txt C:UsersAdministratorDesktop1.pcapng

     

     text2pcap C:UsersAdministratorDesktop esult_2.txt C:UsersAdministratorDesktop2.pcapng

    生成1.pcapng 和 2.pcapng

     

      接下来是调整时间 ,使用 editcap -t 命令,由于不能使用精确时间来设置报文,只能 +偏移 或 -偏移来调正时间:

    editcap -t -xxxx 1.pcapng

    editcap -t -xxxx 2.pcapng

    先查看 Header.pcapng 最后一条报文准确时间 和 Tail.pcapng 第一条报文时间,在根据要调整的报文时间进行加减

    这里我就不写例子了(注意要在 Header.pcapng 最后一条报文准确时间 和 Tail.pcapng 第一条报文时间范围内)

     

    最后是合并包部分,顺序是  Header.pcapng <-  1.pcapng  <-  2.pcapng   <- Tail.pcapng

    四、结束

    放张结果图,第32和33条报文是裁剪后的结果。

    其实这种办法也不是特别麻烦吧!!不是很麻烦。。。。吧,。麻烦。好吧其实搞到这里我也没什么耐心了,这种方法我也没找到什么优点,在最后我也只是想记录一下,我挣扎的过程、学习的过程,仅此而已。

  • 相关阅读:
    Atitit。D&D drag&drop拖拽功能c#.net java swing的对比与实现总结
    Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
    Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. 标签用于包含对象,比如图像、音
    ListView与Adapter的那些事儿
    (转)Android反面自动静音
    (转)socket 与 file_get_contents的区别和优势的简单介绍
    Android ArrayAdapter 详解
    ImageView相关
    Android dip,px,pt,sp 的区别
    (转)Android 程序获取、设置铃声、音量、静音、扬声器
  • 原文地址:https://www.cnblogs.com/yddsblog/p/11979437.html
Copyright © 2011-2022 走看看