借助7Z.exe 实现RAR压缩包密码暴力破解 C语言实现

吐槽几句

rar压缩包暴力破解这种软件 , 原理上挺简单的其实 , 就是不断的用字符去碰 , 指不定啥时候能碰上 , 爆破破解不就是这么回事嘛 , 之前下载个学习资料 , 说好的童叟无欺, 结果却给我加了个解压密码 , 上网寻思查个破解软件吧 , 要么带病毒 , 要么不能用 , 要么收费 . 学软件工程就这点好 ,了不起 , 自己写一个…

源码

#include
#include
#include
#include 
using namespace std; 
typedef struct Config{
	char unrarFile[256];
	char targetFile[256]; 
	int minLength;
	int maxLength;
	char charSet[256];
	int charSetSize;
}Config; 

//获取配置文件 
Config getConfig(){
	Config c;
	ifstream fin("config.txt");
	if(!fin.is_open())
	{cout<<"配置文件加载失败"<log.txt"; 
	if(system(cmd.c_str()) == 0 )
		return true; 
	return false; 
} 

//递归函数 
void func(Config *c,string password,int current,int target) {
	if(current==target){
		system("cls");
		cout<<"当前尝试长度: "<targetFile,password,c->unrarFile)){
			system("cls");
			cout<<"破解成功:"<charSetSize;i++){
		string newPassword = password + c->charSet[i]; 
		func(c,newPassword,current+1,target); 
	} 
} 

//开始破解 
void start(Config c){
	system("cls"); 
	cout<<"开始破解.."<";
	char i='N'; 
	cin>>i;
	if(i=='Y')
		start(c); 
	cout<<"破解失败,请尝试扩展字符集或增加密码长度"<

C++写的 , 直接编译就能用 , 讲道理已经好久没用过C++了 , 基本学的知识都还给老师了, 软件的思路是 , 利用 7z 的压缩引擎 (winrar 7z 都有个这么个玩意 , 是一个执行文件 , 可以用命令行执行 7z 的速度快一些 ,不知道叫什么 , 姑且叫引擎?) 然后用C++调用命令行去执行 7z 的引擎 .

效率方面嘛

效率挺差的 , 首先暴力破解嘛 , 在我的认知里暴力和效率挺不搭边的 , 再就是调用的是人家的程序 , 我说白了就是搭了个壳然后不断试探密码 主要影响密码尝试效率的还是人家 7z (7z是真的比winrar快好多,不知道他们技术怎么实现的,确实厉害)

借助7Z.exe 实现RAR压缩包密码暴力破解 C语言实现_第1张图片

借助7Z.exe 实现RAR压缩包密码暴力破解 C语言实现_第2张图片

配置文件

[解压引擎地址]
7z
[目标文件地址]
学习资料.rar
[最小密码长度]
4
[最大密码长度]
4
[密码字符集]
abcdefghijklmnopqrstuvwxyz

注意:7Z.exe其实是从F:\Program Files\7-Zip复制过来的,所以没有安装7Z的电脑可能不好用,去下载一个7-zip,到7-zip的根目录去寻找7z.exe,然后去把要解压的文件和7z.exe都放到根目录,把要解压的文件也一起放过去,改一下配置文件应该就行了

你可能感兴趣的:(自制工具)