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

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

Aug 19, 2017 am 09:30 AM
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 lang="en">
<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=&#39;#&#39;>
        网址/ip:<input type="text" name="ip" value="<?php echo  $_POST[&#39;ip&#39;] ?? &#39;127.0.0.1&#39;?>">
        <button>扫描</button>
    </form>
    <table>
        <thead>
            <tr>
                <td>id</td>
                <td>端口号</td>
                <td>服务</td>
                <td>开启状态</td>
            </tr>
        </thead>
        <tbody>
            <?php  
                $ip = $_POST[&#39;ip&#39;] ?? &#39;127.0.0.1&#39;;                if(ip2long($ip)){
                    $aIp = explode(&#39;.&#39;, $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, 
                    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 '<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;主機不可用是拋出一個警告

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

#

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在Windows PC上偵測到Soundbar作為顯示器螢幕[修復] 在Windows PC上偵測到Soundbar作為顯示器螢幕[修復] Feb 19, 2024 pm 11:42 PM

在WindowsPC上,有使用者發現將Soundbar連接到HDMI連接埠時會被辨識為顯示器的問題。這可能會導致一些困擾,但解決方案並非唯一。 Soundbar如何透過HDMI連接到PC大多數音棒使用HDMI、光纖或3.5mm音訊連接。如果您的音棒只支援HDMI連接,那麼必須將其連接到具有HDMIARC標籤的HDMI連接埠。許多電視或顯示器通常配備多個HDMI端口,其中一個端口應該支援符合HDMI標準的ARC協定。換句話說,HDMI是用於傳輸音訊和視訊的接口,如果設備沒有HDMI端口,可以考慮使用顯示器

linux 怎麼查看遠端伺服器連接埠是否開放 linux 怎麼查看遠端伺服器連接埠是否開放 Mar 21, 2023 am 09:50 AM

linux查看遠端伺服器連接埠是否開放的方法:1、透過「nmap ip -p port」指令偵測連接埠是否打開,具體指令如「nmap 172.17.193.18 -p 5902」;2、透過「nc -v ip port」指令檢測連接埠是否打開,具體命令如“如nc -v 172.17.193.18 5902”。

com1和com2是什麼端口 com1和com2是什麼端口 Aug 25, 2022 am 10:53 AM

com1和com2是串行通訊端口,簡稱串口;一塊主機板一般帶有兩個com串行接口,通常用於連接滑鼠即通訊設備,串行接口是指數據一位一位的順序傳送,特點是通信線路簡單,只要一對傳輸線就可以實現雙向通訊。

Win11怎樣關閉445端口 Win11怎樣關閉445端口 Jul 04, 2023 pm 12:17 PM

  Win11怎樣關閉445埠? 445號端口是一個TCP端口,是一個共用資料夾和印表機端口,在區域網路內提供檔案或印表機共用服務。近期有部分Win11用戶想要關閉445端口,那麼該如何操作呢?很多小夥伴不知道怎麼詳細操作,小編下面整理了Win11關閉445埠的詳細操作,如果你有興趣的話,跟著小編一起往下看看吧!  Win11關閉445端口的詳細操作  1、首先,按Win+S組合鍵,或點擊底部任務欄上的搜尋圖標,打開的Windows搜尋窗口,頂部輸入Windows防火牆,然後點擊系統給出的最佳

修復Windows電腦上的AHCI連接埠0裝置錯誤 修復Windows電腦上的AHCI連接埠0裝置錯誤 Feb 19, 2024 pm 12:45 PM

如果你每次啟動電腦時遇到AHCI連接埠0設備錯誤,需要按照本文提供的方法解決這個問題。什麼是AHCI埠0設備錯誤? AHCI設備錯誤是由BIOS報告的。 SMART已指示連接埠0上的硬碟存在故障,可能無法存取。硬碟有可能隨時出現問題。如果是桌上型電腦,建議嘗試更換硬碟連接埠。若問題仍然存在,則可能是硬碟本身的問題。您可以執行磁碟檢查工具,停用故障硬碟並檢查連接埠以解決此問題。修復Windows電腦上的AHCI連接埠0裝置錯誤通常情況下,AHCIPort0裝置錯誤並非源自作業系統問題,而是硬碟在連接埠0出

iOS 17 更新後,您的 iPhone 無法充電?這是你可以做的 iOS 17 更新後,您的 iPhone 無法充電?這是你可以做的 Sep 21, 2023 pm 11:41 PM

iOS17充電問題的原因是什麼?更新到iOS17後,您的iPhone可能無法充電有幾個可能的原因。一種可能性是軟體更新中存在錯誤。 Apple通常會快速修復iOS更新中的錯誤,因此,如果您遇到充電問題,則值得檢查是否有新的更新。另一種可能性是充電電纜或適配器有問題。如果您使用的是第三方充電連接線或轉接器,請確保它已通過Apple認證。如何修復iPhone不充電問題以下是有關如何修復iOS17更新後iPhone無法充電問題的一些提示:重啟你的蘋果手機這通常可以解決可能是iOS17充電問題根本原因的小

docker映射埠出錯怎麼辦 docker映射埠出錯怎麼辦 Oct 21, 2022 pm 03:29 PM

docker映射埠出錯的解決方案:1、切換到root帳號;2、透過「netstat -nap」指令查看程式執行的pid;3、透過「kill -9 2901 su u260517」指令殺死程式並切換程式即可。

如何使用LSOF即時監控端口 如何使用LSOF即時監控端口 Mar 20, 2024 pm 02:07 PM

LSOF(ListOpenFiles)是一個命令列工具,主要用於監控類似Linux/Unix作業系統的系統資源。透過LSOF命令,使用者可以獲得有關係統中活動檔案以及正在存取這些檔案的進程的詳細資訊。 LSOF能夠幫助使用者識別目前佔用檔案資源的進程,從而更好地管理系統資源和排除可能的問題。 LSOF的功能強大且靈活,可以幫助系統管理員快速定位檔案相關的問題,例如檔案洩漏、未關閉的檔案描述符等。透過LSOF命令LSOF命令列工具允許系統管理員和開發人員:確定目前正在使用特定檔案或連接埠的進程,在連接埠衝突的情

See all articles