web-dev-qa-db-ja.com

JohnTheRipperを使用したブルートフォース英数字パスワード

最近、アクセスが必要ないくつかのファイルを含むZipアーカイブを復元しましたが、パスワードを思い出せません。私が覚えているのは、パスワードが短く(約3〜4文字)、小文字しか含まれておらず、数字のみだった)ことです。ただし、リッパージョンには、この特定の状況に対応するインクリメンタルモードはありません。そこに最も近いのはlanmanです。これには、大文字を含めることで、可能なパスワードのセットが劇的に増加します。

たとえば、john.confファイルを編集して、特定のモードが4文字のみになるようにできますが、試行する文字セットをカスタマイズする方法がわかりません。どうすればこれを行うことができますか?

5
andrepd

小文字+数字

インクリメンタルには、実際には小文字+数値用の事前定義モードがあります。

[Incremental:LowerNum]
File = $JOHN/lowernum.chr
MinLen = 1
MaxLen = 13
CharCount = 36

ドキュメントから

「小文字」(小文字と数字、合計36)

MinLenMaxLenを調整するだけです。

特定の文字で新しいインクリメンタルモードを作成する

カスタマイズされた文字セットを使用して独自のchrファイルを作成する場合は、次のようにします。

john --pot=YOUR.pot --make-charset=YOUR_NEW_FILE.chr --external=filter_lowernum

filter_lowernumは、chrファイルに含める文字を決定するフィルターです。 john.conf (下 [List.External:Filter_LowerNum])、そして 独自のフィルターを作成する もあります。 LowerNumのコードは次のようになります。

[List.External:Filter_LowerNum]
void filter()
{
    int i, c;

    i = 0;
    while (c = Word[i++])
    if (((c < 'a' || c > 'z') && (c < '0' || c > '9')) || i > 13) {
        Word = 0; return;
    }
}

次に、インクリメンタルフィルターを構成に追加します。

5
tim

次のpythonコードを実行してこれを行うことができます

import zipfile,sys,time
import itertools
def extractFile(zFile, password):
    try:
        answer= zFile.extractall(pwd=password)
        print 'Fount password : ', password
        return True
    except:
        #print password + " was incorrect"
        return False
def main(ifile):
    zFile = zipfile.ZipFile(ifile)
    pass_str = "abcdebcdefghijklmnopqrstuvwxyz0123456789"
    for pass_len in range(1,5):
        passwords = itertools.permutations(pass_str,pass_len)
        for password in passwords:
            #print password
            #time.sleep(.01)
            password = ''.join(password)
            sys.stdout.write("\r checking .. %s" % password )
            sys.stdout.flush()

            if (extractFile(zFile, password)):
                print "checked  "+password+"  ..."
                sys.exit()

if __name__ == '__main__':
    try:
        ifile = sys.argv[1]
    except:
        print "please run like  'python python-file-name.py Zip-file-name.Zip'"
        sys.exit()    
    main(ifile)

このプログラムは外部ライブラリを必要としません。その純粋なpython。 llkeを実行するだけ

python python-file-name.py Zip-file-name.Zip

3
open source guy

John the Ripper(JtR)を使用すると、次のコマンドでZipファイルのパスワードを見つけることができます。

Zip2john.exe example.Zip > hash.txt
john.exe --incremental=LowerNum hash.txt