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