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 爆破破解 rar5 压缩文件密码 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729114285a1187131.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论