Wireshark LUA脚本分析自定义帧格式
1. 帧格式
该帧格式由课设要求引出,本次课设要求在eth0
网络接口与Linux内核TCP/IP
间串接一个虚拟网络接口vni0
,如下图所示:
此报文格式修改为下图所示:
-
以太帧头部:
目的MAC地址(6字节) = 广播MAC地址;
源MAC地址(6字节) = 发送方eth0的MAC地址;
类型(2字节) = 0xF4F0(即VNI的协议编号);
-
VNI头部:
VNI类型(4字节) = 学号后4位数,每个数1个字节;
分组序号(2字节),初始值为0。
2. 编写LUA脚本
第一步:创建解析器对象
local NAME = "VNI"
local VniProto = Proto(NAME, "VNI PROTOCOL")
第二步:声明协议字段:
-- C语言中自定义VNI协议头部结构体
-- struct vnihdr
-- {
-- char id[4];
-- unsigned short seq;
-- };
-- 声明协议的字段
local fields = VniProto.fields
fields.id_0 = ProtoField.uint8(NAME .. "ID", "id[0]", base.HEX)
fields.id_1 = ProtoField.uint8(NAME .. "ID", "id[1]", base.HEX)
fields.id_2 = ProtoField.uint8(NAME .. "ID", "id[2]", base.HEX)
fields.id_3 = ProtoF