• http2流分片data数据合并-linux xxd方法


     首先如果http2的stream分片了,但是能够decode识别为http2 protocol,这种情况是最理想的情况:

    • 通过follow http2 stream得到http2的stream,这样就不用在tcp stream中去寻找目标http2 stream了,这样也能比较快得到http2 stream。用上篇文章(http2分片流内容整合呈现方法)的方法是可以的。
    • 当然这种情况也可以使用这篇文章介绍的方法

     使用tcp follow方式比较直观,但是如果http2 stream所在的tcp流包较多的话,follow需要的时间可能较长,这篇文章介绍借用Linux xxd命令合并tcp或者http2 data部分内容

    1. 过滤目标http2 stream

    1. 如果tcp分片可以识别http2 stream

    filter syntax:
    tcp.stream == XX&&http2.streamid==XX

    1. 如果tcp分片已不能识别成是http2 protocol,需要想办法过滤出http2 stream的所有相应分片

    filter syntax:
    (ipv6.src == 2409:804b:5003:1105::d:101) && (tcp.stream == 53)&&(frame.number>=13853 && frame.number <=13888 )
    在这里插入图片描述

    2. 过滤目出的目标包处理

    两个原因可能需要再次进行处理:

    1. 包的顺序是乱的,不处理的话,xxd显示的结果也是乱的
    2. 抓包原因可能抓了重复的包,或者真的出现了重传。
      如我上面的截图每个序列号都重复了,这可能是抓包原因。
      包处理:

    tshark -r “HN_AMF08_0617_0320-udm-ipv6-unreachable.pcap” -o tcp.reassemble_out_of_order:false -o tcp.analyze_sequence_numbers:false -Y “(ipv6.src == 2409:804b:5003:1105::d:101) && (tcp.stream == 53)&&(frame.number>=13853 && frame.number <=13888 )” -T fields -e tcp.seq -e tcp.payload | sort | uniq | more
    tshark: The file “HN_AMF08_0617_0320-udm-ipv6-unreachable.pcap” appears to have been cut short in the middle of a packet.
    1559430528 00000901040000e03d88be0f0d840b6cb8f7
    1559430546 00200000000000e03d7b2276616c6964697479506572696f64223a333630302c226e66496e7374616e636573223a5b7b226e66496e7374616e63654964223a226165666
    4373834312d336430392d346132332d623638632d303431303030303030303032222c226e6654797065223a2241555346222c226e66537461747573223a2252454749535445524544222c22
    68656172744265617454696d6572223a31302c22706c6d6e4c697374223a5b7b226d6363223a2234

    **说明:**
     1.  -r "HN_AMF08_0617_0320-udm-ipv6-unreachable.pcap"   读取pcap抓包
     2. -o tcp.reassemble_out_of_order:false -o tcp.analyze_sequence_numbers:false 关闭tcp乱序和序列号分析
     3. (ipv6.src == 2409:804b:5003:1105::d:101) && (tcp.stream == 53)&&(frame.number>=13853 && frame.number <=13888 )  过滤的目标http2 stream
     4. -T fields -e tcp.seq -e tcp.payload 显示2个字段,tcp.seq排序用,tcp.payload目标字段。
     5. sort | uniq   linux指令,排序然后去重
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.tcp payload目标字段合并

    tshark -r “HN_AMF08_0617_0320-udm-ipv6-unreachable.pcap” -o tcp.reassemble_out_of_order:false -o tcp.analyze_sequence_numbers:false -Y “(ipv6.src == 2409:804b:5003:1105::d:101) && (tcp.stream == 53)&&(frame.number>=13853 && frame.number <=13888 )” -T fields -e tcp.seq -e tcp.payload | sort | uniq | awk -F " " ‘{print $2}’ | xxd -r -p
    在这里插入图片描述

    **说明:**
     1. awk之前是上面的过滤条件
     2. awk -F " " '{print $2}'   只保留data部分
     3. 使用xxd合并解码显示data部分
    
    • 1
    • 2
    • 3
    • 4

    4. 用json工具转换格式

    上篇文章(http2分片流内容整合呈现方法)介绍过,copy出大括号的部分,用tool工具或者notepad++ plugin。

    copy出来转换前:
    在这里插入图片描述
    转换后:
    在这里插入图片描述

  • 相关阅读:
    11个程序员必备简捷开发辅助工具
    热电公司称重系统对接口都有什么要求
    微服务守护神-Sentinel-概念
    sqlserver系统存储过程添加用户学习
    nvm管理(切换)node版本,方便vue2,vue3+ts开发
    人工神经网络优化算法,进化算法优化神经网络
    Xilinx的TestPattern模块编译错误解决方法
    [毕业设计] 基于单片机的智能快递柜设计与实现 - stm32 物联网
    R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性...
    在Windows11家庭中文版中启用Copilot(预览版)
  • 原文地址:https://blog.csdn.net/weixin_45617372/article/details/125603107