我正在尝试为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%,它会打印异常。
答案 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)