基于jquery編寫的放大鏡插件
702
2024-03-09
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、代碼如下
<!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, ); $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 >開啟</span>' : '<span >關閉</span>'; echo '<td>' . $result . '</td>'; echo '</tr>'; } ?> </tbody> </table> </body> </html>
</html>
因為偷懶,把頁面和結果都寫在一起了,布局就將就把。
4、主要函數介紹
4.1、fsockopen
根據一個主機名來創建一個連接,成功返回一個資源對象,失敗返回false;主機不可用是拋出一個警告
詳情參考:http://php.net/manual/en/function.fsockopen.php
以上這篇利用 fsockopen() 函數開放端口掃描器的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持綠夏網。
#免責聲明#
本站[綠夏技術導航]提供的一切軟件、教程和內容信息僅限用于學習和研究目的;不得將上述內容用于商業或者非法用途,否則,一切后果請用戶自負。本站信息來自網絡收集整理,版權爭議與本站無關。您必須在下載后的24個小時之內,從您的電腦或手機中徹底刪除上述內容。如果您喜歡該程序或內容,請支持正版,購買注冊,得到更好的正版服務。我們非常重視版權問題,如有侵權請郵件[admin@lxwl520.com]與我們聯系進行刪除處理。敬請諒解!