netcatとWSHとWMIとか。

引き続きnetcatの話題



とりあえず次の1行だけ書いたファイルをa.jsとして保存しておく


WScript.Echo("Hello netcat on NT!");
コマンドプロンプト上で動くことを確認する

c:\>CScript a.js
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Hello netcat on NT!

netcatのnt版(持ってない場合はgoogleで探してね)がパスの入ったディレクトリにあることを確認して
コマンドプロンプト上でこのように実行する

c:\>nc -v -L -p 10000 -t -e "CScript a.js"
で、別のコマンドプロンプトを開いて次のように実行すると、、

c:\>nc -v localhost 10000
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Hello netcat on NT!

とかやれば、WSHとnetcatをなんとかセットで動かすことができる

これでTCPの通信をしているのだからすごい

例えばa.jsの中身を以下のように書いてみる(2000/XPじゃないと動かないよ)

locator = new ActiveXObject("WbemScripting.SWbemLocator.1");
service = locator.ConnectServer();
set = service.ExecQuery("select * from Win32_QuickFixEngineering");
for(e = new Enumerator(set); !e.atEnd(); e.moveNext()){
p = e.item();
WScript.Echo("HotFixID \t\t:" + p.HotFixID + "\n" +
"ServicePackInEffect \t:" + p.ServicePackInEffect + "\n" +
"CSName \t\t\t:" + p.CSName + "\n" +
"FixComments \t\t:" + p.FixComments + "\n" +
"InstalledBy \t\t:" + p.InstalledBy + "\n" +
"InstalledOn \t\t:" + p.InstalledOn + "\n");
}
こうすると脳内でアドレナリンがドバーっと出るが如く(少なくともe_c_e_tは大喜びした)netcat経由でhotfix適用状況がバリバリと流れてきて

そ、そんなに早く文字は読めんのです

とか、そんな状態になった。しばらくいろいろ遊んで気づいたが、起動させているときに

c:\>netstat -n | findstr 10000
TCP 127.0.0.1:10000 127.0.0.1:xxxx TIME_WAiT
とかやってみるとわかるのだが、どうやらそのままではネットワーク経由での実行は難しいらしい

あと、まだ引数を渡す方法もわからない。

簡単なechoサーバすらまだ実現できていない。

むー。