RarFile Python模块

时间:2016-08-02 18:46:29

标签: python python-3.x zipfile rar

我正在尝试为rar文件制作一个简单的bruteforcer。我的代码是......

import rarfile

file = input("Password List Directory: ")
rarFile = input("Rar File: ")

passwordList = open(file,"r")


for i in passwordList:

    try :
        rarfile.read(rarFile, psw=i)
        print('[+] Password Found: '+i)

    except Exception as e:
        print('[-] '+i+' is not a password ')

passwordList.close()

我认为这与我对模块的使用有关,因为当我输入密码列表时,我确保包含rarFile的密码10000%,它会打印异常。

1 个答案:

答案 0 :(得分:1)

这里真正的问题是你正在捕捉所有异常,而不仅仅是你想要的异常。所以使用except rarfile.PasswordRequired:这将告诉您错误不是缺少密码。相反,rarfile模块中没有函数read

看一些Documentation。 Rar加密是按文件进行的,而不是每个存档。

您需要从RarFile类创建一个对象,并在存档中的每个文件上尝试使用密码。 (或者只是第一个,如果你知道它是加密的)

import rarfile

file = input("Password List Directory: ")
rarFilename = input("Rar File: ")

rf = rarfile.RarFile(rarFilename)
passwordList = open(file,"r")
first_file =  next(rf.infolist)

for i in passwordList:
    password = i.rstrip()        
    try:
        rf.open(first_file, psw=password)
        print(password, "found")
    except rarfile.PasswordRequired:
        print(password,"is not a password")

当您打开并读取文件中的行时,将保留“新行”字符 在行尾。这需要从每一行中删除。

for i in passwordList:
    password = i.rstrip()
    try :
        rarfile.read(rarFile, psw=password)
        print('[+] Password Found: '+password)