首页 > 其他分享 >第二周进展

第二周进展

时间:2023-11-26 19:24:57浏览次数:30  
标签:进展 get -- 报文 RSA pinfo 第二周 解析

本周计划:完成自己的部分

遇到了许多的问题,比如插件载入后每次报错:

Lua: Error during loading:
C:\Program Files\Wireshark\plugins\RSA.lua:42: bad argument #1 to 'add' (DissectorTable_add: invalid integer or range)
stack traceback:
	[C]: in function 'add'
	C:\Program Files\Wireshark\plugins\RSA.lua:42: in main chunk
	[C]: in function 'dofile'
	C:\Program Files\Wireshark\init.lua:671: in main chunk

Lua: Error during loading:
C:\Program Files\Wireshark\plugins\RSA.lua:8: bad argument #2 to 'Proto' (Proto_new: there cannot be two protocols with the same description)
stack traceback:
	[C]: in function 'Proto'
	C:\Program Files\Wireshark\plugins\RSA.lua:8: in main chunk

查阅到资料,不符合但是大概清楚了原因
Lua: Error during loading:C:\Users\Shinelon\AppData\Roaming\Wireshark\plugins\sd.lua:11: bad argume

学习笔记:

Lua插件API介绍

1.Proto

    表示一个新的Protocol,在Wireshark中Protocol对象有很多用处,解析器是其中主要的一个。主要接口有:

接口          说明
proto:__call (name,desc)    创建Proto对象。name和desc分别是对象的名称和描述,前者可用于过滤器等
proto.name      get名称
proto.fields      get/set字段
proto.prefs      get配置项
proto.init         初始化,无参数
proto.dissector    解析函数,3个参数tvb,pinfo,tree,分别是报文内容,报文信息和解析树结构
proto:register_heuristic (listname, func)    为Proto注册一个启发式解析器,被调用时,参数func将被传入与dissector方法相同的3个参数

 

2 ProtoField

    表示协议字段,一般用于解析字段后往解析树上添加节点。根据字段类型不同,其接口可以分为两大类。

    整型:
    • ProtoField.{type} (abbr, [name], [desc],[base], [valuestring], [mask])
    type包括:uint8, uint16, uint24, uint32, uint64, framenum

    其他类型
    • ProtoField.{type} (abbr, [name], [desc])
    type包括:float, double, string, stringz, bytes, bool, ipv4, ipv6, ether,oid, guid

    这些接口都会返回一个新的字段对象。方括号内是可选字段,花括号内是可替换的类型字段。

    如下图的例子,

-- create fields of red
fields_M             = ProtoField.uint8 (NAME1 .. ".M", "M", base.HEX,Payload_type,0x80)
fields_pt            = ProtoField.uint8 (NAME1 .. ".PT", "PT", base.DEC,Payload_type,0x7F)
fields_seqno         = ProtoField.uint16(NAME1 .. ".seqno", "Sequence number")
fields_h264bytes     = ProtoField.bytes(NAME1 .. ".bytes", "H264Data")
fields_fec           = ProtoField.bytes(NAME1 .. ".fec", "FEC Payload")

 

3 Tvb

    Tvb(Testy Virtual Buffer)表示报文缓存,也就是实际的报文数据,可以通过下面介绍的TvbRange从报文数据中解出信息。主要接口有:

接口    说明
tvb:__tostring()    将报文数据转化为字符串,可用于调试
tvb:reported_len()    get tvb的(not captured)长度
tvb:len()    get tvb的(captured)长度
tvb:reported_length_remaining()    获取当前tvb的剩余长度,如果偏移值大于报文长度,则返回-1
tvb:offset()    返回原始偏移

    我们最常使用应该就是“tvb:len()”

4 Pinfo

    报文信息(packet information)。主要接口有:

接口    说明
pinfo.len pinfo.caplen    get报文长度
pinfo.abs_ts    get报文捕获时间
pinfo.number    get报文编号
pinfo.src pinfo.dst    get/set报文的源地址、目的地址
pinfo.columns pinfo.cols    get报文列表列(界面)

    取得报文列表列后,就可以设置该列的文本,比如

    -- show protocol name in protocol column
    pinfo.cols.protocol = red.name

 

5 DissectorTable

    表示一个具体协议的解析表,比如,协议TCP的解析表”tcp.port”包括http,smtp,ftp等。可以依次点击wireshark菜单“Internals”、“Dissector tables”,来查看当前的所有解析表。如下图,我们选择 rtp.pt解析表在“Integer tables”选项卡中,顾名思义,它是通过类型为整型的 rtp 端口号来识别下游协议的:
    在这里插入图片描述
    DissectorTable的主要接口有:
    接口说明

接口    说明
DissectorTable.get(name)    get名为name的解析表的引用
dissectortable:add(pattern, dissector)    将Proto或Dissector对象添加到解析表,即注册。pattern可以是整型值,整型值范围或字符串,这取决于当前解析表的类型
dissectortable:remove(pattern, dissector)    将满足pattern的一个或一组Proto、Dissector对象从解析表中删除

解析RSA的代码示例

-- 创建一个新的Lua插件脚本,例如 "RSA.lua"

local NAME1 = "RSA"
local PORT = 13400
-- 创建插件对象
local RSA = Proto(NAME1,"RSA Protocol")  -- 更改描述以确保唯一性

