private void DHCP(DhcpPackets dhcp) { if (dhcp == null) { return; } if (DhcpNode == null) { DhcpNode = CreatNode("DHCP", 7); } DhcpNode.Nodes.Clear(); string opString = (dhcp.OP == 1) ? "Boot Request" : "Boot Reply"; DhcpNode.Nodes.Add("Op Code: " + opString + " (" + dhcp.OP + ")"); DhcpNode.Nodes.Add("Hareware Type: " + dhcp.HType + " [0x" + ((ushort)dhcp.HType).ToString("X2") + "]"); DhcpNode.Nodes.Add("Hareware Address Length: " + dhcp.HLen); DhcpNode.Nodes.Add("Hops: " + dhcp.Hops); DhcpNode.Nodes.Add("XID: " + dhcp.XID); DhcpNode.Nodes.Add("Seconds: " + dhcp.Secs.ToString()); if (DhcpFlagsNodes == null) { DhcpFlagsNodes = new TreeNode(); } DhcpFlagsNodes.Nodes.Clear(); DhcpFlagsNodes.Text = "Flags: 0x" + dhcp.Flags.ToString("X2"); string unicast = (dhcp.Unicast == 0) ? "No Broadcast" : "Broadcast"; DhcpFlagsNodes.Nodes.Add(dhcp.Unicast.ToString() + "... .... .... .... = " + unicast); DhcpFlagsNodes.Nodes.Add(".000 0000 0000 0000 = Reserved Flags"); DhcpNode.Nodes.Add(DhcpFlagsNodes); DhcpNode.Nodes.Add("Client IP Address: " + dhcp.CiAddr); DhcpNode.Nodes.Add("Your IP Address: " + dhcp.YiAddr); DhcpNode.Nodes.Add("Server IP Address: " + dhcp.SiAddr); DhcpNode.Nodes.Add("Relay agent IP Address: " + dhcp.GiAddr); DhcpNode.Nodes.Add("Client Hard Address: " + dhcp.CHaddr); DhcpNode.Nodes.Add("Server host name: " + dhcp.SName); DhcpNode.Nodes.Add("Boot file name: " + dhcp.File); //选项字段 if (!string.IsNullOrEmpty(dhcp.MagicCookie)) { DhcpNode.Nodes.Add("Magic Cookie: " + dhcp.MagicCookie); foreach (var i in dhcp.Option) { TreeNode tre = new TreeNode("Option: [Type= " + i.Type + " 0x" + ((ushort)i.Type).ToString("X2") + "] [Length= " + i.Length.ToString() + "]"); tre.Name = "DHCP_OP"; tre.Nodes.Add("Option Type: " + i.Type + " [0x" + ((ushort)i.Type).ToString("X2") + "]"); tre.Nodes.Add("Length: " + i.Length.ToString()); tre.Nodes.Add("Value: 0x" + i.value); DhcpNode.Nodes.Add(tre); } } Tree.Nodes.Add(DhcpNode); }
/// <summary> /// 添加应用层协议 /// </summary> /// <param name="payloadData">载荷数据</param> /// <param name="SourcePort">源端口</param> /// <param name="DestinationPort">目的端口</param> private void AppNode(byte[] payloadData, ushort SourcePort, ushort DestinationPort) { if (payloadData.Length == 0) { return; } AppsrcPort = SourcePort; AppdstPort = DestinationPort; //HTTP 80 if (isAnalysProtocol(80)) { HttpPacket http = new HttpPacket(payloadData); Http(http); } //smtp 25 else if (isAnalysProtocol(25)) { SmtpPacket smtp = new SmtpPacket(payloadData); SMTP(smtp); } //pop3 110 else if (isAnalysProtocol(110)) { Pop3Packet pop3 = new Pop3Packet(payloadData); POP3(pop3); } //DNS 53 else if (isAnalysProtocol(53)) { DnsPacket dns = new DnsPacket(payloadData); DNS(dns); } //ftp 21 else if (isAnalysProtocol(21)) { FtpPacket ftp = new FtpPacket(payloadData); FTP(ftp); } //DHCP 67 68 else if (isAnalysProtocol(67) || isAnalysProtocol(68)) { DhcpPackets dp = new DhcpPackets(payloadData); DHCP(dp); } else if (isAnalysProtocol(520)) { RipPacket rp = new RipPacket(payloadData); RIP(rp); } //ssdp 1900 else if (isAnalysProtocol(1900)) { SSDPPacket ssdp = new SSDPPacket(payloadData); SSDP(ssdp); } }