web-dev-qa-db-ja.com

カスタムの総当たり辞書をどのように生成できますか?

テスト中に、企業が重要なパスワードにさまざまな名前を使用することが多いことを発見しました(たとえば、MicrosoftのパスワードはM1cr0s0f +またはm1cros0ftなど)。

したがって、「スタック交換」というフレーズを指定した場合、次のようなものを含む、可能な限り多くの論理バリエーションを計算するのが理想的です。

stack_exchange!

私は多くの 辞書ジェネレータ を見てきましたが、それらはすべて、

aaaaaaa
aaaaaab
aaaaaac
aaaaaad

「最初の」単語を指定して多数の順列を生成できるツールがあるかどうか疑問に思っています。

13
NULLZ

crunch-wordlist generator を使用してみてください。

使い方は:

./crunch <from-len> <to-len> [-f <path to charset.lst> charset-name] [-o wordlist.txt or START] [-t [FIXED]@@@@] [-s startblock]

-tオプションを使用すると、パターンを指定できます。例:st%ck ^%xch%ng%

どこだけ

  • @は小文字に変わります
  • 、は大文字で変わります
  • %は数字で変わります
  • ^は記号で変わります

次のように実行:

./crunch 14 14 -t st%ck^%xch%ng% -o wordlist.txt

330000の結果を与えます:

st0ck!0xch0ng0
st0ck!0xch0ng1
st0ck!0xch0ng2
st0ck!0xch0ng3
st0ck!0xch0ng4
st0ck!0xch0ng5
st0ck!0xch0ng6
...

文字セットが不十分だと思われる場合は、文字セットを変更することもできます。

あなたが話していることを実行するツールを作成しました。これは基本的にWordを受け取り、大文字/小文字および一般的な置換で文字を置き換えることにより、さまざまな可能なパスワードを生成します。こちらをご覧ください。

https://github.com/Broham/PassGen

stackexchangeのターゲットWordの場合、基本的には可能なすべての文字置換のデカルト積を作成するため、潜在的なパスワードはかなり長くなります。以下の電話:

python passgen.py -f stackexchange

以下に示すように、11,943,936個のパスワードを含むリストを生成します。

stackexchange
stackexchangE
stackexchang3
stackexchanGe
stackexchanGE
.
.
.
574<K3+<#4N9e
574<K3+<#4N9E
574<K3+<#4N93
5
Abe Miessler

どうぞ!私はそれを数ヶ月前に作りました、それはPython 2.7スクリプトです:pそれが役に立てば幸いです

import time
print ("---------------------------------------------------");
print ("Welcome to BruteForce List Generator!");
print ("---------------------------------------------------");
print ("File output can be long, sometimes in x100Mbs!");
print ("so, have patience fgt,");
print (" ");
print ("Press ^C to exit");
print ("---------------------------------------------------");
length=int(raw_input("Enter the maximum of characters: "))
name=raw_input("Enter destination file name with extension (.txt): ")
tic = time.clock()
print ("---------------------------------------------------");
print ("Running, Please Wait!");
print ("---------------------------------------------------");
lista=[0 for x in xrange(length)]
x=length-1
string="abcdefghijklnmopqrstuvwxyz1234567890"
list_of_results=[]
file1=file(name,"w")
while(x>-1):
    result=""
    if lista[x]==len(string)-1:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]=0
        x-=1
    Elif x==length-1:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]+=1
    else:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]+=1
        if x>0:
            x+=1
        else:
            x=length-1
    file1.write(result+"\n")
toc = time.clock()
ttn = toc - tic
print ("Done! in "+str(ttn)+" seconds.");
print ("Please check "+str(name)+" in your directory");
print ("---------------------------------------------------");

乾杯!

2
v1k45

アルゴリズムへの影響についてはよくわかりません(つまり、私のソリューションには改善すべき点がたくさんあります)。

すべての文字には代替スペルがあります。あなたの例から、oO,0の配列になります(最後のものはゼロです)。同様に、sS,5などを取得します。NULL!,1,2,3...などに置き換えることができます。該当する場合、ダイグラフも可能です。

ですから、あなたは言葉を入れ替えるのではなく、文字を入れ替えます。プリコンパイルされたルールセットが存在するかどうかはわかりませんが、関係ありません。最も時間がかかる部分は、文字の順列を入力することです。メインループは完全に簡単です。

for($i=0; $i<strlen($Word); $i++){
    $l=$Word[$i];
    for($j=0; $j<strlen($perms[$l]); $j++){
        save(perms[$l][$j]);
    isUpper($l) ? $Word[$i]=tolower($l) : $Word[$i]=toupper($l);
    save($Word);
}

一部のPHP風味の疑似コード。 PHPを選択した理由は、連想配列を使用すると少し快適になるためです。つまり、ツールを自分で作成する方が、実際にツールを検索するよりも高速な場合があります。

2
rath

これを行うためのQtアプリケーションの作成を開始しました。特定のユーザーに対して使用するように設計されています。私は自分のニーズを満たすために作成したので、一方向に調整されていますが、よりカスタマイズ可能にする予定です。現時点では自分でコンパイルする必要がありますが、Qtなのでほとんどのプラットフォームで実行できます。

Github にあります

ユーザーに会社名を付け、オプションで追加のキーワードを付ければ、それに基づいてパスワードが生成されます。現在0.1であり、活発に開発中です。コードは簡単なので、必要なことが正確に実行されない場合は、変更を加えることができます(そしてそれらを元に戻すことさえできます)

enter image description here

1
squareborg

うーん。追加の構成でこれを使用できます

https://github.com/TilakMaddy/-BruteForceListGenerator-

0
Tilak Maddy