web-dev-qa-db-ja.com

パスワードリストの生成、順列、長いパスワード

パスワードがどのようなものであるリストを生成する方法が何であるのか疑問に思いました:

CorrectHorseBatteryStaple
BanjoTurtleNinjaHobo
PizzaSurfMotherMetal
etc...

私はすでにクランチを少しいじっていましたが、並べ替える単語のグループを選択する方法が見つかりませんでした。英語の単語(記事などは数えない)のワードリストで実行し、ランダムに3〜5語を取得し、それらを並べ替えるためにそれらを放り投げるスクリプトを書くことを考えましたが、結果として得られるワールドリストはすぐに到達することに気付きました役に立たない次元。

たぶん、単語のセットごとに順列の一部を生成する方法があるかもしれません。リストは完全ではありませんが、少なくともそれは使用できます。

たとえば、最初の2000の最もよく使われる単語(記事などを考慮しない)からランダムに4単語を選び、それらの4単語(または3または5)を並べ替えます。

いくつかの数字を実行する:

combinations of 4 words out of a group of 2000: 664,668,499,500 ( 664 Bilions ).
permutations of 4 words: 4! = 24

24 * 664,668,499,500 = 15,952,043,988,00 ( 15,952 Bilions ).

これは、30 PBを少し超える単語リストのようなものを意味します。 (私は各ワードに7バイトを想定しました)。過度に。

これらの組み合わせの半分をとっても、15 PBの素材をスキャンすることになります。

それらは、10000ワード/秒で100ワードのノンストップパスワードクラッキングです。いいえ、結構です。

もっと賢いアイデアはありますか?この種のパスワードはほとんど解読できないと私は思い始めています。

2
WhiteEyeTree

考えられるすべての順列を格納することは、あまり適切にスケーリングされないことは100%正しいです。

ソースワードリストから「オンザフライ」で(結果を保存する必要なく)すべての可能なパスフレーズを生成する効率的な方法は、hashcatプロジェクトの princeprocessor を使用することです。

$ cat wordlist.txt
Correct
Horse
Battery
Staple

$ pp64 --elem-cnt-min=4 <wordlist.txt | head
HorseHorseHorseHorse
HorseHorseHorseStaple
HorseHorseStapleHorse
HorseStapleHorseHorse
StapleHorseHorseHorse
HorseHorseStapleStaple
HorseStapleHorseStaple
StapleHorseHorseStaple
HorseStapleStapleHorse
StapleHorseStapleHorse

デフォルトでは、生成されるパスワードの最大長は16文字です。あなたのユースケースでは、おそらくそれを上げたいでしょう(それで上記がうまくいくでしょう):

--- pp.c    2018-01-06 14:55:52.259441280 -0900
+++ pp.c.new    2018-01-14 18:20:51.162651928 -0900
@@ -29,7 +29,7 @@
 #define IN_LEN_MAX    32
 #define OUT_LEN_MAX   32 /* Limited by (u32)(1 << pw_len - 1) */
 #define PW_MIN        1
-#define PW_MAX        16
+#define PW_MAX        32
 #define ELEM_CNT_MIN  1
 #define ELEM_CNT_MAX  8
 #define WL_DIST_LEN   0

...そして再コンパイル:

$ make clean
rm -f pp32.bin pp64.bin pp32.exe pp64.exe pp32.app pp64.app

$ make
gcc   -W -Wall -std=c99 -O2 -s -m64 -DLINUX   -o pp64.bin pp.c mpz_int128.h

$ ls -la pp64.bin
-rwxr-xr-x 1 user user 22912 Jan 14 18:27 pp64.bin

Princeprocessorのキラー機能は、何らかの理由でプロセスを中断する必要がある場合に、-sフラグを使用して、中断したところから再開できることです。終了時に「pp.save」ファイルに復元値を保存し、その値を使用して、中断された場所を正確に再開できます。数十億回の推測も可能です。これにより、大きな静的ワードリストの値がさらに向上します。

1
Royce Williams