この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ポートスキャンをするモジュール
evilscanは、任意のip/ポートに対してスキャンを行うツールです。 Javascriptから使用することもできますし、グローバルインストールしてコマンドから使用することもできます。 範囲を指定してip/ポートをスキャンすることもでき、結果をJSONで出力したりもできます。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.5
- Node.js : v0.10.8
- npm : 1.2.23
npmを使用してモジュールをグローバルインストールしましょう。
% npm install -g evilscan
evilscanを試す
evilscanモジュールをrequireしてプログラムから使用することもできますが、今回はコマンドラインから使用してみましょう。 evilscanコマンドに続いて、ポートスキャンするip/ドメイン、チェックするポートを指定します。 下記コマンドでは、samplescan.comの0番から1000番のポートに対してスキャンを実行しています。
%evilscan samplescan.com --port=0-1000
xxx.xxx.xxx.xxx|80||open
xxx.xxx.xxx.xxx|22|SSH-2.0-OpenSSH_6.1\r\n|open
80番と22番ポートが開いているのがわかりますね。ポートは,区切りで複数指定したり、-で範囲指定が可能です。 また、evilscanのオプションで、結果をxmlやjsonで出力したりタイムアウトを設定したりできます。
evilscan実行時にエラーが出た場合
evilscan実行時に下記のようなエラーがでることがあります。
・
・
(libuv) Failed to create kqueue (24)
events.js:72
throw er; // Unhandled 'error' event
^
Error: write EBADF
・
・
そのような場合、次のようにulimitで起動プロセス数の上限を上げてから再度実行してみてください。
% ulimit -n 1024
まとめ
まだ開発初期で、未実装の機能もたくさんありますが、ポートの開閉は簡単にチェックできるので、使用してみてください。