快速破解rar解压密码码哪个好

二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
一张寂寞难开的嘴巴,一对工作自主的鼻孔,两只伤感淡漠的眼睛,两条纠结柔情的眉毛,还有一头个性张扬的黑发,别无其它.
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
#include &string.h&
#include &unistd.h&
#include &pthread.h&
#include &stdlib.h&
#include &errno.h&
#include &sys/types.h&
#include &sys/stat.h&
#include &unistd.h&
#include &fcntl.h&
#include &ctype.h&
#define DEFAULT_THREAD_NUMS 8
&* &-f 要破解的rar文件
&* &-t 设置线程数
&* &-p 指定字典
&* &-h 帮助
#define ARGS "f:t:p:h"
#define LINE_FILE ".rarpsd.line"
#define PSD_FILE "rarpsd.psd"
#define SAVE_FILE ".rarpsd.save"
#define ESC_TABLE "\'\"\\!$&*/[](){};`~?&&|"
#define LINE_THREAD_NUM 4
#define LINE_BUF 16384
#define LINE_SIZE sizeof(buf)
#define TEST_ARG(arg,msg) \
&if(!arg)\
& printf("%s\n",msg);\
& return -1;\
#define THREAD(func) \
&for(i=0;i & thread_++i)\
#define NEXT_LOOP() \
&++psd–&\
&fseek(save,sizeof(PSD)*psd–&index,SEEK_SET);\
&fwrite(psd,sizeof(PSD),1,save);\
typedef unsigned long ULONG;
typedef unsigned int UINT;
typedef struct
&char rar[256];
&char dic[256];
}__attribute__((packed))PSD;
typedef struct
&char rar[256];
&char dic[256];
&int thread_
}__attribute__((packed))SAVE;
typedef struct
void read_line(PSD *psd,int thread_num);
ULONG get_line(char *path);
void count(LINE *line);
void goto_line(FILE *fp,ULONG line);
void unrar(PSD *psd);
int psd_ok(FILE *fp);
void init_password(char *temp,char *password);
void usage(void)
&printf("rarpsd [选项]\n\n\
\t-f 文件 要破解的rar文件\n\
\t-t 数量 设置线程数,默认8线程\n\
\t-p 文件 指定字典\n\
\t-h 帮助\n");
int check_num(char *str)
&while(*str)
& if(!isdigit(*str))
& &return 0;
&return 1;
int main(int argc,char **argv)
&char *rar_f=NULL;
&char *psd_f=NULL;
&int thread_num=DEFAULT_THREAD_NUMS;
&opterr=0;
&pthread_t *
&if(argc == 1 && access(SAVE_FILE,F_OK) == -1)
& usage();
& return -1;
&fp=popen("unrar","r");
&TEST_ARG(fp,"本破解程序需要unrar软件,请安装unrar!");
&pclose(fp);
&while((opt=getopt(argc,argv,ARGS)) != -1)
& switch(opt)
& &case 'f':
& & rar_f=
& & break;
& &case 't':
& & if(check_num(optarg))
& & &thread_num=atoi(optarg);
& & break;
& &case 'p':
& & psd_f=
& & break;
& &case 'h':
& & usage();
& & return -1;
& &case '?':
& & printf("错误的选项 -%c!\n请使用-h查看帮助!\n",optopt);
& & return -1;
&if(access(SAVE_FILE,F_OK) == 0)
& fp=fopen(SAVE_FILE,"rb");
& fread(&save,sizeof(SAVE),1,fp);
& fclose(fp);
& rar_f=(char *)save.rar;
& psd_f=(char *)save.dic;
& thread_num=save.thread_num;
& TEST_ARG(rar_f,"请指定要破解的文件!");
& TEST_ARG(psd_f,"请指定破解的字典!");
& s=fopen(SAVE_FILE,"wb");
& TEST_ARG(fp,strerror(errno));
& snprintf(save.rar,256,"%s",rar_f);
& snprintf(save.dic,256,"%s",psd_f);
&if(access(LINE_FILE,F_OK) == 0)
& id=malloc(sizeof(pthread_t)*thread_num);
& TEST_ARG(id,strerror(errno));
& psd=malloc(sizeof(PSD)*thread_num);
& TEST_ARG(psd,strerror(errno));
& read_line(psd,thread_num);
& if(!(fp=fopen(LINE_FILE,"wb")))
& &perror(LINE_FILE);
& &return -1;
& line=get_line(psd_f);
& if(line == -1)
& &return -1;
& if(line & thread_num)
& &thread_num=1;
& save.thread_num=thread_
& fwrite(&save,sizeof(SAVE),1,s);
& fclose(s);
& id=malloc(sizeof(pthread_t)*thread_num);
& TEST_ARG(id,strerror(errno));
& psd=malloc(sizeof(PSD)*thread_num);
& TEST_ARG(psd,strerror(errno));
& avg=line/thread_
& for(i=0;i & thread_num-1;++i)
& &snprintf(psd[i].rar,256,"%s",rar_f);
& &snprintf(psd[i].dic,256,"%s",psd_f);
& &psd[i].index=i;
& &psd[i].start=i*
& &psd[i].end=psd[i].start+
& &fwrite(&psd[i],sizeof(PSD),1,fp);
& snprintf(psd[i].rar,256,"%s",rar_f);
& snprintf(psd[i].dic,256,"%s",psd_f);
& psd[i].index=i;
& psd[i].start=i*
& psd[i].end=
& fwrite(&psd[i],sizeof(PSD),1,fp);
& fclose(fp);
&THREAD(pthread_create(&id[i],NULL,(void *)unrar,&psd[i]));
&THREAD(pthread_join(id[i],NULL));
&free(id);
&free(psd);
&remove(LINE_FILE);
&remove(SAVE_FILE);
&return 0;
void read_line(PSD *psd,int thread_num)
&if(!(fp=fopen(LINE_FILE,"rb")))
& perror(LINE_FILE);
& exit(-1);
&for(i=0;i & thread_++i)
& fread(&psd[i],sizeof(PSD),1,fp);
&fclose(fp);
ULONG get_line(char *path)
&pthread_t id[LINE_THREAD_NUM];
&LINE line[LINE_THREAD_NUM];
&if(stat(path,&buf) == -1)
& perror(path);
& return -1;
&for(avg=buf.st_size/LINE_THREAD_NUM,i=0;i & LINE_THREAD_NUM;++i)
& line[i].path=
& line[i].start=i*
& if(i == LINE_THREAD_NUM-1)
& &line[i].end=buf.st_size;
& &line[i].end=line[i].start+
& pthread_create(&id[i],NULL,(void *)count,&line);
&for(avg=0,i=0;i & LINE_THREAD_NUM;++i)
& pthread_join(id[i],(void **)&res);
& free(res);
void count(LINE *line)
&char buf[LINE_BUF];
&ULONG l=0;
&if((fd=open(line–&path,O_RDONLY)) == -1)
& perror(line–&path);
& exit(-1);
&if(lseek(fd,line–&start,SEEK_SET) == -1)
& perror("lseek");
& exit(-1);
&while(line–&start & line–&end)
& if((len=read(fd,buf,LINE_SIZE)) & 0)
& &perror("read");
& &exit(-1);
& line–&start+=
& p=(char *)
& if(line–&start & line–&end)
& &len-=line–&start–line–&
& while((p=memchr(p,'\n',(((char *)buf+len)–p))))
&close(fd);
&res=malloc(sizeof(ULONG));
&pthread_exit(res);
void goto_line(FILE *fp,ULONG line)
&char buf[LINE_BUF];
&while(line)
& bzero(buf,sizeof(buf));
& fread(buf,sizeof(buf)-1,1,fp);
& len=strlen(buf);
& p=(char *)
& while((p=strchr(p,'\n')))
& &if(line == 0)
& & len-=(p–(char *)buf);
& & fseek(fp,–len,SEEK_CUR);
& & return;
void unrar(PSD *psd)
&char password[256];
&char command[1024];
&char temp[256];
&if(!(fp=fopen(psd–&dic,"rb")))
& perror(psd–&dic);
& pthread_exit(NULL);
&if(!(save=fopen(LINE_FILE,"r+")))
& perror(LINE_FILE);
& pthread_exit(NULL);
&goto_line(fp,psd–&start);
&while(psd–&start &= psd–&end)
& bzero(temp,sizeof(temp));
& if(fscanf(fp,"%s",temp) != 1)
& &NEXT_LOOP();
& &continue;
& init_password(temp,password);
& snprintf(command,sizeof(command),"unrar t -y -p%s %s 2&&1",password,psd–&rar);
& rar=popen(command,"r");
& if(!rar)
& &perror(psd–&rar);
& &NEXT_LOOP();
& &continue;
& if(psd_ok(rar))
& &FILE *p;
& &if(!(p=fopen(PSD_FILE,"wb")))
& & printf("%s Password: %s\n",strerror(errno),password);
& & remove(LINE_FILE);
& & remove(SAVE_FILE);
& & exit(-1);
& &fprintf(p,"%s\n",temp);
& &fclose(p);
& &remove(LINE_FILE);
& &remove(SAVE_FILE);
& &exit(0);
& pclose(rar);
& NEXT_LOOP();
&fclose(fp);
&fclose(save);
int psd_ok(FILE *fp)
&char buf[1024];
&while(!feof(fp))
& bzero(buf,sizeof(buf));
& fread(buf,sizeof(buf)-1,1,fp);
& temp=(char *)
& while((p=strchr(temp,'\n')))
& &temp+=(p–temp)+1;
& &while(isspace(*p))
& &if(strncasecmp(p-1,"ok",2) == 0)
& & return 1;
&return 0;
void init_password(char *temp,char *password)
&while(*temp)
& if(strchr(ESC_TABLE,*temp))
& &password[i]='\\';
& &password[i+1]=*
& &continue;
& password[i]=*
&password[i]='\0';
阅读(260)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'【c语言】暴力破解rar压缩文件密码',
blogAbstract:'最近下载了一个rar压缩文件,下载回来后发现需要密码,手动猜解了几个密码失败后决定暴破试试,在linux下有一个暴破的工具叫作rarcrack,不过依我这种强迫症,势必是要自己亲自动手的,所以按着自己的想法做了一个暴破的工具。\n程序的原理是从字典中读取密码再通过unrar来进行测试,一但测试成功也就是得到了正确的密码,所以该程序依赖unrar(没有解压工具怎么行)。\n程序是多线程的,默认为8线程,可通过-t参数指定线程数,程序会根据这些线程均匀地从字典中分隔出多个部分(线程数)对应每个线程进程读取破解,所以破解的成功与否关键在于你字典的强大程度当然也要有相当的耐心和一台强大的计算机。\n程序会保留破解状态,这样在未破解完成(字典没有跑完且没有得到正确密码)时退出后还可以再次运行程序接着上次破解的位置继续进行破解。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:5,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'一张寂寞难开的嘴巴,一对工作自主的鼻孔,两只伤感淡漠的眼睛,两条纠结柔情的眉毛,还有一头个性张扬的黑发,别无其它.',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}& 破解rar解压密码集合
在网上下载的文件或者软件,经常遇到一些加密了的RAR文件,有的是原下载网站密码,一般都会在网页上公布密码出来,或者在压缩文件中也会有密码说明。破解rar解压密码软件为您提供密码破解。
用户评分:6.2分
软件大小:0.2MB
总下载量:8,606,084
RAR Password Cracker一个专门用来破解RAR压缩文件密码的程序,通过穷举、密码...
用户评分:8分
软件大小:2.6MB
总下载量:39,059
压缩包密码破解工具Rar Password Unlocker可以帮你安全地收回您的RAR压缩文件的...
用户评分:8分
软件大小:0.7MB
总下载量:22,038
Advanced RAR Repair(ARAR) 是一个强大的修复损坏的 RAR 压缩文档的工具。它使...
用户评分:8分
软件大小:3MB
总下载量:17,106
ZIP RAR ACE Password Recovery是一种用来恢复在压缩或存储的过程中丢失或忘记...
用户评分:3分
软件大小:1.8MB
总下载量:10,646
RAR Password Recovery Magic是一个速度很快,可以帮你找回RAR文件的密码,注...
12345678910
12345678910
12345678910
应用导航:||||||||||
资讯导航:||||||||||
论坛导航:||||||||
推荐合集:您的位置: -
- rar密码破解 合集
rar密码破解工具_rar密码破解器
西西软件园提供最好用的rar密码破解工具,rar密码破解工具支持所有版本的 ZIP/PKZip/WinZip、RAR/WinRAR 以及ARJ/WinARJ 和 ACE/WinACE (1.x),软件适用于 ZIP 和 RAR 档案的高度优化的口令恢复工具。它可以恢复保护口令或将用所有流行的档案版本创建的加密ZIP 和 RAR 档案解除锁定
4.1M / 中文 / 4.54.48 汉化纯净版
支持所有版本的 ZIP/PKZip/WinZip、RAR/WinRAR 以及ARJ/WinARJ 和 ACE/WinACE (1.x)。Advanced A....
896KB / 中文 / V1.53 汉化美化版
一个速度很快,可以帮你找回RAR文件的密码,注册后可以解开多达128位密码。它提供有预估算出密码....
2.1M / 中文 / v6.1.1.263 中文绿色版
RAR Password Recovery Magic 是一个速度很快,可以帮你找回 RAR 文件的密码,注册后可以解开多达....
717KB / 中文 / V1.1 RC10 汉化特别绿色版
一个速度很快,可以帮你找回RAR文件的密码,注册后可以解开多达128位密码。它提供有预估算出密码....

我要回帖

更多关于 rar解压密码破解器 的文章

 

随机推荐