⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packetcops.cpp

📁 protocol
💻 CPP
字号:
//---------------------------------------------------------------------------


#pragma hdrstop

#include "PacketCOPS.h"
#include "Functions.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
void PacketCOPSParser(unsigned char *p_data,int index,Layer layer,Sel *SelInfo,NodeInfo *nodes0,
  NodeInfo *nodes1,NodeInfo *nodes2,TTreeView *tvPacket,unsigned int datalength)
  {
  	TTreeNode* mNodex;
    PACKET_COPS PCops;
    unsigned char version;
    unsigned char reserved;
    unsigned char S;
    String Mes;

    mNodex = tvPacket->Items->Add(tvPacket->Selected,"COPS ( Common Open Policy Service )");
    nodes0->Node[layer.layer1] = mNodex;

    SelInfo->Start1[layer.layer1] = index;
    if((index+8)>datalength){
        tvPacket->Items->Add(tvPacket->Selected,"[ Malformed COPS packet. Remaining bytes don't fit an COPS packet. Possibly due to bad decoding ]");
        return;
    }

    PCops.Flags = *(p_data+index);
    version = (unsigned char)(((int)PCops.Flags & 0xf0) >> 4);
    S = (unsigned char)((int)PCops.Flags & 0x01);
    reserved = (unsigned char)(((int)PCops.Flags & 0x0e) >> 1);    
    SelInfo->Start2[layer.layer1][0] = index;
    SelInfo->Start2[layer.layer1][1] = index; 
    SelInfo->Start2[layer.layer1][2] = index;       
    index += 1;
    SelInfo->End2[layer.layer1][0] = index;
    
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Version              : "+IntToStr(version));
      
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Reserved             : "+IntToStr(reserved));
    SelInfo->End2[layer.layer1][1] = index;       
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"S                    : "+IntToStr(S));
    SelInfo->End2[layer.layer1][2] = index;       
      
    PCops.Opcode = *(p_data+index);
    SelInfo->Start2[layer.layer1][3] = index;
    index += 1;
    SelInfo->End2[layer.layer1][3] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Opcode               : 0x"+IntToHex(PCops.Opcode,2)+" ( "+IntToStr(PCops.Opcode)+" ) ");
        
    PCops.ClientType = Get2Bytes(p_data, index, 1);
    SelInfo->Start2[layer.layer1][4] = index;
    index += 2;
    SelInfo->End2[layer.layer1][4] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Client Type          : 0x"+IntToHex(PCops.ClientType,4)+" ( "+IntToStr(PCops.ClientType)+" ) ");
    
    PCops.MessageLength = Get4Bytes(p_data, index, 1);
    SelInfo->Start2[layer.layer1][5] = index;
    index += 4;
    SelInfo->End2[layer.layer1][5] = index;
    Mes = PCops.MessageLength;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Message Length       : 0x"+IntToHex((int)PCops.MessageLength,8)+" ( "+Mes+" ) ");

    SelInfo->Start2[layer.layer1][6] = index;
    index = datalength;
    SelInfo->End2[layer.layer1][6] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Data");
    
    SelInfo->End1[layer.layer1] = index;  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -