Spoonwep用WEP-KEYをASCIIで表示させるスクリプト

Posted by: admin at 3 月 9th, 2009

FreeBSDネタでは無いのですが、ちょっと前から話題になっているWEPの脆弱性を試すためにBackTrackというLinuxを試してみました。

Aircrack-ng が早くて高確率なのですが、複数のコンソールを立ち上げないといけなかったり、ちょっとスマートさに欠けます。
クライアントの前で実演をする際に
「誰にでも出来るわけじゃなさそうだね」
と片付けられてしまい、セキュリティ意識を高める事に失敗しそうなので、SpoonwepというGUIアプリケーションを試してみました。

Aircrack-ngに比べると若干時間がかかりますが、モード切替・AP検索・パケットキャプチャ・解析等を全自動で処理してくれるのが良いところです。
残念なことに、最後の処理である解析(aircrack-ng)部分にオプションを指定できないため結果がHEX表示となってしまいます。
[ XX:XX:XX:XX:XX:XX ]
これをスマートに変換するために、簡単なperlスクリプトを組みましたので公開します。

hex-asc.pl
#!/usr/bin/perl

## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## WEP-KEY BIN Viewer for Spoonwep
## (ASCII to BINARY Changer for Spoonwep / Spoonwep2)
##
##           http://freebsd.ai-line.com/  by sio (Japan)
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

## How to use. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  1.Permission change to 0700.
#  2.When Spoonwep is finished, this running.
#  3.Executes this.
#  4.After that, Please give me a mail(sio<at>ai-line.com).
#    Girl or Japanese limitation ;-)
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

## configure
$output_dir
= '/root/Desktop/CrackedWEP';

## Spoonwep default setting
$lastattack_dir
= '/usr/local/bin/wifispoonfeeder/spoonwep/lastattack';
$key_file
= 'key.txt';
$essid_file
= 'wscapture-01.txt';

## wepkey
$readfile
= "$lastattack_dir/$key_file";
open
(IN, $readfile);
  $wepkey
= <IN>;
close
(IN);
$wepkey
=~ s/\[|\]|\ |\:|\n//g;  # [ ww:xx:yy:zz ] => wwxxyyzz
$wepkey
=~ s/([a-fA-F0-9][a-fA-F0-9])/pack("H2",$1)/eg; # ASCII to BINARY

## essid
$readfile
= "$lastattack_dir/$essid_file";
open
(IN, $readfile);
  @essid
= <IN>;
close
(IN);
$essid
= $essid[2];
@essid
= split(/,/, $essid);
$essid
= $essid[13];
$essid
=~ s/^\s*//;
$essid
=~ s/\s*$//;

## Write
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year
+= 1900;
$mon
+= 1;
$filename
= "$year$mon$mday$hour$min$sec";
unless (-d $output_dir) {
  mkdir $output_dir
;
}
open
(FILE, "> $output_dir/$filename");
 
print FILE "ESSID  = $essid\n";
 
print FILE "WEPKEY = $wepkey";
close
(FILE);

Filed under その他 |

No Comments »