-- 定义处理函数
function RSA.dissector(buffer, pinfo, tree)
    -- 解析SSL握手消息
    local handshake_type = buffer(0, 1):uint()
    
    if handshake_type == 0x16 then
        -- SSL Handshake消息类型为0x16表示握手消息
        -- 这里继续解析握手消息以查找证书和算法信息
        local certificate_msg_length = buffer(3, 3):uint() * 256 + buffer(4, 1):uint()
        local certificate_start_offset = 5  -- 假设证书开始于偏移量5
        
        if buffer:len() >= certificate_start_offset + certificate_msg_length then
            -- 解析证书消息
            local certificate_buffer = buffer(certificate_start_offset, certificate_msg_length)
            
            -- 提取证书中的公钥算法信息
            local public_key_algorithm = "Unknown"
            local subject_key_info = certificate_buffer(12, 2):uint()
            if subject_key_info == 0x0400 then
                public_key_algorithm = "RSA"
            end
            
            -- 在信息列中设置公钥算法
            pinfo.cols.info:set("公钥算法:" .. public_key_algorithm)
        end
    end
end

-- 向Wireshark注册插件
local wtap_encap_table = DissectorTable.get("wtap_encap")
wtap_encap_table:add(0x01, RSA) -- 使用正确的整数或范围作为第一个参数,例如0x01(这是示例,请根据您的需要更改)

-- 输出插件信息
_G[NAME1] = RSA

这周任务没有完成,但学了好多,再几天就能完成任务了

标签:进展,get,--,报文,RSA,pinfo,第二周,解析
From: https://www.cnblogs.com/dkyzhouyikai/p/17856908.html

相关文章

  • Wireshark lua插件开发第二周进展
    1.Lua简介Lua是一种轻量级的脚本语言,解释执行,不需要编译器之类的。Lua的基本语法可以参考官网或者菜鸟教程。Wireshark内置了对Lua脚本的支持,可以直接编写Lua脚本,无需配置额外的环境,使用起来还是非常方便的。[WiresharkDeveloper'sGuide]里的第10章和第11章都是关于Lua......
  • 2023-2024-1 20232428 《网络空间安全导论》第二周学习总结
    1.教材学习内容总结2.基于AI的学习......
  • 2023-2024-1 20232315 《网络空间安全导论》第二周学习
      一、 我最近初步了解了密码学基础,了解了其起源、初步发展与应用、包含的主要内容以及在当下的情况,下面是大概的思维导图: 二、下面是我学习后的问题:1、信息加密与信息隐藏有何本质区别?解决方法:问AI答案: 问题2:当今密码学面临哪些挑战,该如何迎接这些挑战?答案:......
  • 军工物联网的进展和困难
    军工物联网的进展和困难可以从以下几个方面来讨论:进展:技术发展:物联网技术不断发展,已经可以实现物物相连,实时监测,信息共享等功能,这为军工物联网的发展提供了技术基础。军事应用:军工物联网已经在军事领域得到了一定的应用,例如战场环境监测、武器装备智能化、后勤保障管理等。这些应用......
  • 《2023-2024-1 20232415 《网络》第二周学习总结》
      本周的网络空间安全课程的学习主要围绕密码科学技术展开。通过学习与探究,我了解了密码科学技术的基本原理,应用方式以及发展前景。 教材学习中的问题:问题1:不同密码表对文字的加密方式各不相同,较为复杂,难以理解。问题1解决方案:通过反复阅读,探寻不同密码表之间的规律,可以有......
  • 2023-2024-1 20232327《网络空间安全导论》第二周学习总结
    2023-2024-120232327《网络空间安全导论》第二周学习总结教材学习内容总结1.密码学历史悠久,主要分为古典密码、机械密码和线代密码;2.密码学研究主要有密码分析,密码理论,密码工程与应用以及密码管理;3.密码体制的分类:单钥密码体制和双钥密码体制;4.密码分析方法有穷举攻击法、......
  • 第二周
    Shell编程语言学习了Shell编程的基础知识,包括命令行参数、变量、条件判断、循环结构等。并且通过编写脚本演示了Shell脚本的实际应用。文件和系统管理学习了如何在Linux系统中创建、复制、移动、重命名、删除等文件和目录,以及如何使用chmod命令为文件添加权限。同时,我们还学习了......
  • 网空第二周
    (2023-2024-1)(20232410)《网络》第2周学习总结教材学习内容总结密码学基本概念和主要研究方向教材学习中的问题和解决过程问题:为何说一次一密在理论上是安全的,在实际应用中存在什么问题问题解决方案:运用ai提问回答参考资料《网络空间安全导论》网络空间安全导论书单......
  • 2023-2024-1 20232407 《网络》 第二周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题1:密码学基础中的对称加密和非对称加密有什么区别?它们分别适用于什么场景?解决方案:询问GPT问题2:什么是数字签名?它是如何保证消息的完整性和真实性的?解决方案:询问GPT基于AI的学习思考在密码学基础中,对称加密和非对称加密是......
  • 2023-2024-1 20232320 《网络空间安全导论》第二周学习总结
    教材学习内容总结本周我进行了《网络空间安全导论》第二章的学习,其中主要对密码学以及密码的概念和分类进行了讲述,也简述了密码学的发展的进展和方向,在学习中,我以思维导图的方式总结了以下要点:教材学习中的问题和解决过程问题1:shannon信息论有什么主要内容?问题1解决方案:问百......