📄 ipexport.c
字号:
break;
default:
sprintf(itemsg,"Type= %d",icmphdr.type);
};
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+0,1));
// code
switch(icmphdr.type)
{
case 3:
{
switch(icmphdr.code)
{
case 0 : // net unreachable;
sprintf(itemsg,"Code= %d (net unreachable)",icmphdr.code);
break;
case 1 : // host unreachable;
sprintf(itemsg,"Code= %d (host unreachable)",icmphdr.code);
break;
case 2 : // protocol unreachable;
sprintf(itemsg,"Code= %d (protocol unreachable)",icmphdr.code);
break;
case 3 : // port unreachable;
sprintf(itemsg,"Code= %d (port unreachable)",icmphdr.code);
break;
case 4 : // fragmentation needed and DF set;
sprintf(itemsg,"Code= %d (fragmentation needed and DF set)",icmphdr.code);
break;
case 5 : // source route failed.
sprintf(itemsg,"Code= %d (source route failed)",icmphdr.code);
break;
default:
sprintf(itemsg,"Code= %d ",icmphdr.code);
};
}break;
case 11:
{
switch(icmphdr.code)
{
case 0 : // time to live exceeded in transit;
sprintf(itemsg,"Code= %d (time to live exceeded in transit)",icmphdr.code);
break;
case 1 : // fragment reassembly time exceeded;
sprintf(itemsg,"Code= %d (fragment reassembly time exceeded)",icmphdr.code);
break;
default:
sprintf(itemsg,"Code= %d ",icmphdr.code);
};
}break;
case 12:
{
switch(icmphdr.code)
{
case 0 : // time to live exceeded in transit;
sprintf(itemsg,"Code= %d (pointer indicates the error)",icmphdr.code);
break;
default:
sprintf(itemsg,"Code= %d ",icmphdr.code);
};
}break;
case 5:
{
switch(icmphdr.code)
{
case 0 : // Redirect datagrams for the Network;
sprintf(itemsg,"Code= %d (Redirect datagrams for the Network)",icmphdr.code);
break;
case 1 : // Redirect datagrams for the Host;
sprintf(itemsg,"Code= %d (Redirect datagrams for the Host)",icmphdr.code);
break;
case 2 : // Redirect datagrams for the Type of Service and Network;
sprintf(itemsg,"Code= %d (Redirect datagrams for the Type of Service and Network)",icmphdr.code);
break;
case 3 : // Redirect datagrams for the Type of Service and Host;
sprintf(itemsg,"Code= %d (Redirect datagrams for the Type of Service and Host)",icmphdr.code);
break;
default:
sprintf(itemsg,"Code= %d ",icmphdr.code);
};
}break;
default:
sprintf(itemsg,"Code= %d ",icmphdr.code);
};
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+1,1));
// check sum
sprintf(itemsg,"Checksum= %d",icmphdr.checksum);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+2,2));
}// ICMP head
/* -------------------- ICMP data ------------------------ */
if(buflen-4>0)
{
sprintf(itemsg,"Data");
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos+4,buflen-4));
switch(icmphdr.type)
{
case 0: // Echo Reply
case 8: // Echo
case 15: // Information Request
case 16: // Information Reply
{
sprintf(itemsg,"Identifier= %d",icmphdr.echo.id);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,2));
sprintf(itemsg,"Sequence Number= %d",icmphdr.echo.sequence);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+6,2));
if(icmphdr.type==0||icmphdr.type==8)
{
if(buflen-8>0)
{
sprintf(itemsg,"Internet Header + 64 bits of Original Data Datagram");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,buflen-8));
}
}
}break;
case 3: // Destination Unreachable
{
sprintf(itemsg,"unused");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,2));
sprintf(itemsg,"MTU");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+6,2));
if(buflen-8>0)
{
sprintf(itemsg,"Internet Header + 64 bits of Original Data Datagram");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,buflen-8));
}
}break;
case 4: // Source Quench
case 11: // Time Exceeded
{
sprintf(itemsg,"unused");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,4));
if(buflen-8>0)
{
sprintf(itemsg,"Internet Header + 64 bits of Original Data Datagram");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,buflen-8));
}
}break;
case 5: // Redirect
{
sprintf(itemsg,"Gateway= %d",icmphdr.gateway);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,4));
if(buflen-8>0)
{
sprintf(itemsg,"Internet Header + 64 bits of Original Data Datagram");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,buflen-8));
}
}break;
case 12: // Parameter Problem
{
sprintf(itemsg,"Pointer= %d",icmphdr.pointer);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,1));
sprintf(itemsg,"unused");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+5,3));
if(buflen-8>0)
{
sprintf(itemsg,"Internet Header + 64 bits of Original Data Datagram");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,buflen-8));
}
}break;
case 13: // Timestamp
case 14: // Timestamp Reply
{
sprintf(itemsg,"Identifier= %d",icmphdr.echo.id);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,2));
sprintf(itemsg,"Sequence Number= %d",icmphdr.echo.sequence);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+6,2));
sprintf(itemsg,"Originate Timestamp= %d",icmphdr.OTm_stamp);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,4));
sprintf(itemsg,"Receive Timestamp= %d",icmphdr.RTm_stamp);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+12,4));
sprintf(itemsg,"Transmit Timestamp= %d",icmphdr.TTm_stamp);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+16,4));
}break;
default:
{
};
};
}// ICMP data
}// ICMP
/* -------------------- end of export ------------------------ */
}
void ExportTree_ETH_IP_IGMP(
ACHETREE *lptree,
unsigned short curpos,
unsigned char *lpbuf, unsigned short buflen) // 2, internet group management protocol
{
char itemsg[256];
ACHETREE *subitem, *rootitem;
IGMPHDR igmphdr;
BufGetIGMPhdr(&igmphdr,lpbuf);
/* -------------------- IGMP header ------------------------ */
sprintf(itemsg,"IGMP [length= %d]",buflen);
rootitem = AcheTreeInsertItem(lptree,itemsg,-1);
SetAcheTreeData(rootitem,ACHETREE_ITEMDATA(curpos,buflen));
// check sum
sprintf(itemsg,"Version= %d",igmphdr.version);
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos,1));
// type
switch(igmphdr.type)
{
case 1: // Echo Reply
sprintf(itemsg,"Type= %d (Host Membership Query)",igmphdr.type);
break;
case 2: // Destination Unreachable
sprintf(itemsg,"Type= %d (Host Membership Report)",igmphdr.type);
break;
default:
sprintf(itemsg,"Type= %d",igmphdr.type);
};
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos,1));
// Unused
sprintf(itemsg,"Unused= %d",igmphdr.unused);
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos+1,1));
// Checksum
sprintf(itemsg,"Checksum= %d",igmphdr.checksum);
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos+2,2));
// Group Address
sprintf(itemsg,"Group Address= %u (%d.%d.%d.%d)",
igmphdr.checksum,
(igmphdr.checksum>>24)&0xFF,
(igmphdr.checksum>>16)&0xFF,
(igmphdr.checksum>>8)&0xFF,
(igmphdr.checksum)&0xFF
);
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos+4,4));
/* -------------------- end of export ------------------------ */
}
void ExportTree_ETH_IP_GGP(
ACHETREE *lptree,
unsigned short curpos,
unsigned char *lpbuf, unsigned short buflen) // 3, gateway^2 (deprecated)
{
}
void ExportTree_ETH_IP_IPIP(
ACHETREE *lptree,
unsigned short curpos,
unsigned char *lpbuf, unsigned short buflen) /* 4, IPIP tunnels (older KA9Q tunnels use 94). */
{
}
void ExportTree_ETH_IP_TCP(
ACHETREE *lptree,
unsigned short curpos,
unsigned char *lpbuf, unsigned short buflen) // 6, tcp
{
char itemsg[256];
ACHETREE *subsubitem, *subitem, *rootitem;
TCPHDR tcphdr;
int freei;
BufGetTCPhdr(&tcphdr,lpbuf);
/* -------------------- TCP ------------------------ */
sprintf(itemsg,"TCP [length= %d]",buflen);
rootitem = AcheTreeInsertItem(lptree,itemsg,-1);
SetAcheTreeData(rootitem,ACHETREE_ITEMDATA(curpos,buflen));
{
/* -------------------- UDP header ------------------------ */
sprintf(itemsg,"Head [length= %d]",20);
subitem=AcheTreeInsertItem(rootitem,itemsg,-1);
SetAcheTreeData(subitem,ACHETREE_ITEMDATA(curpos,20));
{
/* Source port */
sprintf(itemsg,"Source port= %d",tcphdr.sport);
for(freei=0;freei<MAX_POPULERPORT;freei++)
{
if(populer_port[freei].type==tcphdr.sport)
{
sprintf(itemsg,"Source port= %d [%s]",tcphdr.sport,populer_port[freei].info);
break;
}
}
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos,2));
/* Destination port */
sprintf(itemsg,"Destination port= %d",tcphdr.dport);
for(freei=0;freei<MAX_POPULERPORT;freei++)
{
if(populer_port[freei].type==tcphdr.dport)
{
sprintf(itemsg,"Destination port= %d [%s]",tcphdr.dport,populer_port[freei].info);
break;
}
}
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+2,2));
/* Sequence number */
sprintf(itemsg,"Sequence number= %u",tcphdr.seq);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+4,4));
/* Acknowledgement number */
sprintf(itemsg,"Acknowledgement number= %u",tcphdr.ack);
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+8,4));
/* Data offset + reserved */
sprintf(itemsg,"Data offset+reserved+flag");
subsubitem=AcheTreeInsertItem(subitem,itemsg,-1);
SetAcheTreeData(subsubitem,ACHETREE_ITEMDATA(curpos+12,2));
{
ACHETREE *tmpitem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -