900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > golang 爆破破解 rar5 压缩文件密码

golang 爆破破解 rar5 压缩文件密码

时间:2018-11-07 10:46:44

相关推荐

golang 爆破破解 rar5 压缩文件密码

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

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

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

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

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

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

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

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

/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] // 去除末尾 /nfmt.Println(pass)}

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

package mainimport ("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 Loopcase <- isOver:break Loop}}}func cmdshell(rarpath string,pass string){cmd := mand("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] // 去除末尾 /npassword <- string(pass)}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。