/// <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); } }
private void RIP(RipPacket rip) { if (rip == null) { return; } if (RipNode == null) { RipNode = CreatNode("RIP", 7); } RipNode.Nodes.Clear(); RipNode.Nodes.Add("Command: " + rip.Command + " [0x" + ((ushort)rip.Command).ToString("X2") + "]"); string verStr = (rip.Version == 1) ? "RIPv1" : "RIPv2"; RipNode.Nodes.Add("Version: " + verStr + " (" + rip.Version + ")"); RipNode.Nodes.Add("0000 0000 0000 0000 = Reserved Bits"); if (rip.RouterItem.Count > 0) { foreach (var i in rip.RouterItem) { string addressFamilyStr = (i.AddressFamily == 2) ? "IPv4 (" + i.AddressFamily + ")" : i.AddressFamily.ToString(); TreeNode tp = new TreeNode("[Family: " + addressFamilyStr + "] [Address: " + i.IPaddress + "] [Metric: " + i.Metric + "]"); tp.Nodes.Add("Address Family: " + addressFamilyStr); string routerTag = (rip.Version == 1) ? "0000 0000 0000 0000 = Reserved Bits" : "Router Tag: " + i.RouteTag; tp.Nodes.Add(routerTag); tp.Nodes.Add("IP Address: " + i.IPaddress); string mask = (rip.Version == 1) ? "0000 0000 0000 0000 0000 0000 0000 0000 = Reserved Bits" : "Net Mask: " + i.NetMask; tp.Nodes.Add(mask); string nextHops = (rip.Version == 1) ? "0000 0000 0000 0000 0000 0000 0000 0000 = Reserved Bits" : "Next Hops: " + i.NextHop; tp.Nodes.Add(nextHops); tp.Nodes.Add("Metric: " + i.Metric); RipNode.Nodes.Add(tp); } } Tree.Nodes.Add(RipNode); }