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


    1. 概述

    wireshark提供了灵活的插件机制,使用户可以方便地扩展wireshark的功能。插件的功能主要包括,但不限于协议解析器。

    可以使用Lua或C语言来编写Wireshark插件,下表对比了这两种方式,绿色背景代表占优的一方。

    对比项目 C插件 Lua插件
    开发难度 容易,只需要了解Lua语言
    开发语言 难以掌握的C 轻巧方便的Lua
    开发环境 C编译器、第三方库、复杂的环境搭建等等 文本编辑器即可
    代码量
    可测试性 方便
    插件执行速度 非常快 较慢
    可调用的已有功能代码 所有 仅一部分
    部署方式 与主程序一起编译,或插件目录 插件目录

    2. 待分析的杜撰协议

    假定我们要分析一个私有协议Foo,这个协议使用UDP端口9877传输数据,其报文格式如下表所示,括号内为字节数:

    type (1)

    1 - 初始化

    2 - 终止

    3 - 数据

    flag (1)

    …….1 正常

    ……1. 拥塞

    …..1..  优先

    seqNo (2)

    包序号

    ipAddr (4)

    IP地址

    Data

    不定长数据

    产生此协议报文的C++程序如下(for VC++ on Windows)

    // TODO:代码待修改


    #include <WinSock2.h> #include <stdio.h> #include <time.h> #pragma comment(lib, "ws2_32.lib") #define UDP_PORT_FOO 9877 struct proto_foo { UINT8 type; UINT8 flags; UINT16 seqno; UINT32 ipaddr; }; int main(int argc, char** argv) { int ret; SOCKET sockfd; SOCKADDR_IN addr; proto_foo data; INT16 seq = 1; WORD dwVersion = MAKEWORD(2, 2); WSAData wsaData; WSAStartup(dwVersion, &wsaData); sockfd = socket(AF_INET, SOCK_DGRAM, 0); addr.sin_family = AF_INET; addr.sin_port = htons(UDP_PORT_FOO); if(argc < 2) { printf("will send to 220.181.57.217 "); addr.sin_addr.s_addr = inet_addr("220.181.57.217"); } else addr.sin_addr.s_addr = inet_addr(argv[1]); data.ipaddr = 0x04030201; for(;;) { srand((unsigned int)time(NULL)); data.type = rand() % 3 + 1; data.flags = rand() % 4 + 1; if(data.flags == 3) data.flags = 4; data.seqno = htons(seq++); ret = sendto(sockfd, (const char*)&data, sizeof(proto_foo), 0, (SOCKADDR*)&addr, sizeof(addr)); if(SOCKET_ERROR == ret) { printf("sendto error "); break; } Sleep(1000); } closesocket(sockfd); WSACleanup(); return 0; }

    编译并运行以上程序,并用wireshark抓包保存,之后要使用这个pcap文件来测试编写的foo解析插件。

    下面将要两种方式实现foo协议的解析插件,结合这个实例介绍这两种插件的开发方法。

  • 相关阅读:
    20145129 《Java程序设计》第4周学习总结
    20145129 《Java程序设计》第3周学习总结
    20145105 《Java程序设计》第2周学习总结
    linux内核分析——扒开系统调用的三层皮
    Linux内核分析——跟踪分析Linux内核的启动过程
    Linux内核分析——操作系统是如何工作的
    LInux内核分析——计算机是如何工作的进行
    期末总结
    信息安全系统设计基础实验五—20135214万子惠20135227黄晓妍
    第十四周学习总结
  • 原文地址:https://www.cnblogs.com/zzqcn/p/4827251.html
Copyright © 2020-2023  润新知