2017-09-03 4 views
0

私は倫理ハッキングコースを受講しています。コースの一部は、パスワードリストのテキストファイルからロックされたzipファイルのパスワードを見つけるPythonスクリプトを作成しています(理にかなっていればうれしいです)。基本的に、各パスワードを試してテキストファイルを繰り返します。スクリプトはうまくいかず、エラーも出されず、インストラクターは「うーん、それは私のために働く」と言います。ここではスクリプトがあります:倫理ハッキングスクリプトが機能しない - エラーメッセージなし

import optparse 
import zipfile 
from threading import Thread 

def extract_zip(zfile, password): 
    try: 
     zfile.extractall(pwd=password) 
     print("[+] Password Found: " + password + '\n') 
    except: 
     pass 

def main(): 
    parser = optparse.OptionParser("usage %prog "+\ 
            "-f <zipfile> -d <dictionary>") 
    parser.add_option('-f', dest='zname', type='string',\ 
         help='specify zip file') 
    parser.add_option('-d', dest='dname', type='string',\ 
         help='specify dictionary file') 
    (options, arg) = parser.parse_args() 
    if (options.zname == None) | (options.dname == None): 
     print(parser.usage) 
     exit(0) 
    else: 
     zname = options.zname 
     dname = options.dname 

    zFile = zipfile.ZipFile(zname) 
    passFile = open(dname) 

    for line in passFile.readlines(): 
     password = line.strip('\n') 
     t = Thread(target=extract_zip, args=(zFile, password)) 
     t.start() 

if __name__ == '__main__': 
    main() 

他の2つのファイルは、パスワードのリストをテキストファイル、テキストファイルからのパスワードのいずれかがロックを解除するパスワード保護されたzipファイルです。

コース内には、optparseが欠損していると言われるスレッドがあり、argparseがその置き換えですが、スクリプトを書き直しても機能しません。

私がコースのこの部分を閉じたいのであれば、なぜこれがうまくいかないのかについての助けを求めています。

ありがとうございました。

+0

パスワードの抽出を担当するif条件でコードデバッグをデバッグしましたが、ファイルの読み取り中に何らかのエラーが発生している可能性があります。 –

+0

私はそれをどうやって行うのか分かりません。私はデバッガを使用しようとしましたが、それは今私の知識を超えています。コードを見ると、(オプション、引数)は問題ですか? – Steve

+1

pycharmをインストールし、Pythonで簡単にデバッグするためにYouTubeに行くのは簡単です。 –

答えて

-1

私はそれが私がずっと前にそれが暴力的な何か

password.txtという名前の本がこのラインに

被害者含める必要がある これをしなかった問題なくexcutedのpython3を使用してコードを実行します。HX9LLTdc/JIDE:503 :100:IAMAの被害者:/ホーム/被害者:/ binに/ shの ルート:DFNFxgW7C05fo:504:100:マーカス・ヘス:/ルート:/ binに/ bashの

とコマンドが のpython stack.pyのようになります - f evil.zip -d passwords.txt

そして...

password = bytes(password.encode('utf-8'))

print("[+] Password Found: " + (password.decode("utf-8")) + '\n')

print('[+] Password Found: ' + password + '\n')

を変更: - 上記の私のコメントパー

0

は、私はちょうど "試す" 文の下の下のコードを追加しました

パスワードを取得しましたコンソールに印刷され、zipファイルは解凍されます。ここに最終的な作業コードがあります。

import optparse 
import zipfile 
from threading import Thread 


def extract_zip(zfile, password): 
    try: 
     password = bytes(password.encode('utf-8')) 
     zfile.extractall(pwd=password) 
     print("[+] Password Found: " + (password.decode("utf-8")) + '\n') 
    except: 
     pass 


def main(): 
    parser = optparse.OptionParser("usage %prog " + '-f <zipfile> -d <dictionary>') 
    parser.add_option('-f', dest='zname', type='string', help='specify zip file') 
    parser.add_option('-d', dest='dname', type='string', help='specify dictionary file') 
    (options, args) = parser.parse_args() 
    if (options.zname is None) | (options.dname is None): 
     print(parser.usage) 
     exit(0) 
    else: 
     zname = options.zname 
     dname = options.dname 

    zFile = zipfile.ZipFile(zname) 
    passFile = open(dname) 

    for line in passFile.readlines(): 
     password = line.strip('\n') 
     t = Thread(target=extract_zip, args=(zFile, password)) 
     t.start() 


if __name__ == '__main__': 
    main() 

私はこれを見つけた方法は、コンソールに例外を印刷する声明「以外」変更していた。そこから

except Exception as e: print(e) 

私が解決する問題のカップルを持っていたが、少なくとも私が持っていました動作するエラー。パスワードがコンソールに正常にログされたら、私は例外のステートメントを「パス」に戻します。失敗したパスワードを見る必要はありません!

これは、これが私が持っていたのと同じ問題に他の誰かが役立つことを望みます。

関連する問題