利用 fsockopen() 函数开放端口扫描器的实例
2018-09-07 14:12
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;主机不可用是抛出一个警告
详情参考:
以上这篇利用 fsockopen() 函数开放端口扫描器的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
文章标题:利用 fsockopen() 函数开放端口扫描器的实例
文章链接:http://soscw.com/index.php/essay/13310.html