Search code examples
pythonpython-3.xziprar

RarFile Python Module


I am trying to make a simple bruteforcer for rar files. My code is...

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()

I think this has to do with my use of the module, because when I input a password list that I am 10000% sure contains the password to the rarFile, it prints the exception.


Solution

  • The real problem here is that you are catching all exceptions, not just the one you want. So use except rarfile.PasswordRequired: That will show you that the error is not a missing password. Instead there is no function read in the rarfile module.

    Have a look at some Documentation. Rar encryption is per file, not per archive.

    You need to create a object from the RarFile class and try the password on each file in the archive. (or just the first if you know that is encrypted)

    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")
    

    When you open and read lines from a file, the "new line" character is kept at the end of the line. This needs to be stripped from each line.

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