wireshark代码解析1

wireshark代码解析1

ID:27682533

大小:140.37 KB

页数:7页

时间:2018-12-05

wireshark代码解析1_第1页
wireshark代码解析1_第2页
wireshark代码解析1_第3页
wireshark代码解析1_第4页
wireshark代码解析1_第5页
资源描述:

《wireshark代码解析1》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Wireshark学习笔记1.简介2.Wireshark功能模块下图给出了wireshark功能模块:a)GTK1/2处理川户的输入输出显示,源码在gtk目录.b)Core核心模块,通过函数调用将其他模块连接在一起,源码在根目录c)EpanwiresharkPacketageAnalyzing,包分析引擎,源码在epanH录•Protocol-Tree:保存数据包的协议信息,wireshark的协议结构采用树形结构,解析协议报文时只需要从根节点通过函数句柄依次调用各层解析函数即可。•Dissectors:在epan/

2、dissector目录下,各种协议解码器,支持700+种协议解析,对于每种协议,解码器都能识别山协议字段(field),并显示出字段值(fieldvalue)由于网络协议种类很多,为了使协议和协议间层次关系明显,对数据流里的各个层次的协议能够逐层处理,wireshark系统采用了协议树的方式。•Plugins:一些协议解码器以插件形式实现,源码在plugins目录•Display-Filters:显示过滤引擎,源码在epan/dfilter目录d)Capture捕包引笨,利用libpcap/WinPcap从底层抓取网

3、络数据包,libpcap/WinPcap提供了通用的抓包接口,能从不同类型的网络接口(包括以太网,令牌环网,ATM网等)获取数据包。e)Wiretap从文件中读取数据包,支持多种文件格式,源码在wiretap目录f)Win-/1ibpcapWireshark抓包时依赖的库文件WiresharkWin-/libpcapHarddiskCapture-FiltersProtocol-TreeDissectorsEpanPluginsDisplay-Filterswireshark功能模块2.wireshark流程分析1)

4、初始化Wireshark的初始化包拈一些全局变量的初始化、协议分析引擎的初始化和Gtk相关初始化,显示Ethereal主窗口,等待用户进一步操作。重点就是Epan模块的初始化。Epan初始化:■tvbuff初始化:全局变量tvbuff_mem_chunk指向用memchunk分配的固定大小的空闲内存块,每个内存块是tvbuff_t结构,从空闲内存块中収出后,川來保存原始数据包。■协议初始化:♦全局变量:•proto_names•proto_short_names•proto_filter_names以上三个全局变w:

5、主要用来判断新注册的协议名是否重复,如果重复,给出提示信息,在协议解析过程中并没有使用。♦协议注册:•注册协议:将三个参数分别注册给proto_names、proto_short_names、proto_filter_names三个全局变量中,•注册字段,需要在wireshark协议树显示的报文内容字段。•协议解析表♦Handoff注册•将协议与父协议节点关联起来■Packet(包)初始化♦全局变量:•frame_handle:协议解析从frame开始,层层解析,直到所有的协议都解析完为止。frame_handle保

6、存了frame协议的handle。•data_handle:有的协议无法从frame升始,那么就从data开始。原理同frameo■读配置文件preference■读capturefilter和displayfilter文件,分别保存在全局变量capture_filter和display_filter中o■读disabledprotocols文件,保存全局变量global_disabled_protos和disabled_protos中■初始化全局变量cfile♦Cfile是个重要的变量,数据类型为capturefi

7、le,它保存了数据包的所有信息,■取得命令行启动时,参数列表,并进行相应的处理2)处理流程Wireshark初始化完成以后进入实际处理阶段,主程序创建抓包进程,捕包进程和主程序是通过PIPE进行传递数据的,主程序把抓収的数据写入临时文件,通过函数add_packet_to_packet_list将数据包加入包列表。处理时,主©序从列表中选取一个数据包,提取该数据包中的数据填写在数据结构中,最后调用协议解析函数epan_dissect_run进行处理,从epan_dissect_run开始,是实际的协议解析过程,下面以

8、HTTP协议报文为例,流程如下:a)解析frame层调用函数diSSeCt_fnme对frame层进行解析,并在协议树上填充相应字段信息。函数最后会判断是否有上层协议封装,如果有则调用涵数dissector_try_port在协议树上查找对应的解析函数,这里函数dissector_try_port根掘pinfo->fd->lnk_t查找对应的上

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。