《PHP應用:利用 fsockopen() 函數開放端口掃描器的實例》要點:
本文介紹了PHP應用:利用 fsockopen() 函數開放端口掃描器的實例,希望對您有用。如果有疑問,可以聯系我們。
1、前言PHP教程
本文利用 fsockopen() 函數,編寫一個功能簡單的端口掃描器.PHP教程
2、關鍵技術PHP教程
本實例的端口號是固定的,通過對數組的遍歷,利用 fsockopen() 函數連接,如果連接成功,則該端口處于開放狀態(tài),否則該端口處于關閉狀態(tài).PHP教程
核心代碼如下:PHP教程
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、代碼如下PHP教程
<!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>開啟狀態(tài)</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循環(huán)都是可以的,因為$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、主要函數介紹PHP教程
4.1、fsockopenPHP教程
根據一個主機名來創(chuàng)建一個連接,成功返回一個資源對象,失敗返回false;主機不可用是拋出一個警告PHP教程
詳情參考:http://php.net/manual/en/function.fsockopen.phpPHP教程
PHP教程
以上這篇利用 fsockopen() 函數開放端口掃描器的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家.PHP教程
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/273.html