- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章利用 fsockopen() 函数开放端口扫描器的实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、前言 。
本文利用 fsockopen() 函数,编写一个功能简单的端口扫描器.
2、关键技术 。
本实例的端口号是固定的,通过对数组的遍历,利用 fsockopen() 函数连接,如果连接成功,则该端口处于开放状态,否则该端口处于关闭状态.
核心代码如下:
1
2
3
4
5
6
7
8
9
10
11
|
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、代码如下 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
<!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>
|
1
|
</html> <img php" id="highlighter_532620">
4、主要函数介绍 。 4.1、fsockopen 。 根据一个主机名来创建一个连接,成功返回一个资源对象,失败返回false;主机不可用是抛出一个警告 。 详情参考:http://php.net/manual/en/function.fsockopen.php 。
以上这篇利用 fsockopen() 函数开放端口扫描器的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我. 原文链接:http://www.cnblogs.com/ImCehnyx/archive/2017/08/18/7392605.html 。
|
最后此篇关于利用 fsockopen() 函数开放端口扫描器的实例的文章就讲到这里了,如果你想了解更多关于利用 fsockopen() 函数开放端口扫描器的实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在服务器上有一个简单的 php 脚本,它使用 fsockopen 连接到服务器。 \n"; } else { echo fgets($fp, 1024); fclose($fp);
我正在使用 fsockopen() 调用列表中的多个连接,以查看各种 ip/host 和端口的在线状态 ... = 1) { $status = 'offline'; } else { $status
我正在编写一个程序,该程序将从使用php建立套接字连接的WHOIS服务器中检索有关特定IP或域名的信息。我使用fsockopen()函数建立套接字连接,该套接字连接实际上创建了一个文件。运行良好。但是
我有代码: $f = fsockopen('mail.myserver.com', 110); //POP3 echo fgets($f, 4096) . ''; fputs($f, "USER lo
我们的一位客户说他们有一个非常简单的脚本,它使用 fsockopen() 来确定服务器是否在线。他们说直到最近它通过我们在他们的网站上运行良好,但最近刚刚停止工作,所以我假设这是一个设置。 我的第一个
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 8年前关闭
$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $e
它不检查RDP的端口= 3389,对于ftp是,Web是,telnet是谁能告诉我为什么它不能仅用于RDP端口3389 if($type == "rdp") { $sql = mysql_qu
背景:我必须创建一个普通站点,它接受传入的已发布 XML 并通过套接字连接将 XML 发送到服务器,然后显示从服务器发回的 XML。简单易行。 问题:我在使用 fsockopen() 连接到服务器并发
我正在尝试使用特定查询信息对域执行 ping 操作。 这应该非常简单,但它不起作用。 那么...为什么如此简单的 fsockopen php 命令不起作用?! fsockopen('http://ww
我对 php fsockopen 命令有疑问。 我需要在服务器上打开一个套接字连接来实现消息交换。如果服务器没有从我的(客户端)端收到任何东西,它会在一定的超时后关闭连接(我不知道确切的时间也无法更改
折腾了半天,终于把reCAPTCHA改成了这个函数: function _recaptcha_http_post($host, $path, $data, $port = 80) { $req =
我有一个 Node websockets 服务器,所有设置都带有运行良好的聊天服务。但我希望 LAMP 服务器能够定期向连接到 websocket 服务器的用户发送消息。 (响应用户浏览器操作或 cr
不断发送一些数据点(目标是每秒一次),在 PHP 中使用无限循环的 POST 请求。数据高度依赖于时间。如果超时,我不关心丢失的数据,我只想快速移动到下一个数据点。 我最初使用 file_get_co
我正在尝试在 PHP 中执行下行带宽速度测试。我不知道为什么 wget 会以 400 Mbps 的速度下载 1 MB 的数据,而 fsockopen 会以 170 Mbps 的速度下载。我正在使用 f
我正在开发一个项目,使用这个 php 类验证多个电子邮件 ID -> php-smtp-email-validation .当我输入最多 10 个电子邮件 ID 时,代码工作正常,大约需要 30-40
1、前言 本文利用 fsockopen() 函数,编写一个功能简单的端口扫描器。 2、关键技术 本实例的端口号是固定的,通过对数组的遍历,利用 fsockopen() 函数连接,如果连接成功,
我用 fsockopen() 和 fread() 读取了一些 URL,我得到了这种数据: asd d asd 哪个是对的!那么,到底哪里错
我正在尝试访问 http://www.example.com:4380/apid/request?method=getXMLTable&name=1&ui=UI&id=12345 .它应该以 XML
这很奇怪,在某些页面上它会很好地返回 HTML,而在其他页面上它会在返回的字符串的开头和结尾添加数字( $out )。 function lookupPage($page, $return = tru
我是一名优秀的程序员,十分优秀!