私の家では、BUFFALO WLA-B11という無線LANアクセスポイントを使用しています。
この機種、ファームウェアの更新でWPA-TKIP/WPA-AESに対応する筈だったのですが、開発が途中で打ち切られ、今となっては見捨てられた機種となっています。
WEPが非常に簡単に破られるようになってしまった今、この無線LANアクセスポイントを使い続けるのは危険です。
とは言いつつも、このまま捨てるのも勿体無いため、何とかならないかと思案していたところ、多くの無線LAN APに適用可能な、高機能の代替ファームウェア「DD-WRT」がWLA-B11にも適用できそうなことが分かりました。
今回は、この「DD-WRT」を使って、「WLA-B11」をWPA/WPA2が使える高機能のルータに改造してみることにします。
無線LANアクセスポイントの機能を強化するファームウェア「DD-WRT」 - GIGAZINE
上記のページに紹介されているとおり、「DD-WRT」は一般に市販されている無線LANアクセスポイントの代替ファームウェアです。
WPA/WPA2などの無線暗号化方式をサポートする他、VPN/VLAN等、一般的に高価なルータのみが対応している豊富な機能をサポートしています。
2008/10/27時点での最新版は「DD-WRT version 2.4 SP1」ですが、このページによると、「version 2.3 sp2」を使えと書いてありますので、これに従って「version 2.3 SP2」をダウンロードします。
以下のリンクから「DD-WRT version 2.3 SP2」をダウンロードしてください。
「Downloads」→「stable」→「dd-wrt.v23 SP2」→「dd-wrt.v23_sp2_standard.zip 」
ダウンロードした「dd-wrt.v23_sp2_standard.zip」を展開すると、ファームウェア本体である「dd-wrt.v23_generic.bin」が現れますが、このファイルをそのままWLA-B11のファームウェア更新ページに設定してもエラーが出ます。
これは、BUFFALO機器向けのファームウェアにおいては、先頭に機種名やファイルサイズ等の情報が設定されている必要があるためです。
このため、以下のようなプログラムを利用し、「dd-wrt.v23_generic.bin」の先頭にこれらの識別子を付与します。
#include <stdio.h>
#include <stdlib.h>
#define OUTPUT_FILE_NAME "output.bin"
unsigned int getFileSize(const char *aFileName)
{
fpos_t tSize=0;
FILE *tFileHandler;
tFileHandler=fopen(aFileName,"rb");
fseek(tFileHandler,0,SEEK_END);
fgetpos(tFileHandler,&tSize);
fclose(tFileHandler);
return (unsigned int)tSize;
}
int main(int aArgc,char *aArgv[])
{
unsigned int tInputFileSize;
const char *tFileName;
FILE *tFileHandler;
unsigned char *tBuffer;
char tSignatureString[256];
char tFileSizeString[256];
char tFileSizeSentence[256];
int tFileSize;
if(aArgc==2)
{
tFileName=aArgv[1];
tInputFileSize=getFileSize(tFileName);
sprintf(tSignatureString,"WLA-B11 9.99 9.99%c\0",0x0a);
sprintf(tFileSizeSentence,"%d\0",tInputFileSize);
tFileSize=tInputFileSize+strlen(tFileSizeSentence)+strlen(tSignatureString)+9;
sprintf(tFileSizeString,"filelen=%d%c",tFileSize,0x0a);
if((tFileHandler=fopen(tFileName,"rb"))==NULL)
{
puts("Cannot open input file.");
}
else
{
tBuffer=(unsigned char*)malloc(sizeof(unsigned char)*tInputFileSize);
if(tBuffer==NULL)
{
puts("Cannot allocate buffer.");
}
else
{
fseek(tFileHandler,0,SEEK_SET);
fread(tBuffer,tInputFileSize,1,tFileHandler);
fclose(tFileHandler);
if((tFileHandler=fopen(OUTPUT_FILE_NAME,"wb"))==NULL)
{
puts("Cannot open output file.");
}
else
{
fseek(tFileHandler,0,SEEK_SET);
fwrite(tSignatureString,strlen(tSignatureString),1,tFileHandler);
fwrite(tFileSizeString,strlen(tFileSizeString),1,tFileHandler);
fwrite(tBuffer,tInputFileSize,1,tFileHandler);
fclose(tFileHandler);
}
free(tBuffer);
}
}
}
}
上記のプログラムについては、LinuxやFreeBSDならばデフォルトでインストールされているgccを、WindowsならばBorland C++等をインストールして利用すれば、上記プログラムをビルドできると思います。
ビルドが完了した後、以下のようにして利用します。
上記の手順で作成したファームウェアの更新は、WLA-B11のWeb管理画面から行います。
更新方法の詳細はWLA-B11の取扱説明書をご確認ください。
ファームウェアを更新すると、WLA-B11のIPアドレスは「192.168.1.1」に変更されます。
「http://www.192.168.1.1」からDD-WRTの管理画面にログインし、各種設定を行ってください。
初期ID、PWはそれぞれ「root」「admin」となっています
dd-wrt on baffalo wla-b11
http://d.hatena.ne.jp/yseto/20070302
DD-WRT
http://www.e-obaq.com/bogus/archives/000299.html
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
| まだ評価がありません |
表示できるメッセージはありません。