-1

我想测试打开一个winrar密码保护的文件,用字典测试。这是我的代码,但它不起作用可以帮助我吗?谢谢

import subprocess
def extractFile(rFile, password):
try:
    subprocess.call(['c:\\mio\\unrar\\unrar.exe -p'+password+'x C:\\mio\\unrar\\'+rFile,'shell=True'])
    return password
except:
    return
def main():    
rFile = "c:\\mio\\unrar\msploit.rar"
passFile = open("C:\\mio\\unrar\\dic.txt")
for line in passFile.readlines():
    password = line.strip('\n')

    guess = extractFile(rFile, password)
    print(password)
    if guess:
       print '[+] Password = ' + password + '\n'
       break
if __name__ == '__main__':
main()
4

1 回答 1

1

第一个参数call()是一个数组,但您使用完整的命令。尝试类似:

subprocess.call(['unrar.exe', 'x', '-p'+password, rarfn], shell=True)

编辑:

我认为您还必须检查是否创建了输出文件。也许unrar密码不正确不会创建输出文件。检查它是否已创建(例如 use os.path.isfile())。您还可以检查unrar输出以查看问题出在哪里。

编辑2:

似乎没有x rar命令来提取具有完整路径的文件

Order.htm这是一个工作示例,我在其中输入密码文件Order.rar,然后删除Order.htm

rarfn = 'Order.rar'
outfn = 'Order.htm'
if os.path.isfile(outfn):
    print('%s already exists!!!' % (outfn))
else:
    for password in ('ala', 'ma', 'kota', 'zorro', 'rudy'):
        print('testing %s...' % (password))
        subprocess.call(['unrar.exe', 'x', '-p'+password, rarfn], shell=True)
        if os.path.isfile(outfn):
            print('guessed: [%s]' % (password))
            break
于 2014-01-10T09:08:10.447 回答