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

📄 packetah.cpp

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


#pragma hdrstop

#include "PacketAH.h"
#include "Functions.h"
#include "PacketICMP.h"
#include "PacketIGMP.h"
//#include "PacketDVMRP.h"
#include "PacketTCP.h"
#include "PacketUDP.h"
//---------------------------------------------------------------------------
/*const int AH_Prot_ICMP      = 1;
const int AH_Prot_IGMP      = 2;
const int AH_Prot_DVMRP      = 2;
const int AH_Prot_TCP       = 6;
const int AH_Prot_UDP       = 17; */

#pragma package(smart_init)
void PacketAHParser(unsigned char *p_data,int index,Layer layer,Sel *SelInfo,NodeInfo *nodes0,
  NodeInfo *nodes1,NodeInfo *nodes2,TTreeView *tvPacket,unsigned int datalength)
  {
    TTreeNode *mNodex;
    //int prot;
    String Length;
    PACKET_AH PAh;
    unsigned int PreviousHttpSequence;
    unsigned short LastTftpPort;

    mNodex = tvPacket->Items->Add(tvPacket->Selected,"AH ( Authentication Header )");
    nodes0->Node[layer.layer1] = mNodex;

    SelInfo->Start1[layer.layer1] = index;

    if((index+12)>datalength){
        tvPacket->Items->AddChild(mNodex,"[ Malformed AH packet. Remaining bytes don't fit an AH packet. Possibly due to bad decoding ]");
        return;
    }
    PAh.NextHeader = *(p_data+index);
    SelInfo->Start2[layer.layer1][0] = index;
    index += 1;
    SelInfo->End2[layer.layer1][0] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"NextHeader               : 0x"+IntToHex(PAh.NextHeader,2)+" ( "+IntToStr(PAh.NextHeader)+" ) ");

    PAh.Length = *(p_data+index);
    SelInfo->Start2[layer.layer1][1] = index;
    index += 1;
    SelInfo->End2[layer.layer1][1] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Length                   : 0x"+IntToHex(PAh.Length,2)+" ( "+IntToStr(PAh.Length)+" ) ");
    Length = IntToHex(PAh.Length,2);

    PAh.Reserved = Get2Bytes(p_data,index,1);
    SelInfo->Start2[layer.layer1][2] = index;
    index += 2;
    SelInfo->End2[layer.layer1][2] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"Reserved                 : 0x"+IntToHex(PAh.Reserved,4)+" ( "+PAh.Reserved+" ) ");

    PAh.SecurityParametersIndex = Get4Bytes(p_data,index,1);
    SelInfo->Start2[layer.layer1][3] = index;
    index += 4;
    SelInfo->End2[layer.layer1][3] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mNodex,"SecurityParametersIndex  : 0x"+IntToHex((int)PAh.SecurityParametersIndex,8)+" ( "+PAh.SecurityParametersIndex+" ) ");

    PAh.SequenceNumber = 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(mNodex,"SequenceNumber           : 0x"+IntToHex((int)PAh.SequenceNumber,8)+" ( "+PAh.SequenceNumber+" ) ");
    SelInfo->End1[layer.layer1] = index;
    
   /* if(PAh.NextHeader ==1){
        layer.layer1 += 1;
	    PacketICMPParser(p_data,index,datalength,layer,SelInfo,nodes0,nodes1,nodes2,tvPacket);
        }
     else if(PAh.NextHeader ==2){
        layer.layer1 += 1;
	    PacketIGMPParser(p_data,index,layer,datalength,SelInfo,nodes0,nodes1,nodes2,tvPacket);
        }
    else if(Length =="c0"){
        layer.layer1 += 1;
	    PacketDVMRPParser(p_data,index,layer,datalength,SelInfo,nodes0,nodes1,nodes2,tvPacket);
        }
    else if(PAh.NextHeader ==6){
        layer.layer1 += 1;
	   PacketTCPParser(p_data,index,PreviousHttpSequence,layer,datalength,SelInfo,nodes0,nodes1,nodes2,tvPacket);
        }
    else if(PAh.NextHeader ==17){
        layer.layer1 += 1;
	    PacketUDPParser(p_data,index,LastTftpPort,layer,datalength,SelInfo,nodes0,nodes1,nodes2,tvPacket);
        } */

}

⌨️ 快捷键说明

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