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='#'> 网址/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, 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題
![在Windows PC上偵測到Soundbar作為顯示器螢幕[修復]](https://img.php.cn/upload/article/000/465/014/170835733166289.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
在WindowsPC上,有使用者發現將Soundbar連接到HDMI連接埠時會被辨識為顯示器的問題。這可能會導致一些困擾,但解決方案並非唯一。 Soundbar如何透過HDMI連接到PC大多數音棒使用HDMI、光纖或3.5mm音訊連接。如果您的音棒只支援HDMI連接,那麼必須將其連接到具有HDMIARC標籤的HDMI連接埠。許多電視或顯示器通常配備多個HDMI端口,其中一個端口應該支援符合HDMI標準的ARC協定。換句話說,HDMI是用於傳輸音訊和視訊的接口,如果設備沒有HDMI端口,可以考慮使用顯示器

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

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

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

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

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

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