我是网络新手,并尝试编写pcap文件比较工具作为学习网络编程的一种方式
这是我的代码片段(我写os.unlink
稍后将在dll
中使用)
c#
正如您所看到的,我已经开始一个接一个地解析标题
(ptt_packet PcapDPI(ptt_ethernetheader puc_PacketData , size_t size)
{
uint8_t *head = (uint8_t*)puc_PacketData;
ptt_ethernetheader ether_header;
ptt_ipheader ip_header;
ptcp_header_t tcp_header;
pudp_header_t udp_header;
ether_header = (ptt_ethernetheader)head;
head += sizeof(*ether_header);
if (0x0800 == ntohs(ether_header->type))/*IP*/
{
ip_header = (ptt_ipheader)head;
head += sizeof(*ip_header);
/* now we need to check if tcp or udp*/
if (ntohs(0x06) == ipProtocolNtohsRes)/*TCP*/
{
//tcp_header = (ptcp_header_t)((uint8_t*)puc_PacketData + 20);
tcp_header = (ptcp_header_t)head;
head += sizeof(*tcp_header);
}
else if (ntohs(0x11) == ipProtocolNtohsRes)/*UDP*/
{
udp_header = (pudp_header_t)head;
head += sizeof(*udp_header);
}
}
)
我的问题是:是否可以在eth->ip->tcp/udp
之外使用wireshark dissectors
甚至更好:有没有人知道一个wireshark
做了填充数据包结构的所有脏工作