fsockopen() 函數的開放連接埠掃描器

來源:互聯網
上載者:User

利用 fsockopen() 函數開放連接埠掃描器


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 style="color:red">開啟</span>' : '<span style="color:red">關閉</span>';    echo '<td>' . $result . '</td>';    echo '</tr>';}

3、代碼如下


<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>連接埠掃描</title>    <style type="text/css">        td{            padding:10px;            border-bottom:1px solid #eee;        }    </style></head><body>    <form method="post" action='#'>        網址/ip:<input type="text" name="ip" value="<?php echo  $_POST['ip'] ?? '127.0.0.1'?>">        <button>掃描</button>    </form>    <table>        <thead>            <tr>                <td>id</td>                <td>連接埠號碼</td>                <td>服務</td>                <td>開啟狀態</td>            </tr>        </thead>        <tbody>            <?php                  $ip = $_POST['ip'] ?? '127.0.0.1';                if(ip2long($ip)){                    $aIp = explode('.', $ip);//ip4地址使用.分隔字元                    //這裡沒有對 0.0.0.0 這種本機地址進行判斷,只是粗略的判斷ip是否合法                     foreach ($aIp as $key => $value) {                        if($value < 0 || $value > 255){                            die('地址不合法');                        }                    }                }                                $port = array(                    21,                     23,                     25,                    79,                    80,                     110,                     135,                     137,                     138,                     139,                     143,                     443,                     445,                     1433,                     3306,                 );                $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 '<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 style="color:red">開啟</span>' : '<span style="color:red">關閉</span>';                    echo '<td>' . $result . '</td>';                    echo '</tr>';                }            ?>        </tbody>    </table></body></html>
因為偷懶,把頁面和結果都寫在一起了,布局就將就把。

4、主要函數介紹

4.1、fsockopen

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.