Submitted by sasaki on 火曜, 2006-08-15 18:20.
サーバ、あるいは自マシンのポートをスキャンするプログラム。
TcpScan.java
//
// TcpScan.java
//
// サーバのポートをスキャンする
//
// java TcpScan (www.mydomain.com)
//
import java.net.Socket ;
public class TcpScan {
public static void main( String[] args ) {
Socket sock = null ; // サーバ接続用ソケット
int countPorts = 0 ; // 使用中ポートのカウント
String hostName = "localhost" ; // ホスト名
// ホスト名を指定した場合
if ( args.length > 0 ) {
hostName = args[0] ;
}
// 0〜127のポートをスキャンする
for ( int port = 0 ; port < 128 ; port++ ) {
System.out.print( "¥r" + port + "を調査中!" ) ;
try{
sock = new Socket( hostName, port ) ; // 接続する
System.out.println( "¥r" + port + "を使用中!" ) ;
countPorts++ ; // 使用しているポートとしてカウントする
sock.close() ; // クローズ
} catch( Exception e ) {
continue ;
}
}
// 使用しているポートの数を報告する
System.out.println( "¥r" + countPorts + "個のポートが使用されています。" ) ;
}
}
■実行
自マシンを調べる。
$ java TcpScan
21を使用中!
22を使用中!
80を使用中!
3個のポートが使用されています。
使用中のポートが表示されなかったら、
システム環境設定 > 共有
で、パーソナルWeb共有、リモートログイン、FTPサービスにチェックを入れる。
自サーバを調べる。自分の会社のサーバを調べて余計なポートが開いてないかをチェックしましょう。
$ java TcpScan xxx.xxxx.com
21を使用中!
22を使用中!
25を使用中!
53を使用中!
80を使用中!
110を使用中!
113を使用中!
7個のポートが使用されています
他人様のサーバをポートスキャンするのは控えましょう。クラッカーと疑われると損ですので。
■確認
netstat で調べてみる。
$ netstat -p tcp -a
あまりにもたくさんひょうじされるので、LISTENに絞って表示すると多少見やすい。
$ netstat -p tcp -a | grep LISTEN
tcp4 0 0 *.ssh *.* LISTEN
tcp6 0 0 *.22 *.* LISTEN
tcp4 0 0 *.http *.* LISTEN