wireshark插件开发小结

关键字:wireshark,  plugin, lua,protocol


概述

wireshark是非常流行的网络封包分析软件,功能十分强大。可以抓取各种网络包,并显示网络包的详细信息。

为什么使用wireshark

Troubleshoot network problems   定位网络问题

Debug protocol implementations  调试自己实现的协议

Learn network protocol internals 分析协议内部实现

分析网络性能

网络端点,统计每个端点的地址、发送或收到的数据包的数量和字节数。  

网络会话,统计地址A 和地址B 端点间会话的发送或收到的数据包的数量和字节数。

协议分层,可查看各种协议的分布统计情况。

数据包长度分析。

架构

Wireshark是分析网络数据的利器,也是掌握计算机网络的工具。wireshark用C语言开发,架构合理。

wireshark从网络协议栈拷贝网络包,可以保存为pcap文件。

wireshark插件开发小结_第1张图片

wireshark 内部实现

wireshark插件开发小结_第2张图片wireshark插件开发小结_第3张图片

Plugin dissector

Decodes protocols that are newly added.  解析新的网络协议

Faster rebuilds and bug correction. (Due to stand alone librariesgenerated for each plugin dissector)‏ 每个插件是单独的dll文件,这样可以快速替换插件,加快插件开发速度。

插件文件路径 : 安装目录/plugins/ 

Wiretap

used to read/write capture files       pcap文件读写 

winpcap     (windows packet capture)是windows平台下一个免费,公共的网络访问系统。winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。

插件(plugin)

Wireshark使用C语言编写而成,它支持动态链接库形式的插件扩展。除此之外,wireshark内置了Lua脚本引擎,可以使用Lua脚本语言编写dissector插件。

 Wireshark lua proto API

function

description

Proto.new(name, desc)

Creates a new protocol

proto.dissector

The protocol's dissector

proto.fields

The Fields Table of this dissector

proto.prefs

The preferences of this dissector

proto.prefs_changed

The preferences changed routine of this dissector

proto.init

The init routine of this dissector

proto.name

The name given to this dissector

proto.description

The description given to this dissector

 Proto主要用途是声明一个新的协议,进而可以给它编写解析器函数

 Wireshark提供了25种函数可以创建各种类型字段。

 dissector函数的第一个参数buffer对应需要解析的二进制码流,第二个参数pinfo对应Packet List窗口的信息,tree是Packet Details窗口的树结构。

 DissectorTable就是若干协议解析器(Dissector)汇集成Table,Wireshark默认支持了一系列 Dissector和DissectorTable。例如TCP端口号21是FTP协议采用的端口,wireshark遇到这种消息将自动调用FTP协议解析器来处理。

Udp协议字段示例

wireshark插件开发小结_第4张图片

插件开发流程

  •  创建一个Proto的对象,表示一种协议 
  •  创建几个ProtoField对象 
  •  把ProtoField对象加入到Proto里面 
  •  协议的解析函数dissector,收到相关数据包后,会调用 
  •  把自定义解析函数注册到解析器表DissectorTable 

 使插件生效,可以参考下面参考文档。

参考

Extending Wireshark For A NewProtocol.ppt

https://wiki.wireshark.org/LuaAPI/Proto

用lua语言编写wireshark插件解析OpenFlow协议        http://yuanjian.sinaapp.com/?p=242

使用Lua编写wireshark自定义协议解析插件       http://iqm.qq.com/list/article/80




你可能感兴趣的:(测试,软件,网络)