wireshark源码分析 是怎么完成协议识别的

代码流程

通过process_packet_single_pass处理单个数据包,每层数据包都会使用decode_udp(tcp)_ports识别协议,这里面提供端口和特征识别;

端口识别:dissector_try_uint_new

在接口内通过find_uint_dtbl_entry

如果是一个HTTP数据包,在这里就会通过接口获取key为80的对象。

特征识别:dissector_try_heuristic

关于特征识别,wireshark是不太注重的,因为其使用场景多为协议分析,读取文件的形式。对于特征流量都会通过协议首选项随时配置。

在接口里面

那么怎么让协议支持特征识别,才是话题里关心的。在wireshark中,他所有的协议相关操作,都是通过一个全局变量处理的,变量的内容就是一个关于接口描述和接口回调的成员。所有协议都在里面,我们以http示例。

这个文件的位置在

build/epan/dissectors/dissectors.c

变量名:注册解析处理回调

dissector_reg_handoff

其中http特征位置在

proto_reg_handoff_message_http接口,看一下里面做了什么

很简单,对比其他工具特征识别逻辑(比如suricata的hyperscan),wireshark针对特征识别真的很简单。。。。。。。

相关推荐
fei_sun10 小时前
开放最短路径优先OSPF----基于链路状态
网络
精明的身影10 小时前
网络计划WebApp求解:融合Python与AI决策的项目管理系统
网络·python·web app
icsocket10 小时前
芯片测试治具关键组成部分和设计考虑:机械结构中的夹具
测试工具
Let's Chat Coding11 小时前
对称密钥认证:主机和设备共享同一把密钥
运维·服务器·网络
anbingsoft1212 小时前
企业加密软件软件有哪些?企业加密软件:让设计图纸安全无忧,年度热销
网络·安全·电脑
fei_sun13 小时前
虚拟局域网VLAN
网络
技术不好的崎鸣同学14 小时前
[极客大挑战 2019]EasySQL 思路及解法
网络·安全·web安全
Web极客码14 小时前
跨国网络抖动下的 AI 爬虫流调优:我如何用 Claude 打造“智能退避”资讯清洗管道
网络·人工智能·爬虫
念何架构之路14 小时前
moby-http-api-server
网络·网络协议·http
namexingyun15 小时前
Scaling Law bug实战启示:从“虚胖“到“精瘦“的算力效率革命
开发语言·网络·人工智能·bug·ai编程