ホームページ >バックエンド開発 >PHPチュートリアル >fsockopen() 関数はポート スキャナーを作成します

fsockopen() 関数はポート スキャナーを作成します

大家讲道理
大家讲道理オリジナル
2017-08-19 09:30:032097ブラウズ


1. はじめに

この記事では、fsockopen() 関数を使用して、単純な関数を持つポート スキャナーを作成します。

2. 主要なテクノロジー

この例のポート番号は固定されており、接続が成功した場合は fsockopen() 関数を使用して接続されます。

コアコードは次のとおりです:

foreach ($port as $key => $value) {
    echo '<tr>';
    echo '<td>' . $key . '</td>';
    echo '<td>' . $value . '</td>';
    echo '<td>' . $msg[$key] . '</td>';    //$errno 和 $errstr 在这里基本用不上,只是为了设置 timeout,防止请求超时
    $fp = @fsockopen($ip, $value, $errno, $errstr, 1);//如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。所有需要加@
    $result = $fp ? '<span>开启</span>' : '<span>关闭</span>';
    echo '<td>' . $result . '</td>';
    echo '</tr>';
}

3. コードは次のとおりです

nbsp;html>


    <meta>
    <title>端口扫描</title>
    <style>
        td{
            padding:10px;
            border-bottom:1px solid #eee;
        }    </style>


    
        网址/ip:">              
                                                                                                                                           $value) {                        if($value  255){                             die('地址不合法');                         }                     }                 }                                  $port = array(                    21,                      23,                      25,                    79,                    80,                      110,                      135,                      137,                      138,                      139,                      143,                      443,                      445,                      1433,                      3306,                      3389                 );                 $msg = array(                    'Ftp',                    'Telnet',                    'Smtp',                    'Finger',                    'Http',                    'Pop3',                    'Location Service',                    'Netbios-NS',                    'Netbios-DGM',                    'Netbios-SSN',                    'IMAP',                    'Https',                    'Microsoft-DS',                    'MSSQL',                    'MYSQL',                    'Terminal Services'                 );                //无论使用prot还是msg循环都是可以的,因为$key是对应的,都是索引数组                 foreach ($port as $key => $value) {                     echo '';                     echo '';                     echo '';                     echo '';                    //$errno 和 $errstr 在这里基本用不上,只是为了设置 timeout,防止请求超时                     $fp = @fsockopen($ip, $value, $errno, $errstr, 1);//如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。所有需要加@                     $result = $fp ? '开启' : '关闭';                     echo '';                     echo '';                 }            ?>              
id端口号服务开启状态
' . $key . '' . $value . '' . $msg[$key] . '' . $result . '

4. ホスト名に基づいて接続を作成し、リソースを返します。オブジェクトが正常に実行され、失敗した場合は false が返されます。ホストが利用できない場合は、警告がスローされます

詳細については、http://php.net/manual/en/function.fsockopen.php

を参照してください。

以上がfsockopen() 関数はポート スキャナーを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。