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

📄 packetdns.cs

📁 一个抓包工具
💻 CS
📖 第 1 页 / 共 2 页
字号:
				mNode1.Nodes.Add( FlagsArray[ i ] );
			mNode.Nodes.Add( mNode1 );

			Tmp = "Questions :" + Function.ReFormatString( PDns.Questions , null );
			mNode.Nodes.Add( Tmp );

			Tmp = "Answer RRS :" + Function.ReFormatString( PDns.AnswerRRS , null );
			mNode.Nodes.Add( Tmp );

			Tmp = "Authority RRS :" + Function.ReFormatString( PDns.AuthorityRRS , null );
			mNode.Nodes.Add( Tmp );

			Tmp = "Additional RRS :" + Function.ReFormatString( PDns.AdditionalRRS , null );
			mNode.Nodes.Add( Tmp );

			if( PDns.Questions > 0 )
			{
				mNode1 = new TreeNode();
				mNode1.Text = "QUERIES";

				for( i = 1; i <= PDns.Questions; i ++ )
				{
					mNode2 = new TreeNode();
					mNode2.Text = "Query Record " + i.ToString();

					Tmp = "Name :" + PDns.QuestionObject[i-1].Name;
					mNode2.Nodes.Add( Tmp );

					Tmp = "Type : " + Function.ReFormatString( PDns.QuestionObject[i-1].Type , PDns.QuestionObject[i-1].TypeStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Class : " + Function.ReFormatString( PDns.QuestionObject[i-1].Class , PDns.QuestionObject[i-1].ClassStr );
					mNode2.Nodes.Add( Tmp );

					mNode1.Nodes.Add( mNode2 );

				}

				mNode.Nodes.Add( mNode1 );
			}

			if( PDns.AnswerRRS > 0 )
			{
				mNode1 = new TreeNode();
				mNode1.Text = "ANSWER RECORDS";

				for( i = 1; i <= PDns.AnswerRRS; i ++ )
				{
					mNode2 = new TreeNode();
					mNode2.Text = "Answer Record " + i.ToString();

					Tmp = "Name :" + PDns.AnswerObject[i-1].Name;
					mNode2.Nodes.Add( Tmp );

					Tmp = "Type : " + Function.ReFormatString( PDns.AnswerObject[i-1].Type , PDns.AnswerObject[i-1].TypeStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Class : " + Function.ReFormatString( PDns.AnswerObject[i-1].Class , PDns.AnswerObject[i-1].ClassStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Time to Live : " + Function.ReFormatString( PDns.AnswerObject[i-1].TimeToLive , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Data Length : " + Function.ReFormatString( PDns.AnswerObject[i-1].DataLength , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Ip Address :" + PDns.AnswerObject[i-1].IpAddress;
					mNode2.Nodes.Add( Tmp );

					mNode1.Nodes.Add( mNode2 );
				}

				mNode.Nodes.Add( mNode1 );
			}

			if( PDns.AuthorityRRS > 0 )
			{
				mNode1 = new TreeNode();
				mNode1.Text = "AUTHORITY RECORDS";

				for( i = 1; i <= PDns.AuthorityRRS; i ++ )
				{
					mNode2 = new TreeNode();
					mNode2.Text = "Authority Record " + i.ToString();

					Tmp = "Name :" + PDns.AuthorityObject[i-1].Name;
					mNode2.Nodes.Add( Tmp );

					Tmp = "Type : " + Function.ReFormatString( PDns.AuthorityObject[i-1].Type , PDns.AuthorityObject[i-1].TypeStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Class : " + Function.ReFormatString( PDns.AuthorityObject[i-1].Class , PDns.AuthorityObject[i-1].ClassStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Time to Live : " + Function.ReFormatString( PDns.AuthorityObject[i-1].TimeToLive , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Data Length : " + Function.ReFormatString( PDns.AuthorityObject[i-1].DataLength , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Primary Name Server : " + PDns.AuthorityObject[i-1].PrimaryNameServer;
					mNode2.Nodes.Add( Tmp );

					Tmp = "Responsible Authority's Mailbox : " + PDns.AuthorityObject[i-1].ResponsibleAuthoritysMailBox;
					mNode2.Nodes.Add( Tmp );

					Tmp = "Serial Number : " + Function.ReFormatString( PDns.AuthorityObject[i-1].SerialNumber , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Refresh Interval : " + Function.ReFormatString( PDns.AuthorityObject[i-1].RefreshInterval , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Retry Interval : " + Function.ReFormatString( PDns.AuthorityObject[i-1].RetryInterval , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Expiration Limit : " + Function.ReFormatString( PDns.AuthorityObject[i-1].ExpirationLimit , null );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Minimum TTL : " + Function.ReFormatString( PDns.AuthorityObject[i-1].MinimumTTL , null );
					mNode2.Nodes.Add( Tmp );

					mNode1.Nodes.Add( mNode2 );

				}

				mNode.Nodes.Add( mNode1 );
			}

			if( PDns.AdditionalRRS > 0 )
			{
				mNode1 = new TreeNode();
				mNode1.Text = "Additional Records";

				for( i = 1; i <= PDns.AdditionalRRS; i ++ )
				{
					mNode2 = new TreeNode();
					mNode2.Text = "Additional Record " + i.ToString();

					Tmp = "Name :" + PDns.AdditionalObject[i-1].Name;
					mNode2.Nodes.Add( Tmp );

					Tmp = "Type : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Type , PDns.AdditionalObject[i-1].TypeStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Class : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Class , PDns.AdditionalObject[i-1].ClassStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Time to Live : " + Function.ReFormatString( PDns.AdditionalObject[i-1].TimeToLive , PDns.AdditionalObject[i-1].TimeToLiveStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Data Length : " + Function.ReFormatString( PDns.AdditionalObject[i-1].DataLength , null );
					mNode2.Nodes.Add( Tmp );

					mNode2 = new TreeNode();
					mNode2.Text = "Flags :" + Function.ReFormatString( PDns.AdditionalObject[i-1].Flags , null );
					for( i = 0; i < 2; i ++ )
						mNode2.Nodes.Add( Flags2Array[ i ] );
					mNode1.Nodes.Add( mNode2 );

					Tmp = "Flags : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Class , PDns.AdditionalObject[i-1].ClassStr );
					mNode2.Nodes.Add( Tmp );

					Tmp = "Address : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Address , PDns.AdditionalObject[i-1].AddressStr );
					mNode2.Nodes.Add( Tmp );

					mNode1.Nodes.Add( mNode2 );

				}

				mNode.Nodes.Add( mNode1 );
			}

			return mNode;

		}

		public PACKET_DNS GetDNSPart( byte [] PacketData , ref int Index )
		{
			int i = 0;

			PDns.TransactionId = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
			PDns.Flags = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
			PDns.Questions = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
			PDns.AnswerRRS = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
			PDns.AuthorityRRS = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
			PDns.AdditionalRRS = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );

			if( PDns.Questions > 0 )
			{
				PDns.QuestionObject = new QUESTION_ITEM[ PDns.Questions ];
				for( i = 0; i < PDns.Questions; i ++ )
				{
					PDns.QuestionObject[i].Name = "";
					while( PacketData[ Index ] != 0 )
						PDns.QuestionObject[i].Name += (char) PacketData[ Index ++ ];

					Index ++;
					PDns.QuestionObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.QuestionObject[i].TypeStr = GetTypeString( PDns.QuestionObject[i].Type );

					PDns.QuestionObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.QuestionObject[i].ClassStr = GetClassString( PDns.QuestionObject[i].Class );
				}
			}

			if( PDns.AnswerRRS > 0 )
			{
				PDns.AnswerObject = new ANSWER_ITEM[ PDns.AnswerRRS ];
				for( i = 0; i < PDns.AnswerRRS; i ++ )
				{
					PDns.AnswerObject[i].Name = "";
					while( PacketData[ Index ] != 0 )
						PDns.AnswerObject[i].Name += (char) PacketData[ Index ++ ];

					Index ++;
					PDns.AnswerObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AnswerObject[i].TypeStr = GetTypeString( PDns.AnswerObject[i].Type );

					PDns.AnswerObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AnswerObject[i].ClassStr = GetClassString( PDns.AnswerObject[i].Class );

					PDns.AnswerObject[i].TimeToLive = Function.Get4Bytes( PacketData , ref Index , Const.VALUE );
					PDns.AnswerObject[i].DataLength = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );

					PDns.AnswerObject[i].IpAddress = "";
					PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString() + ".";
					PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString() + ".";
					PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString() + ".";
					PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString();

				}
			}

			if( PDns.AuthorityRRS > 0 )
			{
				PDns.AuthorityObject = new AUTHORITY_ITEM[ PDns.AuthorityRRS ];
				for( i = 0; i < PDns.AuthorityRRS; i ++ )
				{
					PDns.AuthorityObject[i].Name = "";
					while( PacketData[ Index ] != 0 )
						PDns.AuthorityObject[i].Name += (char) PacketData[ Index ++ ];

					Index ++;
					PDns.AuthorityObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].TypeStr = GetTypeString( PDns.AuthorityObject[i].Type );

					PDns.AuthorityObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].ClassStr = GetClassString( PDns.AuthorityObject[i].Class );

					PDns.AuthorityObject[i].TimeToLive = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].DataLength = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );

					PDns.AuthorityObject[i].PrimaryNameServer = "";
					while( PacketData[ Index ] != 0 )
						PDns.AuthorityObject[i].PrimaryNameServer += (char) PacketData[ Index ++ ];

					PDns.AuthorityObject[i].ResponsibleAuthoritysMailBox = "";
					while( PacketData[ Index ] != 0 )
						PDns.AuthorityObject[i].ResponsibleAuthoritysMailBox += (char) PacketData[ Index ++ ];

					PDns.AuthorityObject[i].SerialNumber = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].RefreshInterval = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].RetryInterval = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].ExpirationLimit = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AuthorityObject[i].MinimumTTL = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );

				}
			}

			if( PDns.AdditionalRRS > 0 )
			{
				PDns.AdditionalObject = new ADDITIONAL_ITEM[ PDns.AdditionalRRS ];
				for( i = 0; i < PDns.AdditionalRRS; i ++ )
				{
					PDns.AdditionalObject [i].Name = "";
					while( PacketData[ Index ] != 0 )
						PDns.AdditionalObject[i].Name += (char) PacketData[ Index ++ ];

					Index ++;
					PDns.AdditionalObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AdditionalObject[i].TypeStr = GetTypeString( PDns.AdditionalObject[i].Type );

					PDns.AdditionalObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AdditionalObject[i].ClassStr = GetClassString( PDns.AdditionalObject[i].Class );

					PDns.AdditionalObject[i].TimeToLive = Function.Get4Bytes( PacketData , ref Index , Const.VALUE );
					PDns.AdditionalObject[i].TimeToLiveStr = PDns.AdditionalObject[i].TimeToLive.ToString() + " sn";

					PDns.AdditionalObject[i].Flags = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
					PDns.AdditionalObject[i].FlagsStr = "";

					PDns.AdditionalObject[i].Address = Function.Get4Bytes( PacketData , ref Index , Const.VALUE );
					Index -= 4;
					PDns.AdditionalObject[i].AddressStr = "";
					PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ] + ".";
					PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ] + ".";
					PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ] + ".";
					PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ];

				}
			}

			return PDns;
		}


	}
}

⌨️ 快捷键说明

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