当前位置: 首页 > news >正文

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

大致内容:完善自定义的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.mrgr.cn/news/43488.html

相关文章:

  • 算法篇1:双指针思想的运用(1)--C++
  • Gitee创建仓库,提交代码到自己的fork,合并到主分支
  • No.4 笔记 | 探索网络安全:揭开Web世界的隐秘防线
  • 【可视化大屏】将柱状图引入到html页面中
  • C++ 异步编程 并发编程技术
  • C语言入门基础题(力扣):完成旅途的最少时间(C语言版)
  • CGLib动态代理和JDK动态代理Demo、ASM技术尝鲜
  • AbMole牛磺胆酸钠在构建大鼠急性胰腺炎模型中的应用
  • 环境可靠性
  • COPS论文总结——Lec17
  • 信息安全工程师(34)访问控制模型
  • 乌班图基础设施安装之Mysql8.0+Redis6.X安装
  • 前端的全栈混合之路Meteor篇(一):运行在浏览器端的数据库-MiniMongo介绍及其前后端数据实时同步示例
  • 数学建模 第四讲 - 数学规划模型
  • Python学习笔记-函数
  • 【网络篇】计算机网络——应用层详述(笔记)
  • Java 网络编程基础
  • 【408计算机考研课程】数据结构-数据结构在学什么?
  • 二叉树的中序&后序遍历——非递归版本
  • 【C语言】分支与循环