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针对特征识别真的很简单。。。。。。。

相关推荐
极客范儿5 分钟前
华为HCIP网络工程师认证—交换基础
网络·华为
AI科技星5 分钟前
第四卷:橡皮泥江湖(拓扑学)
c语言·开发语言·网络·量子计算·agi·拓扑学
byte轻骑兵7 分钟前
【AVRCP】规范精讲[28]:媒体源上电全流程,蓝牙音频控制启动就靠这一套
网络·音视频·人机交互·媒体·avrcp
丨白色风车丨12 分钟前
PyTorch 实现手写数字识别:全连接网络 + CNN 卷积网络(MNIST 数据集实战)
网络·pytorch·cnn
DianSan_ERP14 分钟前
架构师视角:电商大促高并发下的订单API限流与防漏单架构演进
java·运维·网络·安全·微服务·架构·自动化
code monkey.21 分钟前
【Linux之旅】HTTP 协议解析:从请求格式到构建 Web 服务器
linux·服务器·网络·http
十正21 分钟前
aiohttp.TCPConnector 连接池原理详解
网络·python·tcp·aiohttp
福建佰胜张工33 分钟前
3HNA006722-001 O-RING:ABB 喷涂机器人流体系统核心密封件技术解析
网络·人工智能·机器人
vortex538 分钟前
Linux 传统设计哲学:通过调用名区分行为的艺术
linux·运维·网络
志栋智能1 小时前
超自动化安全的实施路径:从单点场景到体系化建设
运维·网络·安全·自动化