📄 packetdhcp.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "PacketDHCP.h"
#include "Functions.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
void PacketDHCPParser(unsigned char *p_data,int index,Layer layer,Sel *SelInfo,NodeInfo *nodes0,
NodeInfo *nodes1,NodeInfo *nodes2,TTreeView *tvPacket,unsigned int datalength)
{
TTreeNode* mmNode;
PACKET_DHCP PDHCP;
mmNode = tvPacket->Items->Add(tvPacket->Selected,"DHCP( Dynamic Host Configuration Protocol )");
nodes0->Node[layer.layer1] = mmNode;
if((index+236)>datalength){
tvPacket->Items->AddChild(mmNode,"[ Malformed DHCP packet. Remaining bytes don't fit an DHCP packet. Possibly due to bad decoding ]");
return;
}
SelInfo->Start1[layer.layer1] = index;
PDHCP.Opcode = *(p_data + index);
SelInfo->Start2[layer.layer1][0] = index;
index +=1;
SelInfo->End2[layer.layer1][0] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Opcode : 0x"+IntToHex(PDHCP.Opcode,2)+" ( "+IntToStr(PDHCP.Opcode)+" )");
PDHCP.Hardwaretype = *(p_data + index);
SelInfo->Start2[layer.layer1][1] = index;
index +=1;
SelInfo->End2[layer.layer1][1] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Hardwaretype : 0x"+IntToHex(PDHCP.Hardwaretype,2)+" ( "+IntToStr(PDHCP.Hardwaretype)+ ")");
PDHCP.Hardwareaddresslength = *(p_data + index);
SelInfo->Start2[layer.layer1][2] = index;
index +=1;
SelInfo->End2[layer.layer1][2] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Hardwareaddresslength : 0x"+IntToHex(PDHCP.Hardwareaddresslength,2)+" ( "+IntToStr(PDHCP.Hardwareaddresslength)+ ")");
PDHCP.Hopcount = *(p_data + index);
SelInfo->Start2[layer.layer1][3] = index;
index +=1;
SelInfo->End2[layer.layer1][3] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Hopcount : 0x"+IntToHex(PDHCP.Hopcount,2)+" ( "+IntToStr(PDHCP.Hopcount)+ ")");
PDHCP.TransactionID = Get4Bytes( p_data ,index,1 );
SelInfo->Start2[layer.layer1][4] = index;
index +=4;
SelInfo->End2[layer.layer1][4] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"TransactionID : 0x"+IntToHex((int)PDHCP.TransactionID,8)+" ( "+PDHCP.TransactionID+")");
PDHCP.Numberofseconds = Get2Bytes( p_data ,index,1 );
SelInfo->Start2[layer.layer1][5] = index;
index +=2;
SelInfo->End2[layer.layer1][5] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Numberofseconds : 0x"+IntToHex(PDHCP.Numberofseconds,4)+" ( "+IntToStr(PDHCP.Numberofseconds)+")");
PDHCP.Flags = Get2Bytes( p_data ,index,1 );
SelInfo->Start2[layer.layer1][6] = index;
index +=2;
SelInfo->End2[layer.layer1][6] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Flags : 0x"+IntToHex(PDHCP.Flags,4)+" ( "+IntToStr(PDHCP.Flags)+")");
PDHCP.ClientIPaddress = GetIpAddress(p_data,index);
SelInfo->Start2[layer.layer1][7] = index;
index +=4;
SelInfo->End2[layer.layer1][7] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"ClientIPaddress : "+PDHCP.ClientIPaddress);
PDHCP.YourIPaddress = GetIpAddress(p_data,index);
SelInfo->Start2[layer.layer1][8] = index;
index +=4;
SelInfo->End2[layer.layer1][8] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"YourIPaddress : "+PDHCP.YourIPaddress);
PDHCP.ServerIPaddress = GetIpAddress(p_data,index);
SelInfo->Start2[layer.layer1][9] = index;
index +=4;
SelInfo->End2[layer.layer1][9] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"ServerIPaddress : "+PDHCP.ServerIPaddress);
PDHCP.GatewayIPaddress = GetIpAddress(p_data,index);
SelInfo->Start2[layer.layer1][10] = index;
index +=4;
SelInfo->End2[layer.layer1][10] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"GatewayIPaddress : "+PDHCP.GatewayIPaddress);
PDHCP.Clienthardwareaddress = GetClientHardwareAddress(p_data,index);
SelInfo->Start2[layer.layer1][11] = index;
index +=16;
SelInfo->End2[layer.layer1][11] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Clienthardwareaddress : "+PDHCP.Clienthardwareaddress);
SelInfo->Start2[layer.layer1][12] = index;
index +=64;
SelInfo->End2[layer.layer1][12] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Serverhostname");
SelInfo->Start2[layer.layer1][13] = index;
index +=128;
SelInfo->End2[layer.layer1][13] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Bootfilename");
SelInfo->Start2[layer.layer1][14] = index;
index = datalength;
SelInfo->End2[layer.layer1][14] = index;
nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Data");
SelInfo->End1[layer.layer1] = index;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -