65.9K
CodeProject 正在变化。 阅读更多。
Home

一个出色的协议分析器

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.39/5 (12投票s)

2007年8月16日

CPOL

2分钟阅读

viewsIcon

41107

downloadIcon

2929

一款可编程、易于使用的协议解码器,用于解析和显示二进制数据包。

Screenshot - 1small.gif

背景

市面上有很多协议分析器(例如 Ethereal、嗅探工具),但仍然很难找到一个支持自定义数据包的解码器。在这里,我们提供这样一个软件的框架,希望对您有所帮助。

引言

协议分析器是一个协议分析工具,用于解析和显示接收到的二进制数据包。它具有易于使用的界面和可编程内核,可以支持各种协议,例如基于 IP 的协议(TCP、UDP 等)、电信协议(MTP3、ISUP、TUP 等),或者您可以定义新的自定义解码器来解析非标准或罕见的协议。

与其他协议分析工具不同,我们创建了高级功能以满足未来的需求,不仅适用于标准协议,也适用于用户自定义协议。
您不必等待很长时间才能发布新的协议解码器,而是可以轻松编写脚本,以在极短的时间内支持新的协议。

它可以作为协议分析器和程序开发人员的消息调试工具,特别是对于那些希望拥有一个支持他们自己的协议或他们自己的帧格式的工具的人,因为找不到其他软件能够满足这种特定需求。

通过理解这个项目,您可以创建自己的协议解码器。或者,您可以从 这里 下载该软件的最新版本、帮助文档并获取更多信息(网站并非总是开放,但不用担心,稍后再试)。

此外,本文演示了如何编译文本脚本以及如何获取语法元素。这在软件开发中可能很有用。

框架

在这里,我们简要描述了如何使用主类。

    /////////////////////////////////////////////
    // 1. Load protocol script ( sample script is give in source folder )
    MsgTranslater Translater;
    bRT=Translater.LoadScript(m_strFilePath.GetBuffer(0));
    if (!bRT)
    {
        AfxMessageBox(Translater.m_strLastError.GetBuffer());
        return;
    }
    ...
    ///////////////////////////////////////////////////////
    // 2. Decode 'buf'
    bRT=Translater.Translate(true,buf,n);
    if (!bRT)
    {
        strLastError=Translater.m_strLastError;
    }
    ...
    ///////////////////////////////////////////////////////
    // 3. Save the result in the VariableItem
    TVariableItem& VariableItem=Translater.GetResult();
    ...
    ///////////////////////////////////////////////////////
    // 4. Dump the result by hierarchy
    VirtualList DataList;
    VariableItem.DumpToList(DataList,Attr);
    ...
    COneLogFile LogFile("Dump\\Tran.txt",true);
    ...
    ///////////////////////////////////////////////////////
    // 5. Display the decoding result 
    FILE *fp;
    long len;
    fp=fopen("Dump\\Tran.txt","rb");
    fseek(fp,0L,2);
    len=ftell(fp);
    fseek(fp,0L,0);
    char *buffer=new char[len+2];
    buffer[len]='\0';
    fread(buffer,len,1,fp);
    GetDlgItem(IDC_MYEDIT)->SetWindowText(buffer);
    delete buffer;
    fclose(fp);
        
    ...

历史

这是版本 0.9,第一个可用的版本,我们仍在不断改进它,因为它可能成为一个非常有用的工具。
您可以访问 http://Aries-studio.vicp.net/soft/default.html 下载最新版本、帮助文档并获取更多信息(网站并非总是开放,但不用担心,稍后再试)。

© . All rights reserved.