admin管理员组

文章数量:1632157

rar5 网上大多数爆破软件不支持,只支持rar5以下的

所以自己写了一个爆破程序,考虑性能,用Golang 去写 ,用到Golang 里面的GO程

Go 没有支持 rar5  解压 的包,故调用 cmd 命令去执行

1、先下载 WinRAR 压缩软件 ,给 cmd 命令调动

2、把 WinRAR加入环境变量(方便 cmd 命令使用 unrar )

3、测试一下 是否可以调用

cmd := exec.Command("unrar", "e","-p"+pass,rarpath,"D:/test")  //解压出来保存 D/test 上
out, _ := cmd.Output()
fmt.Println(string(out))

4、加载密码集,密码自己生成 ,可以参考我用 python 写的 密码生成器

https://blog.csdn/a519395243/article/details/100574062

    passpath := "pass.txt" 
    fp, _ := os.OpenFile(passpath , os.O_RDONLY, 6)
	defer fp.Close()

	// 创建文件的缓存区
	r := bufio.NewReader(fp)
	for {
		pass, err2 := r.ReadBytes('\n')
		if err2 == io.EOF {      //文件末尾
			break
		}
		pass = pass[:len(pass)-2]   // 去除末尾 /n
		fmt.Println(pass)
	}

5、最后代码集合,用到Go 程

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"os/exec"
	"time"
)

var passpath  string= "C:/Go/src/GoItem/pass.txt"   //密码集 路径
var rarpath string= "C:/Go/src/GoItem/aa.rar"    	// rar 文件路径

var password = make(chan string)   //创建管道,接收密码
var isOver = make(chan bool) //判断是否退出

func main() {
	go passtxt(passpath)


Loop:
	for{
		select {
		case rarpass:= <-password :
			go cmdshell(rarpath,rarpass)
		case  <-time.After(time.Second * time.Duration(1)) :
			break Loop
		case <- isOver:
			break Loop
		}
	}

}

func cmdshell(rarpath string,pass string){
		cmd := exec.Command("unrar", "e","-p"+pass,rarpath,"D:/test")  //解压出来保存 D/test 上
		out, _ := cmd.Output()

		fmt.Println(pass)
		if  len(out) == 248{    //len 248 为成功,每个人不同
			fmt.Printf("密码为:%s \n",pass)
			isOver<-true  // 成功后退出
		}
}

func passtxt(passpath string) {
	fp, _ := os.OpenFile(passpath , os.O_RDONLY, 6)
	defer fp.Close()

	// 创建文件的缓存区
	r := bufio.NewReader(fp)
	for {
		pass, err2 := r.ReadBytes('\n')
		if err2 == io.EOF {      //文件末尾
			break
		}
		pass = pass[:len(pass)-2]   // 去除末尾 /n
		password <- string(pass)
	}
}

 

本文标签: 压缩文件密码Golang