Eiji James Yoshidaの記録

パケット作りが趣味のセキュリティ技術者の記録(2006年9月6日執筆開始)。当ブログはGoogle AnalyticsとAmazonアソシエイトを利用しています。

Windows版のNetcat(nc)を使ったwolのマジックパケットの送信方法

VMware ESXiをインストールしたPowerEdge SC440をリモートから起動するのにwol(Wake On LAN)を使いたいので*1Windows版のNetcat(nc)を使ってwolマジックパケットを送信することにした。
まずWindowsに標準で入っているdebugコマンドを使ってマジックパケットペイロード部分を作成するために、下記のテキストファイル(wol_hex.txt)を作成する。

e 0100 FF FF FF FF FF FF 01 02 03 04 05 06 01 02 03 04 05 06
e 0112 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 0124 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 0136 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 0148 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
e 015A 01 02 03 04 05 06 01 02 03 04 05 06 01 02 03 04 05 06
r cx
006C
n WOL.BIN
w
q

次にwol_hex.txtの「01 02 03 04 05 06」部分全てを、wolで起動したい端末のMACアドレスに置換する。*2
たとえばwolで起動したい端末のMACアドレスが「00-1E-C9-C0-00-01」の場合は下記になる。

e 0100 FF FF FF FF FF FF 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0112 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0124 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0136 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 0148 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
e 015A 00 1E C9 C0 00 01 00 1E C9 C0 00 01 00 1E C9 C0 00 01
r cx
006C
n WOL.BIN
w
q

続いてdebugコマンドに作成したwol_hex.txtを渡してバイナリファイルを生成する。

C:\>debug < wol_hex.txt

C:\>dir /b WOL.BIN
WOL.BIN

C:\>

マジックパケットペイロード部分ができているか念のためdebugコマンドで確認する。

C:\>debug WOL.bin
-d
3586:0100 FF FF FF FF FF FF 01 02-03 04 05 06 01 02 03 04 ................
3586:0110 05 06 01 02 03 04 05 06-01 02 03 04 05 06 01 02 ................
3586:0120 03 04 05 06 01 02 03 04-05 06 01 02 03 04 05 06 ................
3586:0130 01 02 03 04 05 06 01 02-03 04 05 06 01 02 03 04 ................
3586:0140 05 06 01 02 03 04 05 06-01 02 03 04 05 06 01 02 ................
3586:0150 03 04 05 06 01 02 03 04-05 06 01 02 03 04 05 06 ................
3586:0160 01 02 03 04 05 06 01 02-03 04 05 06 00 00 00 00 ................
3586:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-q

C:\>

あとは生成したWOL.BINをNetcatに渡してUDPでディレクテッド・ブロードキャストアドレス宛に送信すれば良い。

C:\>type WOL.BIN | nc -nuw 1 192.168.0.255 9

ちなみに私が使っているのと同じNetcatが欲しい人は、下記から入手できる。

これで床暖のある居間から出ないで作業ができる♪

追記(2014/6/18)

64bit版Windowsにはdebugコマンドが無いのでcertutilコマンドを使う。
Windowsでファイルを16進数テキストに変換したり、16進数テキストをファイルに変換したりする方法

*1:あらかじめSC440BIOSwolを有効にしておく必要がある

*2:区切り文字の「:」や「-」はスペースにする