专栏首页编程乐园利用 fsockopen() 函数开放端口扫描器的实例

利用 fsockopen() 函数开放端口扫描器的实例

1、前言

本文利用 fsockopen() 函数,编写一个功能简单的端口扫描器。

2、关键技术

本实例的端口号是固定的,通过对数组的遍历,利用 fsockopen() 函数连接,如果连接成功,则该端口处于开放状态,否则该端口处于关闭状态。

核心代码如下:

foreach ($port as $key => $value) {

echo '<tr>';

echo '<td>' . $key . '</td>';

echo '<td>' . $value . '</td>';

echo '<td>' . $msg[$key] . '&lt/

/;/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 &lt; 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() 函数开放端口扫描器的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://www.blog.zirun.me/php/4632.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SSRF 服务端请求伪造攻击,程序员必掌握

    SSRF,Server-Side Request Forgery,服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞。一般情况下,SSRF 攻击...

    后端技术探索
  • vulnhub之Me-and-My-Girlfriend-1实战

    靶机:Me-and-My-Girlfriend-1,IP地址192.168.153.147

    鸿鹄实验室
  • Pikachu漏洞靶场系列之综合

    很多Web站点因业务需要,会开放一下文件上传的接口。而当后台没有对文件上传功能进行安全考虑或采用了有缺陷的措施,可能会导致黑客可以上传一些如一句话木马等恶意文件...

    Naraku
  • SSRF学习

    服务器端请求伪造(Server-side Request Forgery,SSRF)是攻击者滥用服务器功能访问或操作自己无法被直接访问的信息的方式之一。服务器端...

    Mirror王宇阳
  • fsockopen函数被禁用的解决方案

    下面是两种常用的禁用fsockopen的方法。 修改php.ini,将 disable_functions = 后加入 fsockopen 修改php.ini,...

    李维亮
  • PHPStudy后门事件分析

    PHP环境集成程序包phpStudy被公告疑似遭遇供应链攻击,程序包自带PHP的php_xmlrpc.dll模块隐藏有后门。经过分析除了有反向连接木马之外,还可...

    C4rpeDime
  • 抓取远程图片到本地,你会用什么函数?

    第一个方法用file_get_contents($url): ? 然后1.gif是你要保存的相对路径,你也可以写成绝对路径。 第二个方法用自己写的原生代码:...

    benny
  • php异步执行

    开发中遇到了群发邮件慢的问题,找到了以下方法,还不错分享下: PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择: 1.客户端页面采用AJA...

    wangxl
  • PHP非阻塞实现方法

    如果 PHP 与 Web 服务器使用了 PHP-FPM(FastCGI 进程管理器),那通过 fastcgi_finish_request() 函数能马上结束会...

    wangxl
  • PHP中的数据采集传输神器-cURL库

    cURL库是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,在微信开发、支付、第三方登录中,我们使用它来发送请求

    沈唁
  • PHP非阻塞模式

    让PHP不再阻塞当PHP作为后端处理需要完成一些长时间处理,为了快速响应页面请求,不作结果返回判断的情况下,可以有如下措施:

    后端技术探索
  • 如何实现异步执行

    浏览器和服务器之间只一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求输出相应的程序,不能保持持久连接。

    PM吃瓜
  • 网络踩点一一基于Python的端口扫描

    在探测一个区域的网络布局时,端口扫描是黑客经常使用的一种辅助攻击手段,扫描主机端口并不能直接对主机直接造成危害,但是可以获取到主机的一些信息,借此来对目标主机进...

    字节脉搏实验室
  • Python脚本与Metasploit交互批量产出MS17_010 shell

    2017年5月,被称为近10年来影响范围最广泛“最嚣张”的WannaCry勒索病毒席卷全球,据统计,全球共有150多个国家超30万台终端被感染,波及政府、学校、...

    安恒网络空间安全讲武堂
  • 安全扫描工具​Nmap引擎理解文档

    作者 yiran4827 本文档介绍了Nmap的系统结构及扫描流程,最后重点介绍了Nmap的NSE扫描脚本。 Nmap简介 Nmap也就是Network Map...

    FB客服
  • Linux下几种反弹Shell方法的总结与理解

    之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在...

    用户6543014
  • PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

    了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求...

    枕边书
  • 信息收集——僵尸扫描

    信安之路
  • Kali Nmap的使用

    SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。 它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个 端口。 SYN扫描相对来说不...

    用户6203048

扫码关注云+社区

领取腾讯云代金券