#!/usr/local/bin/perl # ############################################################# # 解析できたjohn.potとpasswd.txtを # このスクリプトと同じフォルダにぶち込んで走らせれば # おっけ〜ざんす # By 怒羅絵悶 ############################################################# $url = 'http://www.hoge.net/cgi-bin/mkboard.cgi?id'; $body = '<body bgcolor=black text=white>'; $pot = "./john.pot"; #john.potのファイル名 $p_file = "./passwd.txt"; #passwd.txtのファイル名 $crack = "./cracked.txt"; #出力するファイル名 $fordic = "./dic.txt"; #辞書用ファイル出力ファイル $choise = "0"; #1 辞書用ファイルを作る(パスはjohn.potから) #2 すべてのIDも辞書用ファイルに記録する(パスはjohn.potから) #3 辞書用ファイルのみ出力する(パスはjohn.potから) #4 辞書用ファイルのみ出力、すべてのIDも記録する(パスはjohn.potから) #5 辞書用ファイルを作る(パスはマッチしたもののみ) #6 すべてのIDも辞書用ファイルに記録する(パスはマッチしたもののみ) #7 辞書用ファイルのみ出力する(パスはマッチしたもののみ) #8 辞書用ファイルのみ出力、すべてのIDも記録する(パスはマッチしたもののみ) #0 辞書用ファイルを作らない ############ HTML Header ############ print "Content-type: text/html\n\n"; print "<html><head><title>dec & sort</title></head>\n"; print "$body\n"; print "<pre>\n"; ############ HTML Header ############ open(QQ,"$pot"); @john= <QQ>; close(QQ); open(DB,"$p_file"); @pass= <DB>; close(DB); if ($choise eq "1" || $choise eq "2"){ &dictionary;} elsif ($choise eq "3" || $choise eq "4"){ &dictionary; &htmlend;} elsif ($choise eq "5" || $choise eq "6" || $choise eq "7" || $choise eq "8"){ &dictionary2; &htmlend;} foreach $john (@john) { chomp ($john); ($john1,$password)=split(/\:/,$john); if(@match = grep(/$john1/,@pass)){ foreach $match (@match) { #同じパスがあった場合の為 chomp ($match); @id=split(/\:/,$match); push @dec,"@id[0]/$password\n"; } } } ############ HTML Body ############ $id_num = @pass; $pass_num = @dec; #総数とhitした数 $hit = substr (($pass_num/$id_num*100),0,4); #hit確率 open(DB,">$crack"); #リスト作成 print DB "$url\n\n"; print DB "総数 $id_num \/ hit数 $pass_num \/ hit確率 $hit\%\n\n\n"; print "総数 $id_num \/ hit数 $pass_num \/ hit確率 $hit\%\n\n\n"; print DB "ID/PASS\n\n"; @sorted_dec = sort @dec; #sortする print DB @sorted_dec; close(DB); &htmlend; ############ HTML Body ############ exit; ######################## sub routine ######################## ############ HTML Bottom ############ sub htmlend{ print "end \n"; print "</pre></body></html>\n"; exit; } ############ HTML Bottom ############ ############ 辞書用出力 ############ sub dictionary { if ($choise eq "2" || $choise eq "4"){ foreach $pass (@pass) { @getid = split(/\:/,$pass); $id = $getid[0]; push @dic,"$id\n"; } } foreach $john (@john) { ($john1,$password)=split(/\:/,$john); chomp($password); push @dic,"$password\n"; } open(ZZ,">$fordic"); #辞書作成 @sorted_dic = sort @dic; #sortする $dic_num = @dic; print "$dic_num個の単語を記録しました\n"; print ZZ @sorted_dic; close(ZZ); } sub dictionary2 { foreach $pass (@pass) { @getid = split(/\:/,$pass); $id = $getid[0]; $pass1 = $getid[1]; if ($choise eq "6" || $choise eq "8"){push @dic,"$id\n";} foreach $john (@john) { ($john1,$password)=split(/\:/,$john); if ($john1 eq $pass1){ chomp($pass); chomp($password); push @dic,"$password\n"; #マッチしたら記録する if ($choise eq "5" || $choise eq "6"){push @dec,"$id/$password\n";} } } } open(ZZ,">$fordic"); #辞書作成 @sorted_dic = sort @dic; #sortする $dic_num = @dic; print "$dic_num個の単語を記録しました\n"; print ZZ @sorted_dic; close(ZZ); if ($choise eq "5" || $choise eq "6"){ open(DB,">$crack"); #リスト作成 $id_num = @pass; $pass_num = @dec; #総数とhitした数 $hit = substr (($pass_num/$id_num*100),0,4); #hit確率 print DB "$url\n\n"; print DB "総数 $id_num \/ hit数 $pass_num \/ hit確率 $hit\%\n\n\n"; print "総数 $id_num \/ hit数 $pass_num \/ hit確率 $hit\%\n\n\n"; print DB "ID/PASS\n\n"; @sorted_dec = sort @dec; #sortする print DB @sorted_dec; close(DB); } } ############ 辞書用出力 ############

written by 2代目怒羅絵悶