StarCrackerのデフォルトrulesを解析して勉強しましょう。 今回は辞書を使わないパスワードアタックってことなんで singleモードを使用したruleを作ります。 singleモードのrulesはstarcrak.iniの中の[rules:single] セクションにあるので、ここにruleを追加するか、新しく [rules:single]を作成して、元のrulesをrenameします。 ruleのデバッグもやってみるので今回はrenameしたとして 話をすすめますね。 さて、場所が分かったところで、現在のStarCrackerが 何をしているか、勉強ついでに見てみましょう。 まず、例題として hack:RfB54ogcREM52:::Nano Hana: とゆう1行のみのpasswdファイルを作成しときます。(^^; で、[rules:single]セクションを [rules:single] $1 だけにしてみましょう。$1とゆうのは後ろに"1"を足せって 命令です。 準備が整ったので、実行してStarCrackerがなにをしているか 覗いてみましょう。 starcrak -single -list passwd たくさん文字列が表示されて最後に HanaN hanan Nano1 Hana1 NHana1 HNano1 HNano1 NHana1 hack1 v: 0 c: 76 t: 00:00:00:00 50% c/s: n/a w: ****DONE**** と表示されたはずです。 ここで注目するのは、最後の1が付いたものですね。初めの 69個はSingleモードが勝手にやっているものです。興味が あればじっくり確認してみてください。 Gecos情報を組み合わせたものと、Userそのものが試されて ますね。Singleモードのruleはこれらに対して適用される のです。(^o^) さて、適用される単語が分かった所で、rule作りですね。 これは、過去にクラックしたパスワードなどをよーく観察 して、なんらかのruleを探すのです。 今回のお題はなのはなが出しますが、次回からは皆さんも 考えて発表してくださいね。m(__)m 今回お題 イニシャル+月日(mmdd) これはさっきのなのはなの場合、hn0401みたいな感じです。 ドキッとした人いるのではないでしょうか? お題でヒットしそうなパスは変更しましょうね。(^^; では、rule作りに取り掛かりましょう。 まず、イニシャル。これはさっきのSingleモードの結果 を見れば分かるように、最初の2文字を使えば十分ですね。 ついでにUIDや名字、名前までやってくれます。 最初と2文字を取り出すのは x02 というruleです。これは1文字目(0から数える)から 2文字を取り出しなさいってコマンドです。 このルールで実行すると Na Ha NH HN HN NH ha が出てきます。NHとHNが2つ出てくるけど、今は気にしない でください。(^^; さて大文字小文字が混じってますね。小文字に統一するのは lです。lx02になりますね。 つぎは月日ですね。これはプリプロセッサーを使って実現 します。[]で囲んだ中身はプリプロセッサーで自動的に展開 されるので、例えば[0-9]はその位置に0123456789のいずれか が入った10行に展開されます。 ヒットしなければ全部やっちゃうんですが、[5-90-4]みたいに 展開の順番も指定できます。 日付の指定なんですが、0101から1231までなんで [0101-1231]なんてできればらくちんなんですが、[]は1文字 なので、1文字ごと指定します。 lx02$[01]$[0-9]$[0-3]$[0-9] 簡単に書くとこうなります。 でも、1939なんて日付ありませんよね。(^^; 上で出た7種類の文字に対してそれぞれ無駄な数字がつくので ruleでサボると莫大な時間を浪費することになります。 では最適化。 lx02$0$[1-9]$0$[1-9] lx02$0$[1-9]$[1-2]$[0-9] lx02$0$[13-9]$3$0 lx02$0$[13578]$3$1 lx02$1$[0-2]$0$[1-9] lx02$1$[0-2]$[1-2]$[0-9] lx02$1$[0-2]$3$0 lx02$1$[02]$3$[0-1] 条件分岐が出来ないので複数の行で対処します。 これで出来上がりです。 ruleとゆうのは、こうゆう数字の羅列など辞書に持つのは無駄。 プログラムで何とかならないか?ってゆう発想で生まれました。 (生まれたと思う、生まれたのかなぁ、たぶんね(^^;) singleモードでは、辞書を使わずにヒットさせることもできる。 たまには、人が作った辞書じゃなくて、自分のrulesでヒット させるってゆうのも、なかなかゲーム性があっておもしろいと なのはな思う。 おまけ。 l$[if(a!=b);]$[if(b!=c);]$[if(c!=d);]@?v