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 »