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

📄 form1.cs

📁 黑客字典生成程序
💻 CS
📖 第 1 页 / 共 3 页
字号:
		{
			double i=1,j,l,x,y;
			int k,m,n,u=progressBar1.Value;
			byte Pl_Bz;
			
			//判断排序方式
			if(radioButton3.Checked) Pl_Bz=0;
			else if(radioButton4.Checked) Pl_Bz=1;
			else Pl_Bz=2;
			for(k=0;k<NumCot;k++) 
			{
				i*=ChrNum;
			}
			if(Pl_Bz==1) //降序排列
			{
				k=ChrNum;l=i;
				for(j=i;j>0;j--)
				{
					//判断有无重复方式
					if((j==l) && (checkBox5.Checked))
					{
						k--;l=k;
						for(m=1;m<NumCot;m++) l=l*10+k;continue;
					}
					x=j;
					for(m=NumCot-1;m>=0;m--)
					{
						if(m==0) n=(int)x%ChrNum;
						else
						{
							y=1;
							for(n=0;n<m;n++) y*=ChrNum;
							n=(int)(x/y);
							x%=y;
						}
						fp.Write(Chr[n]);
					}
					fp.Write("\r\n");
					if((i-j)*(NumCot+2)/1024/1024+u>progressBar1.Value)
					{
						progressBar1.Value+=1;
						progressBar1.Refresh();
					}
				}
			}
			else if(Pl_Bz==0) //升序排列
			{
				k=0;l=0;
				for(j=0;j<i;j++)
				{
					//判断有无重复方式
					if((j==l) && (checkBox5.Checked))
					{
						k++;l=k;
						for(m=1;m<NumCot;m++) l=l*10+k;continue;
					}
					x=j;
					for(m=NumCot-1;m>=0;m--)
					{
						if(m==0) n=(int)x%ChrNum;
						else
						{
							y=1;
							for(n=0;n<m;n++) y*=ChrNum;
							n=(int)(x/y);
							x%=y;
						}
						fp.Write(Chr[n]);
					}
					if(j*(NumCot+2)/1024/1024+u>progressBar1.Value)
					{
						progressBar1.Value+=1;
						progressBar1.Refresh();
					}
					fp.Write("\r\n");
				}
			}
			else //随机生成
			{
				System.Random Rr=new System.Random();
				for(progressBar1.Value=progressBar1.Minimum;progressBar1.Value<progressBar1.Maximum;progressBar1.Value++)
				{
					for(m=0;m<NumCot;m++)
					{
						n=(int)(ChrNum*Rr.NextDouble());
						fp.Write(Chr[n]);
					}
					fp.Write("\r\n");
				}
				progressBar1.Value=progressBar1.Maximum;
			}
		}

		private void radioButton5_CheckedChanged(object sender, System.EventArgs e)
		{
			if(radioButton5.Checked)
			{
				comboBox4.Enabled=true;
				if(comboBox3.Text!=comboBox1.Text) comboBox3.Text=comboBox1.Text;
			}
		}

		private void radioButton4_CheckedChanged(object sender, System.EventArgs e)
		{
			if(radioButton4.Checked) comboBox4.Enabled=false;
		}

		private void radioButton3_CheckedChanged(object sender, System.EventArgs e)
		{
			if(radioButton3.Checked) comboBox4.Enabled=false;
		}
		
		private void button1_Click(object sender, System.EventArgs e)
		{
			string LsFileName,LsExt;
			int i,j,k,l,m;
			string LsBuf;
			double Disk_Size=1,Ls_Size=1;
			char[] Chr= new char[96];
			System.IO.StreamWriter fp;
			
			//判断选择项目的合法性
			if(textBox1.Text=="")
			{
				MessageBox.Show("您没有输入合法的文件名称,请检查确认!","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
				return;
			}
			if(radioButton1.Checked)
			{
				if(!(checkBox1.Checked || checkBox2.Checked || checkBox3.Checked || checkBox4.Checked))
				{
					MessageBox.Show("您设置的密码类型不合法,请检查确认!","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
					return;
				}
			}
			if(System.Int32.Parse(comboBox1.Text)>System.Int32.Parse(comboBox3.Text))
			{
				MessageBox.Show("您设置的密码位数不合法,请检查确认!","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
				return;
			}
			if(checkBox5.Checked)
			{
				if(System.Int32.Parse(comboBox1.Text)<3 || System.Int32.Parse(comboBox3.Text)<3)
				{
					MessageBox.Show("生成规则需要密码位数大于3位,请检查确认!","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning);
					return;
				}
			}
			// 开始生成字典文件
			
			if(radioButton1.Checked)//特定字符
			{
				textBox1.Text=textBox1.Text.Trim();
				k=0;i=0;
				if(checkBox1.Checked) //0-9
				{  
					k=10;
					for(;i<k;i++) Chr[i]=(char)('0'+i);
				}
				if(checkBox2.Checked) //a-z
				{
					k+=26;
					j=i;
					for(;i<k;i++) Chr[i]=(char)('a'+i-j);
				}
				if(checkBox3.Checked) //A-Z
				{
					k+=26;
					j=i;
					for(;i<k;i++) Chr[i]=(char)('A'+i-j);
				}
				if(checkBox4.Checked) //0x20-0x2f
				{
					k+=16;
					j=i;
					for(;i<k;i++) Chr[i]=(char)(' '+i-j);
				}
			}
			else //全部字符
			{
				for(i=0;i<96;i++) Chr[i]=(char)(' '+i);
				k=96;
			}
			

			//处理生成文件名称中的空格
			textBox1.Text=textBox1.Text.Trim();
			//处理进程条
			progressBar1.Step=1;
			progressBar1.Minimum=0;
			progressBar1.Value=0;
			if(comboBox1.Text==comboBox3.Text)			
			{
				for(m=0;m<System.Int32.Parse(comboBox1.Text);m++) Disk_Size*=k;
				Disk_Size*=(double)(System.Int32.Parse(comboBox1.Text)+2);
				if(checkBox5.Checked)
				{
					Ls_Size=(double)(k*(System.Int32.Parse(comboBox1.Text)+2));
					Disk_Size-=Ls_Size;
				}
				Ls_Size=1024*1024;
				if((Disk_Size%Ls_Size)>0) progressBar1.Maximum=(int)((Disk_Size-(Disk_Size%Ls_Size))/Ls_Size+1);
				else progressBar1.Maximum=(int)(Disk_Size/Ls_Size);
			}
			else if(comboBox2.Text=="和")
			{
				for(m=0;m<System.Int32.Parse(comboBox1.Text);m++) Disk_Size*=k;
				Disk_Size*=(double)(System.Int32.Parse(comboBox1.Text)+2);
				if(checkBox5.Checked)
				{
					Ls_Size=(double)(k*(System.Int32.Parse(comboBox1.Text)+2));
					Disk_Size-=Ls_Size;
				}
				for(m=0;m<System.Int32.Parse(comboBox3.Text);m++) Ls_Size*=k;
				Ls_Size*=(double)(System.Int32.Parse(comboBox3.Text)+2);
				Disk_Size+=Ls_Size;
				if(checkBox5.Checked)
				{
					Ls_Size=(double)(k*(System.Int32.Parse(comboBox3.Text)+2));
					Disk_Size-=Ls_Size;
				}
				Ls_Size=1024*1024;
				if((Disk_Size%Ls_Size)>0) progressBar1.Maximum=(int)((Disk_Size-(Disk_Size%Ls_Size))/Ls_Size+1);
				else progressBar1.Maximum=(int)(Disk_Size/Ls_Size);
			}
			else
			{
				Disk_Size=0;
				for(m=System.Int32.Parse(comboBox1.Text);m<=System.Int32.Parse(comboBox3.Text);m++)
				{
					for(l=0;l<m;l++) Ls_Size*=k;
					Ls_Size*=(double)(m+2);
					Disk_Size+=Ls_Size;
		  			if(checkBox5.Checked)
					{
						Ls_Size=(double)(k*(m+2));
						Disk_Size-=Ls_Size;
					}
				}
				Ls_Size=1024*1024;
				if((Disk_Size%Ls_Size)>0) progressBar1.Maximum=(int)((Disk_Size-(Disk_Size%Ls_Size))/Ls_Size+1);
				else progressBar1.Maximum=(int)(Disk_Size/Ls_Size);
			}
			if(radioButton5.Checked)
			{
				Disk_Size*=Ls_Size;
				Disk_Size/=(System.Double.Parse(comboBox1.Text)+2);
				if(Disk_Size<System.Double.Parse(comboBox4.Text))
				{
					MessageBox.Show("随机生成密码个数太大,已经超过密码规则定义的个数!系统将自动调整……","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
					m=(int)Disk_Size;
					LsBuf=m.ToString();
					if(comboBox4.Items.IndexOf(LsBuf)==-1) comboBox4.Items.Add(LsBuf);
					comboBox4.Text=LsBuf;
				}
				else Disk_Size=System.Double.Parse(comboBox4.Text)*(System.Double.Parse(comboBox1.Text)+2);
				progressBar1.Maximum=System.Int32.Parse(comboBox4.Text);
			}
			if(Disk_Size>Ls_Size)
			{
				Disk_Size/=Ls_Size;
				if(MessageBox.Show("生成的字典文件需要占用"+Disk_Size.ToString(".00")+"M的磁盘空间!继续吗?","系统提示",System.Windows.Forms.MessageBoxButtons.YesNo,System.Windows.Forms.MessageBoxIcon.Information)== DialogResult.No) return;
			}
			else if(Disk_Size>1024)
			{
				Disk_Size/=1024;
				MessageBox.Show("生成的字典文件需要占用"+Disk_Size.ToString(".00")+"K的磁盘空间!继续吗?","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
			}
			else MessageBox.Show("生成的字典文件需要占用"+Disk_Size.ToString(".00")+"字节的磁盘空间!继续吗?","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
			//打开进程条
			panel2.Visible=true;
			panel1.Visible=true;
			m=1;
			LsFileName=textBox1.Text.Substring(0,textBox1.Text.Length-4);
			LsExt=textBox1.Text.Substring(textBox1.Text.Length-4,4);

			for(l=System.Int32.Parse(comboBox1.Text);l<=System.Int32.Parse(comboBox3.Text);l++)
			{
				panel2.Refresh();
				if(comboBox1.Text==comboBox3.Text)
				{
					fp=new System.IO.StreamWriter(textBox1.Text,false); 
					label6.Text="正在处理字典"+textBox1.Text+"文件……";
					label6.Refresh();
				}
				else
				{
					fp=new System.IO.StreamWriter(LsFileName+m.ToString("00")+LsExt,false); 
					label6.Text="正在处理字典"+LsFileName+m.ToString("00")+LsExt+"文件……";
					label6.Refresh();
				}
				Creat_Dic_File(Chr,k,fp,l);
				fp.Close();
				m++;
				if(comboBox2.Text=="和" && l<System.Int32.Parse(comboBox3.Text)-1) l=System.Int32.Parse(comboBox3.Text)-1;
			}
			MessageBox.Show("密码字典已经成功生成"+(m-1).ToString()+"文件!","系统提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
			panel1.Visible=false;
			panel2.Visible=false;
		}

		private void checkBox5_CheckedChanged(object sender, System.EventArgs e)
		{
			if(this.checkBox5.Checked) 
			{
				radioButton5.Enabled=false;
				if(radioButton5.Checked) radioButton3.Checked=true;
			}
			else radioButton5.Enabled=true;
		}

		private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			if(radioButton5.Checked && comboBox1.Text!=comboBox3.Text) comboBox3.Text=comboBox1.Text;
		}

		private void comboBox3_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			if(radioButton5.Checked && comboBox1.Text!=comboBox3.Text) comboBox1.Text=comboBox3.Text;
		}
	}
}

⌨️ 快捷键说明

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