wireshark源码探索No.2---文档
来源:互联网 发布:怎么制作一个软件 编辑:程序博客网 时间:2024/05/29 07:24
这篇主要是介绍一下wireshark的开发文档,主要是介绍都有哪些文档帮助开发者,帮助文档主要有哪些内容。
大部分童鞋可能直接就搜到https://www.wireshark.org/docs/wsdg_html_chunked/,这个官方文档内容比较详实,但是我还是喜欢从代码里面找帮助文档。。
1、wireshark代码结构:
从我的观点看,我们暂时关注上面标注的四个文件夹就可以了,
doc:帮助文档
epan:核心代码,全部的协议解析都在其下的dissector下。名字由来,epan.h中有解释:Ethereal Packet ANalyzer
plugins:插件代码
UI:wireshark界面
如果你是想做协议解析开发或者了解,也许只要看doc和epan文件夹就好了,毕竟不需要看页面啥样。
2、帮助文档看啥哩?
README.design:wireshark设计文档
README.developer:开发者阅读文档,主要是规范
README.capture:抓包文档
README.dissector:协议解析文档
1)README.design:
作者开门见山,README.developer才是最全的设计文档,但是它只是对添加一个新的协议解析器有帮助,并没有介绍整个wireshark的核心部分,所以有了这个README.design。可惜里面只介绍了一些大概,而且文档有些陈旧。
- 每个wireshark有一个cfile对象,表明打开的文件(或者从驱动取包)
- cfile里面有一个plist成员,指向所有的链路层数据frame_data
- 每个frame_data都有一个指针,指向下一个,自己形成链表结构而已(最新的代码好像没有这个指针了)
- wtap_seek_read负责读取到内存
- epan_dissect_new负责解析
2)README.developer:
这个文档主要是针对wireshark的开发者约定的一些内容。注意假设你想参与到wireshark开发阵营,这个文档对你才有大的帮助,如果只是想阅读以下他的代码,也许就没有那么多的作用了。
各个文档的内容介绍
You'll find additional information in the following README files:
- README.capture - the capture engine internals
- README.design - Wireshark software design - incomplete(也指出了design文档是不全面的)
- README.developer - this file
- README.dissector - How to dissect a packet
- README.display_filter - Display Filter Engine
- README.idl2wrs - CORBA IDL converter
- README.packaging - how to distribute a software package containing WS
- README.regression - regression testing of WS and TS
- README.stats_tree - a tree statistics counting specific packets
- README.tapping - "tap" a dissector to get protocol specific events
- README.xml-output - how to work with the PDML exported output
- wiretap/README.developer - how to add additional capture file types to Wiretap
剩下的都是对开发者的一些约定
Portability:全是为了可移植性,跨平台性的一些规则设置 Don't,Not。。。。。
- 例如不能用//做注释;
- 不能在声明变量的时候初始化;
- 不能用union结构;
- 不能使用uchar,ushort这些变量,所以wireshark都是用的guint32这些glib库的变量
String handling:字符串的一部分处理内容,主要是推荐了一部分字符串处理函数,避免使用自己的编译环境的库函数,影响跨平台。
Robustness:对维护程序 强壮稳定性做了一些规定
Name convention:命名规范,所有的函数名都使用下划线的命名规范,不要类似java使用InterCapConvention大小写夹杂的方式
White space convention:啊哦,世界性难题,这里规定了,也算是约定,4个空格最好
Compiler warnings:规定编译告警级别
Miscellaneous notes:等等等。。
3)README.capture:
文档主要介绍了wireshark的抓包机制,内容没有深入的去读,毕竟这部分不是我关心的,简单的大意就是wireshark没有自己做抓包驱动,全部使用的libpcap/winpcap库去抓的数据报文。
wireshark自己会创建两个线程,一个负责抓包,一个负责解析,抓包线程和解析线程会通过一个“pipe”通信,类似发送抓到包啦等信息。抓包线程会将报文缓存到临时文件,解析线程负责读取。
内容不做过多介绍,大家如果有了解,可以补充给我一下。
4)README.dissector:
重头戏来了,这部分就是wireshark的核心,协议解析模块的介绍。文档主要分为两部分:
Setting up your protocol dissector code:
这部分主要介绍了如何创建一个自己的协议解析器,以及wireshark提供的丰富的无比强大的接口函数,从获取报文、提取报文每个字段内容、展示到UI界面、创建protocol tree都做了详细的介绍。
最为可贵的是,他们还提供了一个协议解析器的范例:packet-PROTOABBREV.c,也许你只要把这个骨架拷贝出一个新文件,按照他们的接口,填充一些血肉,就成为一个完整的解析器了。
Advanced dissector topics:
主部分主要是介绍的一些高级功能,例如如何处理类似ftp的父子连接(conversations),tcp,udp的报文重组,ptvcursors快速开发模式等内容
README.dissector是wireshark的核心内容,后面会有单独的文章做介绍,后续完成后会一一贴给大家。
阅读全文
0 0
- wireshark源码探索No.2---文档
- wireshark源码探索No.3---README.dissector文档
- wireshark源码探索No.5---wireshark的流管理
- wireshark源码探索No.4---packet-ftp.c源码分析
- wireshark源码探索No.1---编译,调试,阅读
- 【探索wireshark】 熟悉GTK+
- 2-Nancy文档教程--探索NANCY MODULE
- Linux Kernel - 探索Ram Disk 驱动(2) - 源码探索
- Wireshark源码编译总结
- linux编译wireshark源码
- wireshark源码vs2008编译
- wireshark源码编译
- ubuntu wireshark 源码安装
- 源码探索系列2---深入解析AsyncTask
- Blade源码深入探索2--server
- 【探索wireshark】 构建和配置开发环境
- (转)【探索wireshark】 熟悉GTK+
- wireshark源码 windows下编译
- vs2015搭建cocos2dx遇到的问题
- jsoup例子
- jquery的zTree
- 饿
- 模板:快速幂
- wireshark源码探索No.2---文档
- hibernate配置二级缓存三种方式
- 生产者---消费者模型之信号量
- 【Matlab】图像插值函数interp2理解
- 从零开始学_JavaScript_系列(37)——让浏览器支持es7特性
- pyspark写法总结
- Android多页面开发
- Ubuntu14.04下安装wechat(微信)
- 初识Gradle