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

📄 packetdhcp.cpp

📁 protocol
💻 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 + -