Exemplo n.º 1
0
		// -//////////////////// 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..";
		}
Exemplo n.º 2
0
		//-//////////////////// 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());
			}
			
		}
Exemplo n.º 3
0
		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);
			
		}