📄 packetcops.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 + -