利用 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> <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 style="color:red">开启</span>' : '<span style="color:red">关闭</span>'; echo '<td>' . $result . '</td>'; echo '</tr>'; } ?> </tbody> </table> </body> </html>
因为偷懒,把页面和结果都写在一起了,布局就将就把。
4、主要函数介绍
4.1、fsockopen
根据一个主机名来创建一个连接,成功返回一个资源对象,失败返回false;主机不可用是抛出一个警告
以上是fsockopen() 函数的开放端口扫描器的详细内容。更多信息请关注PHP中文网其他相关文章!
![在Windows PC上检测到Soundbar作为显示器屏幕[修复]](https://img.php.cn/upload/article/000/465/014/170835733166289.jpg)
在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充电问题根本原因的小

关闭端口的方法:1、使用防火墙关闭端口;2、使用系统配置关闭端口;3、使用第三方软件关闭端口;4、修改注册表关闭端口;5、使用路由器关闭端口;6、手动停止服务关闭端口;7、使用命令行关闭端口;8、使用安全软件关闭端口;9、修改应用程序配置关闭端口;10、使用网络设备关闭端口。详细介绍:1、使用防火墙关闭端口,打开“控制面板”,选择“Windows Defender防火墙”等等。

docker映射端口出错的解决办法:1、切换到root账户;2、通过“netstat -nap”命令查看程序运行的pid;3、通过“kill -9 2901 su u260517”命令杀死程序并切换程序即可。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版