포트 스캐너는 말그대로 상대방의 포트를 스캔하는 것을 말합니다. 해커들이 만들어 사용한다는 포트 스캐너입니다. 화면의 그림에서 "server name"에는 도메인 이름 또는 ipv4 나 ipv6 주소를 입력하고, 알고자 하는 서비스명 또는 "other port"에 적당한 포트를 입력하고 전송을 하면 그 결과 값이 출력됩니다. 결과적으로 파란색만 사용가능함을 표시합니다.



서버가 윈도우라면 기본적으로 php_sockets.dll 모듈이 비활성화 상태이므로 php.ini 를 수정해서 활성화해줘야 socket 함수를 사용할 수 있습니다.


예제 #1)

 <!DOCTYPE HTML SYSTEM "about:legacy-compat">

 <form action="" method="POST">
    Server Name: <input type="text" name="servername" size="30" value="" autofocus required placeholder="ex) example.com or ip address" />
    <br />
    Service :
    <input type="checkbox" name="port[]" value="21" />ftp
    <input type="checkbox" name="port[]" value="23" />telnet
    <input type="checkbox" name="port[]" value="25" />smtp
    <input type="checkbox" name="port[]" value="80" />http
    <input type="text" name="port[]" value="" placeholder="other port" />
    <br />
    <input type="Submit" name="result" value="전 송"/>
 </form>
 

 <?php
 if(!empty($_POST['result']) && ($_SERVER['REQUEST_METHOD'] === 'POST'))
 {
    
ini_set("max_execution_time"120);

    
$servername preg_replace("/[^a-z0-9.-:]/i"""$_POST['servername']);
    if(!empty(
$servername) && function_exists("socket_create"))
    {
        if(
is_array($_POST['port']))
        {
            
$output = array();
            
$socket = @socket_create(AF_INETSOCK_STREAM0);

            foreach(
$_POST['port'] as $p)
            {
                
$num preg_replace("/[^0-9]/"""$p);
                if(
$num)
                {
                    
$result = @socket_connect($socket$servername$p);
                    if(!
$result)
                    {
                        
$output[] = "<font color='red'>" $p "port service is not</font>\n";
                    }
                    else
                    {
                        
$output[] = "<font color='blue'>" $p "port is the service</font>\n";
                    }
                }
            }
            @
socket_close($socket);
        }        

        echo 
'<pre>';
        
print_r($output);
    }
 }
 ?>