暴力破解带有密码的压缩文件

暴力破解带有密码的压缩文件一暴力破解,就是不断生成新的密码去尝试能否破解成功。假如我们的密码位数为3位,其里面的值有可能是0或者1,其产生的密码集的数量为2的3次幂,也就是八个,然后一个一个去破解。而这生成这8个密码的过程就有一个递归规则存在。我们传入深度deep和对应字符串passwd两个参数,如果深度为1,直接输出字符串passwd,如果深度不为1,把深度deep减一,并把可能存在的字符串集合[0,1]遍历,添加…

大家好,又见面了,我是你们的朋友全栈君。

暴力破解,就是不断生成新的密码去尝试能否破解成功。假如我们的密码位数为3位,其里面的值有可能是0或者1,其产生的密码集的数量为2的3次幂,也就是八个,然后一个一个去破解。而这生成这8个密码的过程就有一个递归规则存在。
暴力破解带有密码的压缩文件
我们传入深度deep和对应字符串passwd两个参数,如果深度为1,直接输出字符串passwd,如果深度不为1,把深度deep减一,并把可能存在的字符串集合[0,1]遍历,添加到passwd的后面,重新回到这个递归函数,直到深度deep为1输出。

二 解压压缩文件
网上有对应的jar包去解压压缩文件,但是我这里使用一种比较简单的方法去实现,本地电脑window上装有winrar,java调用本地winrar.exe去解压压缩文件。
其核心代码为:

C:\Program Files\WinRAR\WinRAR.exe  x -ibck -hp123 -y F:\\BaiduNetdiskDownload\\yewen4\\a.rar D:\\test\\unrar\\

第一个路径是winrar.exe的路径,第二个路劲是需要解压缩文件的路径地址,第三个是存放的路径。-hp后面的123表示密码。

下面是代码的实现

 /**
     * 
     * @param filePath 解压文件路径
     * @param targetPath 解压之后存放的路径
     * @param passwd 密码
     * @return
     * @throws Exception
     */
public static int unrar(String filePath,String targetPath,String passwd) throws Exception {
		//winrar的执行路径
        String rarPath="C:\\Program Files\\WinRAR\\WinRAR.exe";
        StringBuilder sb = new StringBuilder();
        sb.append(rarPath);
        sb.append(" x -ibck -hp");
        sb.append(passwd).append(" -y ").append(filePath+" "+targetPath);
        Process process;

        process = Runtime.getRuntime().exec(sb.toString());
        if(process.waitFor() ==0 ){
            FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\test\\unrar\\getPassyewen4.txt"));
            String s = "解压后的密码:"+passwd;
            fileOutputStream.write(s.getBytes());
            fileOutputStream.flush();
            fileOutputStream.close();
            return 1;
        }else{
            System.out.println(new Date()+"--失败:"+passwd);
            return 0 ;
        }
    }

	 /**
     * 递归获取密码过程
     * @param deep 深度
     * @param parent 密码
     * @return
     * @throws Exception
     */
    public static int findpwd(int deep,String parent) throws Exception {
        String[] dir ={"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l",
                "z","x","c","v","b","n","m","Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X",
                "C","V","B","N","M","1","2","3","4","5","6","7","8","9","0","`","!","@","#","$","%","&","*","(",")","-","_","+","=","[",
                "]","{","}","|","\\","\"",":",";","\'","<",">",",",".","?","/"};
        if(deep == 1){
            if(unrar("","",parent) == 1){
                return 1;
            }else{
                return 0;
            }
        }else{
            for(int j =0;j<dir.length;j++){
                if(findpwd(deep-1,parent+dir[j]) ==1 ){
                    return 1;
                }
            }
        }
        return 0;
    }

文章最后的总结:
破解的难度跟设置密码的长度有关,破解一位的密码只需要92的1次幂个密码,而破解六位的密码需要92的6次幂个密码,其难度可想而知。所以这里写的内容只供学习参考。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139685.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pcanywhere远程控制的步骤_windows10远程桌面端口修改

    pcanywhere远程控制的步骤_windows10远程桌面端口修改  PcAnywhere远程连接默认端口是5631[数据端口]、5632[状态端口],实际发现其实防火墙打开5631[数据端口]端口就可以自由访问。要改变Pcanywhere数据端口[5631]要去编辑系统注册表,找到以下键值:开始->运行->regedit:HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\pcAny…

  • MATLAB画图颜色渐变「建议收藏」

    MATLAB画图颜色渐变「建议收藏」原文(https://wenku.baidu.com/view/bf87a9d5804d2b160a4ec03f.html)1渐变1.1t=[linspace(0,2*pi)nan];x=sin(t);y=cos(2*t);z=sqrt(t);%所要绘制的曲线方程patch(x,y,z,z,’edgecolor’,’flat’,’facecolor’,’none’)vi…

  • h5电商模板_网站模板

    h5电商模板_网站模板[HTML+CSS]电商网站模板b站白嫖的网课,黑马的小兔鲜儿案例,教程链接点这里就行成品文件目录结构CSSbase.css:基本样式,内外边距,字体之类的common.css:网页的公共样式,一般是header部分和footer部分index.css:首页样式imageslogo.png:网站logosprites.png:拿来存精灵图的、uploads以图片为主,主要存放需要经常更新的资源例如商品图片,活动图片等favicon.ico网站图标index.

  • 磁共振中t1和t2是什么意思_核磁共振t1和t2区别

    磁共振中t1和t2是什么意思_核磁共振t1和t2区别从物理的角度,要理解这几个概念的区别,需要对原子核的磁化有所了解,本文通过一些图示对这几个概念进行简明的介绍。从物理的角度,要理解这几个概念的区别,需要对原子核的磁化有所了解,本文通过一些图示对这几

  • myeclipse注册码获取

    myeclipse注册码获取首先在myeclipse随便新建一个javaproject,然后在默认的package中新建一个java文件我名字命名为MyEclipseGen,下面是代码:importjava.io.*;publicclassMyEclipseGen{privatestaticfinalStringLL=”Decompilingthiscopyrighted…

  • Java的三种取整方法「建议收藏」

    方法一:向上取整Math.ceil();举例:Math.ceil(11.4)=12;Math.ceil(-11.6)=-11;方法二:向下取整Math.floor();举例:Math.floor(11.7)=11;Math.floor(-11.2)=-12;方法三:四舍五入Math.round();顾名思义,四舍五入后取整,其算法为Math.round(x+0.5),即原来的数字加上0.5后再想下

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号