実際のユーザーパスワードの分析と徹底的な検索の改善

今日、Habrの記事「 パスワードの文字の配布」の翻訳を読みました。 ちょっとした分析をしたかった。 私にとって興味深いのは、パスワードの長さ、パスワードの最初の文字、およびパスワードで使用されるバイグラム(隣接する文字のペア)です。 また、この記事では、パスワードの完全な列挙を改善するためのアルゴリズムを検討します。



ここからパスワード付きのアーカイブをダウンロードしました: http : //thepiratebay.org/torrent/6443601

分析に1つのファイルのみを使用しました: Sony_Pictures_International_BEAUTY_USERS.txt

パスワードの数: 20 921



記事の写真はクリック可能です。



最も一般的なパスワードの長さは何ですか?











ユーザーパスワードの長さが異なることがわかります。 ユーザーが6文字より短いパスワードを持っているのは驚くべきことです。 登録システムが一般にそのようなパスワードの使用を許可しているのは奇妙です。 この長さのパスワードの数は、パスワードの総数の2.5%未満です。 35の長さの2つのパスワードがあります-パスワードを生成するための何らかのプログラムによって受信された可能性が非常に高いです。



パスワードにはどの文字が使用されますか?











予想通り、人気の母音が最初に来て、数字の付いた子音がそれに続きます。 大文字は、それほど頻繁に使用されません。 大文字の文字数は、すべての文字数の2.8%未満です。



パスワードはどの文字で最も頻繁に始まりますか?











ほとんどの場合、パスワードは文字s、m、b、cで始まります。 次に人気のあるキャラクターは、p、t、d、a、j、l、rです。 あまり人気のない文字のグループは、g、k、1、h、f、w、n、eです。 この意味では、他のすべてのキャラクターはあまり人気がありません。



パスワードのどのバイグラム(隣接する文字のペア)は、他のものよりも一般的ですか?











図からわかるように、バイグラムの分布は完全にランダムではありません。 人気の降順で最も一般的な5つのバイグラム:

ar(1367)、le(1315)、on(1239)、つまり(1136)、es(1134)。



文字が可算アルファベットに属するさまざまな長さの単語の列挙を線形化するアルゴリズム。



次に、 2文字の単語の組み合わせを列挙するための線形化アルゴリズムを検討します。 シンボルはカウントアルゴリズムに属します(必ずしも有限ではありません)。











カウント可能なアルファベットの3文字から単語の列挙を整理する必要がある場合はどうなりますか? 3次元の立方体を迂回する数式を考えたくありません。 四角い丸を配置し、文字の1つを丸みを帯びた2文字の単語の数として解釈できます。 したがって、任意の長さの単語のクロールを整理することが可能です。



異なる長さの単語を回避することに特別な注意を払う必要があります。 「単語長」と単語自体のバイパスをさらに線形化する必要があります。 したがって、文字がカウント可能なセットに属するすべての長さの単語がソートされます。



実際、今では、あらゆる長さの単語を列挙するタスクと、無限のアルファベットに直面しています。 アルファベットは実際には有限ですが、一般的な場合、問題は簡単に解決できます。



なぜこのすべての情報が必要なのでしょうか?



次の線形リストを作成します。

-パスワードの長さ

-パスワードの最初の文字

-2番目のバイグラムキャラクター



人気のあるパスワードの長さのリストを作成しましょう。

6、8、7、9、10、11、12、13、14、16.15



パスワードの最初の文字を人気順にリストします。

s、m、b、c、p、t、d、a、j、l、r、g、k、1、h、f、w、n、e、0、o、i、2、y、v、 S、M、4、B、3、C、P、5、T、D、z、...



バイグラムの指定された最初の文字の人気度から、バイグラムの2番目の文字のリストを作成してみましょう。

e:s、l、n、e、y、t、1、b、r、c、w、2、v、x、f、3.4、a、7.5、k、6.9、j、 h、u、d、m、8、z、p、o、...

a:r、t、s、l、m、c、d、b、i、y、g、p、k、u、h、v、w、x、2、f、0、j、4.9、 3,7,1,6、n、z、e、o、...

o:n、o、r、l、m、u、s、g、v、k、b、d、c、1、2、x、i、w、p、t、0、3、6、j、 z、5、9、7、e、y、a、8、...

r:a、i、o、l、d、t、1、r、k、n、e、g、b、c、4,5、7、8、s、v、3、6、u、9 w、y、h、j、2、p、m、z、...

...



これで、最も一般的なオプションから始めて、パスワードの線形列挙を整理できます。 そして、逆問題を解決することが可能です。 特定のパスワードから、その番号を繰り返し表示します。 ただし、アルファベットの文字のリストは前の文字に基づいて選択されるため、これは少し難しいです。



トピックがコミュニティにとって興味深いものである場合、次回の記事でパスワードシーケンスのパスワード番号を取得しようとします。



All Articles