private void ScannerExploit(ThreadScanner o) { bool flag = false; try { Types types = new Types(); List <string> list = Analizer.BuildTraject(o.URL, "'A=0", true); using (List <string> .Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext()) { int num = 0; string current = enumerator.Current; goto Label_004F; Label_002A: num++; if (num > 5) { continue; } if (this.bckWorkerSQL.CancellationPending | !__RunningWorker) { return; } Label_004F: this.ScannerExploitCheckDelay(o.Delay); string sPostData = ""; string sErrDesc = ""; string str = o.HTTP.GetHTML(current, enHTTPMethod.GET, ref sPostData, null, null, false, ref sErrDesc, true); if (string.IsNullOrEmpty(str)) { goto Label_002A; } types = Utls.CheckSyntaxError(str); switch (types) { case Types.None: { continue; } case Types.Unknown: goto Label_00E3; case Types.MsAccess: goto Label_00F3; } goto Label_00EF; } goto Label_0112; Label_00E3: flag = !o.TrashUnknown; goto Label_0112; Label_00EF: flag = true; goto Label_0112; Label_00F3: flag = !o.TrashMsAccess; } Label_0112: if (flag) { this.AddURL(o.OriginalUrl, new string[] { Utls.TypeToString(types) }); this.__SearchSummary.Found++; } } catch (Exception exception1) { ProjectData.SetProjectError(exception1); ProjectData.ClearProjectError(); } finally { try { Console.WriteLine("Thread Count =>" + __ThreadPoolScanner.ThreadCount); this.__ThreadPoolScanner.Close(o.Thread); } catch (Exception exception2) { ProjectData.SetProjectError(exception2); ProjectData.ClearProjectError(); } Application.DoEvents(); } }
private void bckWorkerSQL_DoWork(object sender, DoWorkEventArgs e) { int threads = 0; stScanner argument = (stScanner)e.Argument; /* try * {*/ __RunningWorker = true; if (argument.Urls.Count > argument.Threads) { threads = argument.Threads; } else { threads = argument.Urls.Count; } this.__ThreadPoolScanner = new ThreadPool(threads); using (HTTP http = new HTTP(argument.TimeOut, false)) { IDictionaryEnumerator enumerator = argument.Urls.GetEnumerator(); int num2 = 0; while (enumerator.MoveNext()) { DictionaryEntry current = (DictionaryEntry)enumerator.Current; dynamic currData = current.Value; string sUrlEntered = Conversions.ToString(currData["url"]); if (this.bckWorkerSQL.CancellationPending || (this.__ThreadPoolScanner.Status == ThreadPool.ThreadStatus.Stopped)) { return; } /*if (__Loading.Paused) * { * this.__ThreadPoolScanner.Paused = true; * while (__Loading.Paused) * { * Thread.Sleep(500); * } * this.__ThreadPoolScanner.Paused = false; * }*/ int percentProgress = (int)Math.Round(Math.Round((double)(((double)(100 * (num2 + 1))) / ((double)argument.Urls.Count)))); if (threads > 1) { Globals.UpDateStatus(__Analizer.Order, "Exploiter thread", "[" + Strings.FormatNumber(num2 + 1, 0, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault) + "/" + Strings.FormatNumber(argument.Urls.Count, 0, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault) + "] Exploiter thread, exploitable detected: " + Conversions.ToString(this.__SearchSummary.Added)); } else { Globals.UpDateStatus(__Analizer.Order, "Exploiter thread", "[" + Strings.FormatNumber(num2 + 1, 0, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault) + "/" + Strings.FormatNumber(argument.Urls.Count, 0, TriState.UseDefault, TriState.UseDefault, TriState.UseDefault) + "] Exploiter thread, exploitable detected: " + Conversions.ToString(this.__SearchSummary.Added) + ", exploiting: " + Globals.G_Utilities.GetDomain(sUrlEntered)); } this.bckWorkerSQL.ReportProgress(percentProgress, ""); Label_024C: /* try * {*/ Thread thread = new Thread(new ParameterizedThreadStart(_Lambda__11)) { IsBackground = true, Name = "Pos : " + num2.ToString() }; ThreadScanner parameter = new ThreadScanner(num2) { Thread = thread, HTTP = http, OriginalUrl = Conversions.ToString(currData["url"]), URL = sUrlEntered, TrashMsAccess = argument.TrashMsAccess, TrashUnknown = argument.TrashUnknown, Delay = argument.Delay }; thread.Start(parameter); this.__ThreadPoolScanner.Open(thread); /* } * catch (Exception exception1) * { * // ProjectData.SetProjectError(exception1); * Thread.Sleep(0x3e8); * this.__ThreadPoolScanner.WaitForThreads(); * ProjectData.ClearProjectError(); * goto Label_024C; * // }*/ this.__ThreadPoolScanner.WaitForThreads(); num2++; Thread.Sleep(200); //Application.DoEvents(); } } /*} * finally * {*/ this.__ThreadPoolScanner.AllJobsPushed(); goto Label_045E; Label_036F: if (this.__ThreadPoolScanner.Finished) { goto Label_0481; } if (threads == 1) { //Dernier Thread restant Donc on envoie les resultats Globals.GUI.sendExploitables(__Analizer.Order, __EXPLOITABLES__); Globals.UpDateStatus(__Analizer.Order, "Exploiter thread", "[" + Conversions.ToString(argument.Urls.Count) + "/" + Conversions.ToString(argument.Urls.Count) + "] Exploiter thread, finishing thread.."); } else { Globals.GUI.sendExploitables(__Analizer.Order, __EXPLOITABLES__); Globals.UpDateStatus(__Analizer.Order, "Exploiter thread", "[" + Conversions.ToString(argument.Urls.Count) + "/" + Conversions.ToString(argument.Urls.Count) + "] Exploiter thread, finishing thread(s) [" + Conversions.ToString(this.__ThreadPoolScanner.ThreadCount) + "]"); } Thread.Sleep(200); Label_045E: this.bckWorkerSQL.ReportProgress(100, this.GetExploiterSummary()); if (!this.bckWorkerSQL.CancellationPending) { goto Label_036F; } Label_0481 :; //} }