2014-01-10 3 views
-1

Я хочу, чтобы тест открывал защищенный паролем winrar файл, проверяя с помощью слова слова. Это мой код, но он не работает, может мне помочь? спасибоPython на подпроцессе windows не работает

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

вы должны отступа 'Main()' линии (последний) – CharlesB

+2

Можете ли вы пожалуйста, объясните, что вы подразумеваете под 'не работает'? Пожалуйста, будьте более конкретными, когда спрашиваете о проблеме с вашим кодом. – aIKid

+0

@CharlesB и другие линии. – glglgl

ответ

1

Первый аргумент call() - это массив, но вы используете полную команду. Попробуйте что-то вроде:

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

EDIT:

Я думаю, вы также должны проверить, если выходной файл будет создан. Возможно, unrar с неправильным паролем не создаст выходной файл. Проверьте, если он создан (например, используйте os.path.isfile()). Вы также можете просмотреть вывод unrar, чтобы узнать, где проблема.

EDIT2:

кажется, что не было хrar команда в Извлечение файлов с полным путем.

Это рабочий пример, где я 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 
+0

Спасибо, unrar в режиме dos работает нормально с unrar -ppassword xfile.rar, но в вызове подпроцесса, помещая это: subprocess.call (['c: \\ mio \\ unrar \\ unrar.exe', '-p' , пароль, 'xC: \\ mio \\ unrar \\', rFile]) открывает окна dos, но ждет пароль вручную – user3180949

+0

Кажется, команда 'unrar' nedds как' x' или 'e' –

+0

Большое спасибо, он работает нормально !!! – user3180949

Смежные вопросы