1.版权声明

本系列文章是本人花了很多心血写成,wireshark本是开源软件,本人也乐于技术知识和经验的分享,更是欣赏和推崇开源精神,因此任何看到本文的人都可以随意转载,但只有一个要求:

在大段甚至全文引用本系列文章内容的情况下,需要保留本人网名(赵子清)和本博客地址的全部或一部分(http://www.cnblogs.com/zzqcn)。

2.引言

Wireshark是一款优秀的开源协议分析软件,多年来,全球无数开发者为Wireshark编写了数千种协议的解析插件(版本1.12.6已有1500余种),再加上强大易用的分析功能,使其几乎成为协议分析相关人员必备的工具之一。

然而,并没有一种工具可以完全满足所有用户的需要,强大如Wireshark者,也是如此。尤其对于专业的协议分析、安全人员来说,在实际的工作中,往往需要分析某些私有协议的报文,或者用到官方wireshark没有提供的某些功能;而某些开发人员,则需要将Wireshark的报文解析功能移植到自己的应用场景中……这一切,都需要我们在理解Wireshark工作原理的基础上,对其进行二次开发。

Wireshark的两大特点使二次开发比较容易:

  • 代码是开源的
  • 提供了插件机制(C/Lua)

本系列文章,就是为了介绍如何进行wireshark二次开发而写的。

3.主要内容与约定

要对wireshark进行二次开发,必须先了解wireshark的基本工作原理,以及它提供的插件接口(Lua, C)。本系列文章首先介绍了wireshark的基本原理,之后介绍了Lua插件和C插件的编写,最后介绍如何对wireshark进行修改,加入定制化功能。

对于一般的开发人员来说,学会如何编写wireshark插件就可以了,这种情况往往是需要写一个新协议的解析器,完成某种数据统计之类;而对于某些想要加入自定义功能的人来说,则必须对wireshark主要代码进行修改。

本系列文章所有涉及到代码开发的地方都会给出示例和运行结果,且都在Windows和MacOSX上进行了验证,但是例子仅仅是例子,可能功能比较简单,代码格式也比较不规范。另外对于原理的描述,本人也正在学习过程中,有些原理描述可能浅尝辄止,甚至有些小错误,也是在所难免,敬请原谅和批评指正。

4.文章索引

【wireshark】总体结构

【wireshark】抓包和文件格式支持

【wireshark】协议解析

【wireshark】开发环境搭建

【wireshark】插件开发(一):概述

【wireshark】插件开发(二):Lua插件开发介绍

【wireshark】插件开发(三):Lua插件 Dissector

【wireshark】插件开发(四):Lua插件Post-dissector和Listener

【wireshark】Wireshark原理分析与二次开发系列的更多相关文章

  1. Faster RCNN原理分析(二):Region Proposal Networks详解

    Faster RCNN原理分析(二):Region Proposal Networks详解 http://lib.csdn.net/article/deeplearning/61641 0814: A ...

  2. Spring事务原理分析-部分二

    Spring事务原理分析-部分二 说明:这是我在蚂蚁课堂学习了余老师Spring手写框架的课程的一些笔记,部分代码代码会用到余老师的课件代码.这不是广告,是我听了之后觉得很好. 课堂链接:Spring ...

  3. EcShop二次开发系列教程–总纲

    EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...

  4. Tiptop二二次开发系列

    易拓GP 4gl二二次开发系列.使用文档工具的深度开发,包装分享. 包含文件: Genero BDL HB 2.0 .pdf Genero Studio 4GL官方开发手冊.pdf 下载地址:http ...

  5. Scratch3 二次开发系列

       Scratch3.0来啦!!! Scratch做为图像化编程的首选语言,拖过积木块搭建实现动画游戏的制作.Scratch3添加了音乐.画笔.视频侦测.文字朗读.翻译等选择性下载扩展积木,可实现积 ...

  6. Mybatis插件原理分析(二)

    在上一篇中Mybatis插件原理分析(一)中我们主要介绍了一下Mybatis插件相关的几个类的源码,并对源码进行了一些解释,接下来我们通过一个简单的插件实现来对Mybatis插件的运行流程进行分析. ...

  7. Java NIO使用及原理分析(二)

    在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如 ...

  8. Mybatis接口编程原理分析(二)

    在上一篇博客中 Mybatis接口编程原理分析(一)中我们介绍了MapperProxyFactory和MapperProxy,接下来我们要介绍的是MapperMethod MapperMethod:它 ...

  9. Java NIO使用及原理分析(二)(转)

    在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如 ...

随机推荐

  1. How to Set Up an Rsync Daemon on Your Linux Server

    Introduction This tutorial will take you through setting up an rsync daemon on your Linux server. Yo ...

  2. 在Excel中根据某一个单元格的出生日期自动精确计算年龄

    =IF(MONTH(NOW())<MONTH(G4),INT(YEAR(NOW())-YEAR(G4))-1,IF(MONTH(NOW())>MONTH(G4),YEAR(NOW())-Y ...

  3. li.active2有加强重要性的效果。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. PTA第五次作业

    #include<stdio.h> #include<math.h> int main () { int n,m,i,j,a; scanf("%d",&am ...

  5. springboot问题,没有主清单属性

    在pom.xml中添加 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins< ...

  6. C++之类和对象的使用(二)

    析构函数 析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一系列清理工作,使这部分内存可以被程序分配给新对象使用.对象生命周期结束,程序就自动执行析构函数来完成这些工作. 析构函数是一种 ...

  7. UVa 210 Concurrency Simulator (双端队列+模拟)

    题意:给定n个程序,每种程序有五种操作,分别为 var = constant(赋值),print var (打印), lock, unlock,end. 变量用小写字母表示,初始化为0,为程序所公有( ...

  8. http://localhost:8080/hello?wsdl

    <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-u ...

  9. 20155320 2016-2017-2 《Java程序设计》第六周学习总结

    20155320 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 输入输出 InputStream的read()方法每次都会尝试读入byte数组长度的数据,并 ...

  10. line tension

    <!DOCTYPE html> <html> <head> <title>tension</title> <script type=& ...