基于Pcap4j收发自定义协议报文(注意事项/踩坑总结)

devtools/2024/10/18 17:05:54/

大致内容:完善自定义的Cat21协议,补充至少5个数据类型不同的协议字段 用户输入Cat21协议字段,发送数据包 用户捕获Cat21数据包,打印输出字段值

本篇博客是直接将自定义协议报文封装在MAC帧的payload中的。

一、Cat21Packet类

1.添加自定义字段

2.在含有原来字段的函数增加新增字段的操作

以及添加相应获取数据的函数

如果新增数据段在Header,就在Header类中定义每个字段的大小和偏移量(如果是Payload就在Payload类中定义)注意字段大小一定要和字段类型占用大小一致,否则在解析时会出错!!!

以此类推在相应构造函数中添加新增变量,类型无法直接转换的需要单独写函数完成,例如:

二、Send类

1.将端口改为不容易冲突的,方便后面用过滤器抓特定的报文

2.由用户输入各字段信息

3.修改builder中相应的变量

三、CapPacket类

1.设置网卡过滤器,使用 BPF(Berkeley Packet Filter)语法来过滤捕获的数据包

2.反序列化自定义协议报文的时候,这里踩了一个坑,Cat21Packet中的构造函数有抛出异常,所以在用原始数据构造一个自定义协议对象的时候也要写异常的处理的方式,否则会报错

3.数据异常可以检查一下字节流中的数据是否对应的上,如有异常可能是字段长度偏移量问题

 例:

 

本篇博客自定义协议字段类型(29bytes):

  • byte cat; - byte 类型占用 1 字节
  • short length; - short 类型占用 2 字节
  • int fspec; - int 类型占用 4 字节
  • byte sign; - byte 类型占用 1 字节
  • boolean judge; - boolean 类型通常占用 1 字节(尽管在Java中它的大小没有明确指定,但通常实现为1字节)
  • long i64; - long 类型占用 8 字节
  • float flt; - float 类型占用 4 字节
  • double dbl; - double 类型占用 8 字节

解析结果

解析字段和输入一致则抓包解析成功


http://www.ppmy.cn/devtools/122076.html

相关文章

论文翻译 | Generated Knowledge Prompting for Commonsense Reasoning

摘要 整合外部知识是否有利于常识推理,同时保持预训练序列模型的灵活性,这仍然是一个悬而未决的问题。为了研究这个问题,我们开发了生成知识提示,它包括从语言模型生成知识,然后在回答问题时提供知识作为附加输入。我们…

Java工具--stream流

Java工具--stream流 过滤(filter)统计求最大最小和均值求和(sum)过滤后,对数据进行统计 遍历(map)规约(reduce)排序(sorted)去重(dist…

【最新】微信小程序连接onenet——stm32+esp8266+onenet实现查看温湿度,控制单片机

微信小程序——stm32esp8266onenet实现查看温湿度,控制单片机 (最新已验证)stm32 新版 onenet dht11esp8266/01s mqtt物联网上报温湿度和控制单片机(保姆级教程) :↓↓👇 👇 👇 &#x1f447…

十二、血条UI

一、制作血条UI 注:一般不用Slider制作血条;而是用两个Image制作,选择为填充 使用Slider滑动条制作UI 人物血条:背景深绿色;滑条浅绿色 在场景中的画布选择为OverLay 敌人血条: 在预制体里面制作&#x…

WebRTC Connection Negotiate解决

最近有个项目 ,部署之后一直显示,查了一些资料还是没有解决,无奈只有自己研究解决? 什么是内网穿透? 我们访问我们自己的官网产品页面,我们的服务器是一个单独的个体,有独立的公网ip&#xf…

R语言绘制散点图

散点图是一种在直角坐标系中用数据点直观呈现两个变量之间关系、可检测异常值并探索数据分布的可视化图表。它是一种常用的数据可视化工具,我们通过不同的参数调整和包的使用,可以创建出满足各种需求的散点图。 常用绘制散点图的函数有plot()函数和ggpl…

(10)MATLAB莱斯(Rician)衰落信道仿真1

文章目录 前言一、莱斯分布随机变量二、仿真代码与结果1.仿真代码2.仿真结果画图 后续 前言 首先给出莱斯衰落信道模型,引入了莱斯因子K,并给出莱斯分布的概率密度函数公式。然后导出莱斯分布随机变量的仿真表示式,建立MATLAB仿真代码&#…

【简介Sentinel-1】

Sentinel-1是欧洲航天局哥白尼计划(GMES)中的地球观测卫星,由Sentinel-1A和Sentinel-1B两颗卫星组成。以下是对Sentinel-1的详细介绍: 一、基本信息 卫星名称:Sentinel-1 所属计划:欧洲航天局哥白尼计划…