// -//////////////////// Parent private void StartCrow(){ cleanHTTP(); CrowResponsesA.Clear(); Cursor.Current=System.Windows.Forms.Cursors.WaitCursor; if (chkImmFuzz.Checked || baseResponse.Length==0){ statusBar1.Text="Getting base response..."; GetBaseResponse(); } lstCrowResponse.Items.Clear(); txtCrowResponse.Clear(); btnCrowStop.Enabled=true; btnCrowPause.Enabled=true; btnCrowStart.Enabled=false; //update button button2.Enabled=false; btnClear.Enabled=false; listView1.Enabled = false; txtHTTPdetails.Enabled=false; bool isAuto=chkProxyAutoUpdate.Checked; chkProxyAutoUpdate.Checked=false; //lets see if the files are OK... if (radioFile1.Checked==true && File.Exists(lblFile1.Text)==false && grpInner.Enabled==true){ MessageBox.Show("The file "+lblFile1.Text+" doesnt exists...!\n"); return; } //init stopit=false; pauseit=false; file1Pos=0; howmany=0; basenumber1=Convert.ToInt32(txtNumericFrom1.Text)-1; int i=0; rescount=0; //btnCrowPause.BackColor=System.Drawing.Color.Black; //lets see how many requests.. Int32 numberofrequests=getTotalLength(); if (numberofrequests>2000){ DialogResult turnoff=MessageBox.Show("This seems like a lot of requests...do you want to turn off saving of content? \r\n[Recommended unless you have LOADS of memory]","Warning",MessageBoxButtons.YesNo); if (turnoff==DialogResult.Yes){ chkCrowStoreResponse.Checked=true; } } //lblnumofreqs.Text=numberofrequests.ToString(); prgBarCrow.Maximum=(int)numberofrequests; prgBarCrow.Value=(int)numberofrequests; prgBarCrow.Minimum=0; try{ string theTarget=txtTargetHost.Text; string thePort=txtTargetPort.Text; string changer = ""; while (1==1){ crow_running=true; if (stopit==true){ break; } while (pauseit==true){ statusBar1.Text="Paused...."; btnCrowPause.BackColor=System.Drawing.Color.DarkGray; Thread.Sleep(250); statusBar1.Text="Click on Resume to resume"; btnCrowPause.BackColor=System.Drawing.Color.DarkGray; Thread.Sleep(250); btnCrowPause.Enabled=true; } bool iscomment=false; string commented=string.Empty; changer=findnext(); string[] val_com = changer.Split('\t'); if (val_com.Length>1){ commented=val_com[val_com.Length-1]; } changer=val_com[0]; if (changer.StartsWith("##")){ iscomment=true; } if (changer.CompareTo("DONE")==0){ break; } //build the request... string strTry=txtHTTPdetails.Text; string[] parts = new string[2]; parts=changer.Replace("%$%","`").Split('`'); if (parts[0].Length>0){ strTry=strTry.Replace("FUZZCTRL",convertToHex(parts[0],false)); } //new item to add CrowResponses crowadd = new CrowResponses(); if (iscomment==false){ crowadd.param1=parts[0]; } //compute the new content-length strTry=ComputeNewContentLength(strTry); strTry+="\r\n"; if (stopit==true){ break; } //see if we can fire more threads... while (howmany >= 5 && stopit==false){ Thread.Sleep(200); } if (howmany < 5 && pauseit==false && stopit==false){ if (iscomment==false){ howmany++; StartThreadWorker(theTarget,thePort,strTry,commented,crowadd); } //to single thread comment above and uncomment below: //StartCrowWorker(theTarget,thePort,strTry,i); } if (iscomment==false){ i++; } } crow_running=false; listView1.Enabled=true; btnCrowStart.Enabled=true; txtHTTPdetails.Enabled=true; btnCrowStop.Enabled=false; btnCrowStart.Enabled=true; btnCrowPause.Enabled=false; //update but button2.Enabled=true; btnClear.Enabled=true; chkProxyAutoUpdate.Checked=isAuto; // btnBase.Enabled=true; } catch (Exception ex){ MessageBox.Show(ex.ToString()); } //wait for all the threads while (howmany>0){ Thread.Sleep(200); } statusBar1.Text="Done.."; }
//-//////////////////// WORKER private void StartCrowWorker(string target,string port,string strTry, string comment,CrowResponses crowadd){ bool useSSL=chkTargetIsSSL.Checked; string response; try{ //do the actual TCP request... if (useSSL){ response=sendraw(target,port,strTry,65535,(int)updownTimeOut.Value,2,useSSL); } else { response=sendraw(target,port,strTry,65535,(int)updownTimeOut.Value); } if (stopit==true){ return; } lock (this){ if (stopit==true){ return; } statusBar1.Text="Testing with "+crowadd.param1+":"+crowadd.param2; txtCrowResponse.Text=response; if (chkCrowStoreResponse.Checked==false){ crowadd.response=response; crowadd.rawreq=strTry; } lock (this){ crowadd.compare=compareBlobs(response,baseResponse,chkUseAIAtAll.Checked,true); } crowadd.content=getContentFilter(response,true); crowadd.ID=rescount; crowadd.comment=comment.Replace("%$%",""); rescount++; //add it to our list CrowResponsesA.Add(crowadd); //build the stuff that needs to go into the list string listentry=crowadd.compare.ToString()+":"+crowadd.param1+":"+crowadd.ID+":"+crowadd.content+":"+crowadd.comment; //if (lstCrowResponse.Items.Count>0){ lstCrowResponse.SelectedIndex=lstCrowResponse.Items.Count-1; //} if (radioAll.Checked==true){ lstCrowResponse.Items.Add(listentry); }else { //equal if (radioequal.Checked==true){ if (crowadd.compare == Convert.ToDouble(updownCrowAI.Value)){ lstCrowResponse.Items.Add(listentry); } } else { //inside if (radioinside.Checked==true){ if (crowadd.compare >= Convert.ToDouble(updownCrowAI.Value) && crowadd.compare <= Convert.ToDouble(updowntwo.Value)){ lstCrowResponse.Items.Add(listentry); } } else { //outside if (radiooutside.Checked==true){ if (crowadd.compare <= Convert.ToDouble(updownCrowAI.Value) || crowadd.compare >= Convert.ToDouble(updowntwo.Value)){ lstCrowResponse.Items.Add(listentry); } } else { //not equal if (radioNotEqual.Checked==true){ if (crowadd.compare != Convert.ToDouble(updownCrowAI.Value)){ lstCrowResponse.Items.Add(listentry); } } } } } } } lock (locker){ if (prgBarCrow.Value>0){ prgBarCrow.Increment(-1); } howmany--; } } catch (Exception ex){ MessageBox.Show(ex.ToString()); } }
public void StartThreadWorker(string target, string port,string changer, string comment,CrowResponses crowadd) { StartTaskWorker del= new StartTaskWorker(StartCrowWorker); AsyncCallback callBackWhenDoneWorker = new AsyncCallback(this.EndStartThreadWorker); del.BeginInvoke(target,port,changer,comment,crowadd,callBackWhenDoneWorker,null); }