Updated
This commit is contained in:
		
							
								
								
									
										29
									
								
								EonaCat.DnsTester/MainForm.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										29
									
								
								EonaCat.DnsTester/MainForm.Designer.cs
									
									
									
										generated
									
									
									
								
							| @@ -55,6 +55,9 @@ | ||||
|             this.txtResolveHost = new System.Windows.Forms.TextBox(); | ||||
|             this.btnResolveIP = new System.Windows.Forms.Button(); | ||||
|             this.btnResolveHost = new System.Windows.Forms.Button(); | ||||
|             this.label3 = new System.Windows.Forms.Label(); | ||||
|             this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); | ||||
|             ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); | ||||
|             this.SuspendLayout(); | ||||
|             //  | ||||
|             // ResultView | ||||
| @@ -308,6 +311,27 @@ | ||||
|             this.btnResolveHost.UseVisualStyleBackColor = true; | ||||
|             this.btnResolveHost.Click += new System.EventHandler(this.btnResolveHost_Click); | ||||
|             //  | ||||
|             // label3 | ||||
|             //  | ||||
|             this.label3.AutoSize = true; | ||||
|             this.label3.Location = new System.Drawing.Point(675, 223); | ||||
|             this.label3.Name = "label3"; | ||||
|             this.label3.Size = new System.Drawing.Size(201, 32); | ||||
|             this.label3.TabIndex = 32; | ||||
|             this.label3.Text = "Total domains:"; | ||||
|             //  | ||||
|             // numericUpDown1 | ||||
|             //  | ||||
|             this.numericUpDown1.Location = new System.Drawing.Point(913, 223); | ||||
|             this.numericUpDown1.Maximum = new decimal(new int[] { | ||||
|             10000000, | ||||
|             0, | ||||
|             0, | ||||
|             0}); | ||||
|             this.numericUpDown1.Name = "numericUpDown1"; | ||||
|             this.numericUpDown1.Size = new System.Drawing.Size(120, 38); | ||||
|             this.numericUpDown1.TabIndex = 33; | ||||
|             //  | ||||
|             // MainForm | ||||
|             //  | ||||
|             this.AutoScaleDimensions = new System.Drawing.SizeF(240F, 240F); | ||||
| @@ -315,6 +339,8 @@ | ||||
|             this.AutoSize = true; | ||||
|             this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; | ||||
|             this.ClientSize = new System.Drawing.Size(2517, 1693); | ||||
|             this.Controls.Add(this.numericUpDown1); | ||||
|             this.Controls.Add(this.label3); | ||||
|             this.Controls.Add(this.btnResolveHost); | ||||
|             this.Controls.Add(this.btnResolveIP); | ||||
|             this.Controls.Add(this.txtResolveHost); | ||||
| @@ -343,6 +369,7 @@ | ||||
|             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | ||||
|             this.Text = "EonaCat.DnsTester"; | ||||
|             this.Load += new System.EventHandler(this.TesterUI_Load); | ||||
|             ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); | ||||
|             this.ResumeLayout(false); | ||||
|             this.PerformLayout(); | ||||
|  | ||||
| @@ -376,6 +403,8 @@ | ||||
|         private System.Windows.Forms.TextBox txtResolveHost; | ||||
|         private System.Windows.Forms.Button btnResolveIP; | ||||
|         private System.Windows.Forms.Button btnResolveHost; | ||||
|         private System.Windows.Forms.Label label3; | ||||
|         private System.Windows.Forms.NumericUpDown numericUpDown1; | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Data; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| @@ -28,8 +29,7 @@ namespace EonaCat.DnsTester | ||||
|         private void RunTest_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             int i; | ||||
|             string[] CleanNames = new string[500]; | ||||
|             int CleanNamesCount = 0; | ||||
|             List<string> CleanNames = new List<string>(); | ||||
|  | ||||
|             if (this.UseCustomDnsServers) | ||||
|             { | ||||
| @@ -61,9 +61,9 @@ namespace EonaCat.DnsTester | ||||
| 			ResultView.Update(); | ||||
| 			Application.DoEvents(); | ||||
| 			 | ||||
| 			GetWebAddresses(ref CleanNames, ref CleanNamesCount); | ||||
| 			GetWebAddresses(ref CleanNames, (int)numericUpDown1.Value); | ||||
|  | ||||
| 			for (i = 0; i < CleanNamesCount; i++) | ||||
| 			for (i = 0; i < CleanNames.Count; i++) | ||||
| 			{ | ||||
| 				ListViewItem listURL = new ListViewItem(CleanNames[i]); | ||||
| 				listURL.SubItems.Add(" "); | ||||
| @@ -87,7 +87,7 @@ namespace EonaCat.DnsTester | ||||
| 			} | ||||
|  | ||||
|             IsRunning = true; | ||||
|             CheckDNS(CleanNames, CleanNamesCount, DNS1, DNS2); | ||||
|             CheckDNS(CleanNames.ToArray(), CleanNames.Count, DNS1, DNS2); | ||||
| 			IsRunning = false; | ||||
| 		} | ||||
|  | ||||
| @@ -156,7 +156,7 @@ namespace EonaCat.DnsTester | ||||
|  | ||||
|  | ||||
|  | ||||
| 		private void GetWebAddresses(ref string[] CleanNames, ref int CleanNamesCount) | ||||
| 		private void GetWebAddresses(ref List<string> CleanNames, int totalUrls) | ||||
| 		{ | ||||
| 			int i, j; | ||||
| 			byte[] random = new Byte[256]; | ||||
| @@ -173,74 +173,116 @@ namespace EonaCat.DnsTester | ||||
| 				if (Letters.Length == 3) break; | ||||
| 			} | ||||
|  | ||||
| 			// Use Google to get random addresses for DNS testing | ||||
|             KeyValuePair<string, string> searchEngine = new KeyValuePair<string, string>(); | ||||
|             Random rand = new Random(); | ||||
|  | ||||
| 			// Initialize the WebRequest. | ||||
| 		 | ||||
| 			StatusBoxPrint("Getting Google request"); | ||||
| 			try | ||||
|             // Create a list of search engine URLs to query | ||||
|             Dictionary<string, string> searchEngineUrls = new Dictionary<string, string> | ||||
|             { | ||||
|                 { "DuckDuckGo", "https://duckduckgo.com/html/?q=" }, | ||||
|                 { "Yahoo", "https://search.yahoo.com/search?p=" }, | ||||
|                 { "Bing", "https://www.bing.com/search?q=" }, | ||||
|                 { "Google", "https://www.google.com/search?q=" }, | ||||
|                 { "Ask", "https://www.ask.com/web?q=" }, | ||||
|                 { "AOL", "https://www.aol.com/search?q=" }, | ||||
|                 { "WolframAlpha", "https://www.wolframalpha.com/input/?i=" }, | ||||
|                 { "StartPage", "https://www.startpage.com/do/dsearch?query=" }, | ||||
|                 { "Yandex", "https://www.yandex.com/search/?text=" }, | ||||
|                 { "Qwant", "https://www.qwant.com/?q=" } | ||||
|             }; | ||||
|  | ||||
|             try | ||||
|             { | ||||
|                 while (CleanNames.Count < totalUrls) | ||||
|                 { | ||||
|                     int index = rand.Next(searchEngineUrls.Count); | ||||
|                     searchEngine = searchEngineUrls.ElementAt(index); | ||||
|  | ||||
|                     WebRequest Request = WebRequest.Create(searchEngine.Value + Letters); //Letters); | ||||
|                     WebResponse Response = Request.GetResponse(); | ||||
|                     Application.DoEvents(); | ||||
|                      | ||||
|                     // Get the response stream. | ||||
|                     Stream Stream = Response.GetResponseStream(); | ||||
|                     StatusBoxPrint(searchEngine.Key + " response received"); | ||||
|  | ||||
|                     StreamReader StreamReader = new StreamReader(Stream, Encoding.ASCII); | ||||
|                     string ResponseString = StreamReader.ReadToEnd(); | ||||
|                      | ||||
|                     // Close the response stream and response to free resources. | ||||
|                     Stream.Close(); | ||||
|                     Response.Close(); | ||||
|                     Application.DoEvents(); | ||||
|  | ||||
|                     // find all .xxx.com addresses | ||||
|                     MatchCollection HostNames; | ||||
|                     string[] Names = new string[totalUrls + 1000]; | ||||
|  | ||||
|                     // Create a new Regex object and define the regular expression. | ||||
|                     Regex Dotcom = new Regex("[.]([A-Za-z]*)[.]com"); | ||||
|  | ||||
|  | ||||
|                     // Use the Matches method to find all matches in the input string. | ||||
|                     HostNames = Dotcom.Matches(ResponseString); | ||||
|  | ||||
|                     Application.DoEvents(); | ||||
|  | ||||
|                     // Loop through the match collection to retrieve all  | ||||
|                     // matches and delete the leading "." | ||||
|                     for (i = 0; i < HostNames.Count; i++) | ||||
|                     { | ||||
|                         Names[i] = HostNames[i].Value.Remove(0, 1); | ||||
|                     } | ||||
|  | ||||
|                     // eliminate its own search engine names and repeated entries | ||||
|                     for (i = 0; i < HostNames.Count - 1; i++) | ||||
|                     { | ||||
|                         if (Names[i] == searchEngine.Key.ToLower() + ".com") Names[i] = ""; | ||||
|                         for (j = i + 1; j < HostNames.Count; j++) | ||||
|                         { | ||||
|                             if (Names[i] == Names[j]) Names[j] = ""; | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                     Shuffle(Names); | ||||
|  | ||||
| 					// Add the names to the list | ||||
|                     for (i = 0; i < HostNames.Count; i++) | ||||
|                     { | ||||
|                         if (CleanNames.Count >= totalUrls) | ||||
|                         { | ||||
|                             break; | ||||
|                         } | ||||
|  | ||||
|                         if (!string.IsNullOrEmpty(Names[i]) && !CleanNames.Contains(Names[i])) | ||||
|                         { | ||||
|                             CleanNames.Add(Names[i]); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 StatusBoxPrint(CleanNames.Count + " Random URL's found"); | ||||
|             } | ||||
| 			catch(Exception exception) | ||||
| 			{ | ||||
| 				WebRequest GoogleRequest = WebRequest.Create("http://www.google.com/search?num=100&q=" + Letters); //Letters); | ||||
| 				WebResponse GoogleResponse = GoogleRequest.GetResponse(); | ||||
| 				Application.DoEvents(); | ||||
| 				// Get the response stream. | ||||
| 				Stream GoogleStream = GoogleResponse.GetResponseStream(); | ||||
| 				StatusBoxPrint("Google response received"); | ||||
| 				// Use a StreamReader to read the entire response. | ||||
|  | ||||
| 				StreamReader GoogleReader = new StreamReader(GoogleStream, Encoding.ASCII); | ||||
| 				string GoogleString = GoogleReader.ReadToEnd(); | ||||
| 				// Close the response stream and response to free resources. | ||||
| 				GoogleStream.Close(); | ||||
| 				GoogleResponse.Close(); | ||||
| 				Application.DoEvents(); | ||||
|  | ||||
| 				// find all .xxx.com addresses | ||||
| 				MatchCollection HostNames; | ||||
| 				string[] Names = new string[1000]; | ||||
| 				// Create a new Regex object and define the regular expression. | ||||
| 				Regex Dotcom = new Regex("[.]([A-Za-z]*)[.]com"); | ||||
| 				// Use the Matches method to find all matches in the input string. | ||||
| 				HostNames = Dotcom.Matches(GoogleString); | ||||
|  | ||||
| 				Application.DoEvents(); | ||||
| 				// Loop through the match collection to retrieve all  | ||||
| 				// matches and delete the leading "." | ||||
| 				for (i = 0; i < HostNames.Count; i++) | ||||
| 				{ | ||||
| 					Names[i] = HostNames[i].Value.Remove(0, 1); | ||||
| 				} | ||||
| 				// eliminate google.com and repeated entries | ||||
| 				for (i = 0; i < HostNames.Count - 1; i++) | ||||
| 				{ | ||||
| 					if (Names[i] == "google.com") Names[i] = ""; | ||||
| 					for (j = i + 1; j < HostNames.Count; j++) | ||||
| 					{ | ||||
| 						if (Names[i] == Names[j]) Names[j] = ""; | ||||
| 					} | ||||
| 				} | ||||
| 				// count list and compact | ||||
| 				j = 0; | ||||
| 				for (i = 0; i < HostNames.Count; i++) | ||||
| 				{ | ||||
| 					if (Names[i] != "") | ||||
| 					{ | ||||
| 						CleanNames[j] = Names[i]; | ||||
| 						j++; | ||||
| 					} | ||||
| 				} | ||||
| 				CleanNamesCount = j; | ||||
| 				StatusBoxPrint(CleanNamesCount + " Random URL's found"); | ||||
|  | ||||
| 			} | ||||
| 			catch | ||||
| 			{ | ||||
| 				StatusBoxPrint("Host Google.com not found - are you connected ?"); | ||||
| 				StatusBoxPrint(searchEngine.Key + ": " ?? string.Empty + exception.Message); | ||||
| 			} | ||||
|         } | ||||
|  | ||||
| 		} | ||||
|         public static void Shuffle<T>(T[] array) | ||||
|         { | ||||
|             Random rng = new Random(); | ||||
|             int n = array.Length; | ||||
|             while (n > 1) | ||||
|             { | ||||
|                 n--; | ||||
|                 int k = rng.Next(n + 1); | ||||
|                 T value = array[k]; | ||||
|                 array[k] = array[n]; | ||||
|                 array[n] = value; | ||||
|             } | ||||
|         } | ||||
|  | ||||
| 		private void CheckDNS(string[] URLNames, int URLNamescount, string DNSAddress1, string DNSAddress2) | ||||
|         private void CheckDNS(string[] URLNames, int URLNamescount, string DNSAddress1, string DNSAddress2) | ||||
| 		{ | ||||
| 			int i; | ||||
| 			const int IPPort = 53; | ||||
| @@ -299,11 +341,13 @@ namespace EonaCat.DnsTester | ||||
| 			} | ||||
|  | ||||
| 			byte[] Receivebytes = new byte[512]; | ||||
|             int totalReceived = 0; | ||||
|  | ||||
| 			try | ||||
|             try | ||||
| 			{ | ||||
| 			// wait for a response up to timeout | ||||
| 			more: DNSsocket.Receive(Receivebytes); | ||||
| 			more: | ||||
|             DNSsocket.Receive(Receivebytes); | ||||
| 				// make sure the message returned is ours | ||||
| 				if (Receivebytes[0] == Sendbytes[0] && (Receivebytes[1] == 0x31) || (Receivebytes[1] == 0x32)) | ||||
| 				{ | ||||
| @@ -378,11 +422,17 @@ namespace EonaCat.DnsTester | ||||
| 										ResultView.Items[i].ForeColor = System.Drawing.Color.Black; | ||||
| 										break; | ||||
| 								} | ||||
| 							} | ||||
|  | ||||
|                                 totalReceived++; | ||||
|                             } | ||||
| 						} | ||||
| 					} | ||||
| 					goto more; | ||||
| 				} | ||||
|  | ||||
|                     if (totalReceived < URLNamescount) | ||||
|                     { | ||||
|                         goto more; | ||||
|                     } | ||||
|                 } | ||||
| 			} | ||||
| 			catch (SocketException e) | ||||
| 			{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user