11. Socketクラスでポートスキャン TcpScan.java
- 2006.08.15
- Java
サーバ、あるいは自マシンのポートをスキャンするプログラム。
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
-
前の記事
10. ホスト名からIPアドレスを取得する RemoteHost.java 2006.08.15
-
次の記事
Solaris10 Apache2 の起動 2006.08.17