首頁 >後端開發 >php教程 >fsockopen() 函數製作連接埠掃描器

fsockopen() 函數製作連接埠掃描器

大家讲道理
大家讲道理原創
2017-08-19 09:30:032104瀏覽


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、主要函數介紹

4.1、fsockopen

根據一個主機名稱來建立一個連接,成功返回一個資源對象,失敗返回false;主機不可用是拋出一個警告

詳情參考:http:// php.net/manual/en/function.fsockopen.php

#

以上是fsockopen() 函數製作連接埠掃描器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn