2014-01-10 4 views
-1

단어의 사전을 테스트하여 winrar 암호로 보호 된 파일을 열어 테스트하고 싶습니다. 이것은 내 코드이지만 아무런 도움이되지 않습니까? 감사합니다Python on 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

을 – CharlesB

+2

을 수 '작동하지 않는다 '는 뜻을 설명해 주시겠습니까? 코드 관련 문제에 대해 더 구체적으로 질문하십시오. – aIKid

+0

@CharlesB 및 다른 줄도 있습니다. – glglgl

답변

1

첫 번째 인수는 배열이지만 전체 명령을 사용합니다.

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

편집 : 뭔가를 시도

을 난 당신이 또한 출력 파일이 생성되어 있는지 확인해야합니다 생각합니다. 어쩌면 암호가 올바르지 않은 unrar은 출력 파일을 생성하지 않습니다. 생성되었는지 확인하십시오 (예 : os.path.isfile() 사용). unrar 출력을 검사하여 문제가있는 곳을 확인할 수도 있습니다.

EDIT2 :

그것은 전체 경로 아무 Xrar 명령 에 파일의 압축을 풉니 없었다 것으로 보인다.

내가 Order.rar에 암호 파일 Order.htm와 에드을 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는 unrar -ppassword xfile.rar로 작동하지만 subprocess 호출에서 다음을 추가합니다. subprocess.call ([ 'c : \\ mio \\ unrar \\ unrar.exe', '-p' , 암호, 'xC : \\ mio \\ unrar \\', rFile]) 도스 창을 열지 만 수동으로 암호를 대기 중임 – user3180949

+0

'x' 또는'e '와 같은'unrar' nedds 명령으로 보입니다 –

+0

감사합니다. 괜찮아! – user3180949

관련 문제