暴力破解密码(循环的例子)

while循环练习: 编写暴力破解密码。

创建一个项目: 用于输入密码

#include  <iostream>
#include  <Windows.h>
#include <string>
using namespace std;

int main(void) {
	string pwd;

	while (1) {
		cout << "Please input your password: ";
		cin >> pwd;

		if (pwd == "000123") {
			break;
		}
		else {
			cout << "Password error." << endl;
		}
	}

	cout << "login success" << endl;
	cout << "1. 注册" << endl;
	cout << "2. 管理" << endl;
	cout << "3. 查询" << endl;
	cout << "4. 删除" << endl;
	system("pause");
	return 0;
}

再创建一个项目: 暴力破解(直接使用循环尝试每一种代码的组合)

   

#include <iostream>
#include <Windows.h>

int main(void)
{
	/*此代码实现暴力破解密码*/

	/*用来存储密码的所有可能: 每一位的密码可能是0-9(9个) a-z(26个) A-Z(26个)和下划线之中的任意一个字符*/
	char dict[64] = {0};
	int index = 0; // 存放密码可能性数组的下标

	/*存放生成的临时密码*/
	char temp[32] = {0};

	/*用来存储,0-9所有的可能型*/
	for (int i = 0; i < 10; i++)
	{
		dict[index++] = '0' + i;
	}

	/*为了快速测试,我们目前假设密码只有0-9这些数字字符组成(如果63个都判断需要很长时间),所以将后面的注释掉*/

	///*用来存储,a-z等26个小写字母*/
	//for (int i = 0; i < 26; i++)
	//{
	//	dict[index++] = 'a' + i;
	//}

	///*用来存储,A-Z等26个大写字母*/
	//for (int i = 0; i < 26; i++)
	//{
	//	dict[index++] = 'A' + i;
	//}
	//
	///*用来存储下划线*/
	//dict[index] = '_';

	int n = index;  /*字符个数*/

	/*使用多重循环判断每一位密码的所有可能,进而得到每一种排列的可能,来找到正确的密码,假设密码有6位*/
	for (int p1 = 0; p1 < n; p1++)
	{
		for (int p2 = 0; p2 < n; p2++)
		{
			for (int p3 = 0; p3 < n; p3++)
			{
				for (int p4 = 0; p4 < n; p4++)
				{
					for (int p5 = 0; p5 < n; p5++)
					{
						for (int p6 = 0; p6 < n; p6++)
						{
							temp[0] = dict[p1];
							temp[1] = dict[p2];
							temp[2] = dict[p3];
							temp[3] = dict[p4];
							temp[4] = dict[p5];
							temp[5] = dict[p6];
							std::cout << temp << std::endl;
						}
					}
				}
			
			}
		}
	}

	system("pause");

	return 0;
}

在文件中创建一个文件夹(用来存放):

      

分别在两个项目中找到对应的可执行文件:

                                                           

复制粘贴到创建的文件中.

下一步:win+r -> cmd -> cd 跳转到文件夹的路径下,然后dir查看该文件夹的内容

可以看到该路径下有两个文件,然后输入如下图的指令:

这条指令表示: 构建一个通道,将前面程序的输出,作为后面程序的输入。

 这样我们前面得到的所有密码情况会不断到后面的程序中尝试,直到结束.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值