教程下载地址: 网赚博客https://www.piaodoo.com/创业项目排行榜前十名https://www.piaodoo.com/
查询速度较慢,建议输入20个以内端口,暂未整理端口服务信息所以暂时不显示。
<?php
error_reporting(0); //打开报错:去行首双斜杠
header('Content-type:text/html;charset = utf-8'); //如果乱码删行首双斜杠
header('Cache-Control: no-cache');
header("X-Accel-Buffering: no");
$t = “PHP端口批量查询工具”;
$x = “序号|端口|开启否|端口服务”;
x
x
=
e
x
p
l
o
d
e
(
"
∣
"
,
xx= explode("|",
xx=explode("∣",x);
i
p
=
(
i
s
s
e
t
(
ip = (isset(
ip=(isset(_POST[‘ip’])) ? $_POST[‘ip’] : ‘96448.cn’;
$prt= array(21,22,23,25,53,80,110,143,161,443,465,587,993,995,1433,1521,3306,3389,5432,8080);
$msg= array(‘FTP’,‘SSH’,‘Telnet’,‘SMTP’,‘DNS’,‘HTTP’,‘POP3’,‘IMAP’,‘SNMP’,‘HTTPS’,‘SMTPS’,‘SMTP’,‘IMAPS’,‘POP3S’,‘MSSQL’,‘Oracle’,‘MySQL’,‘RDP’,‘PostgreSQL’,‘HTTP’);
if($_GET[“x”] == “cha”){
p
r
t
=
i
s
s
e
t
(
prt = isset(
prt=isset(_POST[‘prt’]) ? $_POST[‘prt’] : “80,443,22,21,3306,3389”;
d
m
s
=
i
s
s
e
t
(
dms = isset(
dms=isset(_POST[‘doma’]) ? KaTeX parse error: Undefined control sequence: \d at position 48: …g_match_all('/^\̲d̲+:\d+/‘, $prt,
p
t
s
)
;
i
f
(
pts); if(
pts);if(pts[0][0]){
list(
p
1
,
p1,
p1,p2)=explode(“:”,$pts[0][0]);
$pt=array();
p
3
=
p3 =
p3=p1+KaTeX parse error: Expected 'EOF', got '&' at position 11: p2; echo "&̲lt;!-- |p1|
p
2
∣
p2|
p2∣p3| -->";
for(
i
i
=
ii=
ii=p1;KaTeX parse error: Expected 'EOF', got '&' at position 3: ii&̲lt;p3;$ii++){
p
t
[
]
=
pt[]=
pt[]=ii;}
}else{
preg_match_all(’/\d+/', $prt, $pts);
p
t
=
pt=
pt=pts[0];
}
echo “<!–”.join(“,”,KaTeX parse error: Expected 'EOF', got '&' at position 8: pt)."--&̲gt;"; foreac…pt as $key => $value) {
echo ‘<tr>’;
echo ‘<td>’ . $key . ‘</td>’;
echo ‘<td>’ . $value . ‘</td>’;
f
p
=
@
f
s
o
c
k
o
p
e
n
(
fp = @fsockopen(
fp=@fsockopen(dms, $value, $errno, $errstr, 1);//@
$result = $fp ? ‘<span >开启</span>’ : ‘<b>关闭</b>’;
echo ‘<td>’ . $result . ‘</td>’;
echo ‘<td>-</td>’;
echo ‘</tr>’;
fclose();
ob_flush();
flush();
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo $t; ?></title>
<meta charset=“UTF-8”>
<meta name=“viewport” content=“width=device-width,minimum-scale=1.0,maximum-scale=1.0”>
<meta name=“apple-mobile-web-app-capable” content=“yes” />
<script type=“text/javascript”>
console.log(“问题反馈电话:”,“15058593138”);
console.log(“问题反馈邮件:”,“admin@12391.net”);
function KaTeX parse error: Expected '}', got '&' at position 116: …ms=aa"; Stxt+="&̲amp;prt="+ enco…(“prt”).value);
Stxt+=“&doma=”+ encodeURIComponent($(“doma”).value);
$(“sb”).disabled = true;
$(“tipx”).innerHTML = “正在加载(请等待)…”;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var btxt = xmlhttp.response; $(“sb”).disabled = false;
if(btxt == “err01”){ $(“tipx”).innerHTML = “!”; return false;}
$(‘tipx’).innerHTML = xmlhttp.response;
}
}
xmlhttp.open(“POST”, “?x=cha&tt=”+Math.random(), true);
xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlhttp.send(Stxt);
}
</script>
<style>
div,#tipx{display:block;width:99.7%;border:0;margin-top:5px;}
textarea{display:block;width:99.7%;border:1px solid #ccc;height:160px;}
table{margin:20px auto;border-left:1px solid #a2c6d3;border-top:3px solid #0180CF;font-size:12px;width:99.7%;}
table td{border-right:1px solid #a2c6d3;border-bottom:1px solid #a2c6d3;padding:2px;word-wrap:break-word;word-break:break-all;}
td{min-width:30px;max-width:490px;}
.tt{background-color: #f2f2f2;}
b{color:red;} span{color:green;}
#sb{ height:35px;}
</style>
</head>
<body>
<p><?php echo $t; ?></p>
<input type=“input” id=“doma” value=“<?php echo KaTeX parse error: Expected 'EOF', got '&' at position 6: ip; ?&̲gt;" > <t…prt); ?></textarea>
<input type=“button” id=“sb” value=“提交分析” οnclick=“loadcha(‘xid’)”>
<table>
<thead><?php echo “<tr class=‘tt’><td>”.join(”</td><td>“,$xx).”</td></tr>"; ?></thead>
<tbody id=“tipx”></tbody>
</table>
</body>
</html>
方法补充
除了上文的方法,小编还为大家整理了其他PHP实现端口批量查询的方法,希望对大家有所帮助
PHP单程序文件实现IP归属地批量查询
支持提取IP便于直接粘贴日志,去重防止重复查询浪费计算资源
按出现次数排序方便分析该IP行为。查询速度极快。
<?php
//整理与分享:yujianyue<15058593138@qq.com>
//注意还得放纯真IP数据库 qqwry.dat(自行百度下载最新版) 和本查询代码同级
//核心查询程序 class IpLocation 来自网络
function tipx($str){
preg_match_all('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $str, $match);
//$uni = array_unique($match[0]); //asort($uni);
$uni = array_count_values($match[0]); // 使用array_count_values函数统计数组中每个元素的数量
arsort($uni);
return $uni;//得结果,可输出查看或调用
}
class IpLocation {
//数据文件指针
var $fp;
var $firstip;
var $lastip;
var $totalip;
function getlong() {
//unpack从二进制字符串对数据进行解包
//将读取的little-endian编码的4个字节转化为长整型数,fread安全读取二进制文件
r
e
s
u
l
t
=
u
n
p
a
c
k
(
′
V
l
o
n
g
′
,
f
r
e
a
d
(
result = unpack('Vlong', fread(
result=unpack(′Vlong′,fread(this->fp, 4));
return $result[‘long’];
}
function getlong3() {
//将读取的little-endian编码的3个字节转化为长整型数
r
e
s
u
l
t
=
u
n
p
a
c
k
(
′
V
l
o
n
g
′
,
f
r
e
a
d
(
result = unpack('Vlong', fread(
result=unpack(′Vlong′,fread(this->fp, 3).chr(0));
return $result[‘long’];
}
function packip(KaTeX parse error: Expected '}', got 'EOF' at end of input: …intval(ip2long(ip)));
}
function getstring($data = “”) {
c
h
a
r
=
f
r
e
a
d
(
char = fread(
char=fread(this->fp, 1);
while (ord($char) > 0) { //ord返回字符的ASCII值,字符串按照C格式保存,以\0结束
$data .= $char;
c
h
a
r
=
f
r
e
a
d
(
char = fread(
char=fread(this->fp, 1);
}
return $data;
}
function getarea() {
b
y
t
e
=
f
r
e
a
d
(
byte = fread(
byte=fread(this->fp, 1); // 标志字节
switch (ord($byte)) {
case 0: // 没有区域信息
a
r
e
a
=
"
"
;
b
r
e
a
k
;
c
a
s
e
1
:
c
a
s
e
2
:
/
/
标志字节为
1
或
2
,表示区域信息被重定向
f
s
e
e
k
(
area = ""; break; case 1: case 2: // 标志字节为1或2,表示区域信息被重定向 fseek(
area="";break;case1:case2://标志字节为1或2,表示区域信息被重定向fseek(this->fp, $this->getlong3());
$area = $this->getstring();
break;
default: // 否则,表示区域信息没有被重定向
$area = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getstring(byte);
break;
}
return $area;
}
function getlocation(KaTeX parse error: Expected '}', got 'EOF' at end of input: ip) { if (!this->fp) return null; // 如果数据文件没有被正确打开,则直接返回空
l
o
c
a
t
i
o
n
[
′
i
p
′
]
=
g
e
t
h
o
s
t
b
y
n
a
m
e
(
location['ip'] = gethostbyname(
location[′ip′]=gethostbyname(ip); // 域名转化为IP地址
$ip = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;packip(location[‘ip’]); // 将输入的IP地址转化为可比较的IP地址
// 不合法的IP地址会被转化为255
// 对分搜索
$l = 0; // 搜索的下边界
$u = $this->totalip; // 搜索的上边界
$findip = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;lastip; // 如…l <= $u) { // 当上边界小于下边界时,查找失败
i
=
f
l
o
o
r
(
(
i = floor((
i=floor((l +
u
)
/
2
)
;
/
/
计算近似中间记录
f
s
e
e
k
(
u) / 2); // 计算近似中间记录 fseek(
u)/2);//计算近似中间记录fseek(this->fp, $this->firstip + $i * 7);
b
e
g
i
n
i
p
=
s
t
r
r
e
v
(
f
r
e
a
d
(
beginip = strrev(fread(
beginip=strrev(fread(this->fp, 4)); // 获取中间记录的开始IP地址,strrev反转字符串
// strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式,便于比较
//关于little-endian与big-endian 参考:http://baike.baidu.com/view/2368412.htm
if ($ip < $beginip) { // 用户的IP小于中间记录的开始IP地址时
$u = KaTeX parse error: Expected 'EOF', got '}' at position 29: …的上边界修改为中间记录减一 }̲ else { fseek…this->fp, $this->getlong3());
e
n
d
i
p
=
s
t
r
r
e
v
(
f
r
e
a
d
(
endip = strrev(fread(
endip=strrev(fread(this->fp, 4)); // 获取中间记录的结束IP地址
if ($ip > $endip) { // 用户的IP大于中间记录的结束IP地址时
$l = $i + 1; // 将搜索的下边界修改为中间记录加一
}
else { // 用户的IP在中间记录的IP范围内时
$findip = $this->firstip + $i * 7;
break; // 则表示找到结果,退出循环
}
}
}
fseek($this->fp, $findip);
l
o
c
a
t
i
o
n
[
′
b
e
g
i
n
i
p
′
]
=
l
o
n
g
2
i
p
(
location['beginip'] = long2ip(
location[′beginip′]=long2ip(this->getlong()); // 用户IP所在范围的开始地址
$offset = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getlong3(); …this->fp, $offset);
l
o
c
a
t
i
o
n
[
′
e
n
d
i
p
′
]
=
l
o
n
g
2
i
p
(
location['endip'] = long2ip(
location[′endip′]=long2ip(this->getlong()); // 用户IP所在范围的结束地址
b
y
t
e
=
f
r
e
a
d
(
byte = fread(
byte=fread(this->fp, 1); // 标志字节
switch (ord($byte)) {
case 1: // 标志字节为1,表示国家和区域信息都被同时重定向
$countryOffset = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getlong3(); …this->fp, $countryOffset);
b
y
t
e
=
f
r
e
a
d
(
byte = fread(
byte=fread(this->fp, 1); // 标志字节
switch (ord(KaTeX parse error: Expected '}', got 'EOF' at end of input: …信息又被重定向 fseek(this->fp, $this->getlong3());
$location[‘country’] = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getstring();…this->fp, $countryOffset + 4);
$location[‘area’] = $this->getarea();
break;
default: // 否则,表示国家信息没有被重定向
$location[‘country’] = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getstring(byte);
$location[‘area’] = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getarea(); …this->fp, $this->getlong3());
$location[‘country’] = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getstring();…this->fp, $offset + 8);
$location[‘area’] = $this->getarea();
break;
default: // 否则,表示国家信息没有被重定向
$location[‘country’] = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getstring(byte);
$location[‘area’] = KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;getarea(); …location[‘country’] == " CZNET") { // CZNET表示没有有效信息
KaTeX parse error: Expected 'EOF', got '}' at position 30: …try'] = "未知"; }̲ if (location[‘area’] == " CZNET") {
$location[‘area’] = “”;
}
return $location;
}
/**
- 构造函数,打开 QQWry.Dat 文件并初始化类中的信息
/
function __construct($filename = “./qqwry.dat”) {
KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;fp = 0; if (…this->fp = @fopen($filename, ‘rb’)) !== false) {
$this->firstip = $this->getlong();
$this->lastip = $this->getlong();
KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;totalip = (this->lastip - KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;firstip) / 7…this, ‘_IpLocation’));
}
}
/* - 析构函数,用于在页面执行结束后自动关闭打开的文件
*/
function _IpLocation() {
if (KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;fp) { fclose…this->fp);
}
KaTeX parse error: Expected 'EOF', got '&' at position 6: this-&̲gt;fp = 0; } } …_GET[“x”] == “cha”){
t i p s = i s s e t ( tips = isset( tips=isset(POST[‘tips’]) ? P O S T [ ′ t i p s ′ ] : ′ ′ ; / / i f ( ! f i l t e r v a r ( _POST['tips'] : ''; //if(!filter_var( POST[′tips′]:′′;//if(!filtervar(user, FILTER_VALIDATE_EMAIL)){ exit(“电子邮件格式错误”);}
KaTeX parse error: Undefined control sequence: \n at position 29: …place(array("\r\̲n̲","\r","\n","\t…tips);
l i s a = t i p x ( lisa = tipx( lisa=tipx(txts); //explode(“|”,$txts);
echo “<h2><strong>以下信息仅供参考</strong>(提取IP/已去重/按出现次数降序排序):</h2>\r\n”;
echo “<table cellspacing=“0” class=“table” cellpadding=“0”>\r\n”;
echo “<tr class=‘tt’><td width=‘99’>IP</td><td width=‘60’>出现次数</td><td width=‘99’>IP/24</td><td>归属地</td></tr>\r\n”;
$iplocation = new IpLocation(); i p x = a r r a y ( ) ; f o r e a c h ( ipx= array(); foreach( ipx=array();foreach(lisa as $zz => $ges){
$location = KaTeX parse error: Expected 'EOF', got '&' at position 12: iplocation-&̲gt;getlocation(zz);
z i = e x p l o d e ( " . " , zi = explode(".", zi=explode(".",zz); $zip = z i [ 0 ] . " . " . zi[0].".". zi[0].".".zi[1].“.”.$zi[2].“.0/24”;
d i q u = m b c o n v e r t e n c o d i n g ( diqu = mb_convert_encoding( diqu=mbconvertencoding(location[“country”]."“.KaTeX parse error: Expected 'EOF', got '&' at position 42: … "gbk"); echo "&̲lt;tr><td…zz</td><td>KaTeX parse error: Expected 'EOF', got '&' at position 4: ges&̲lt;/td><t…zip</td><td>$diqu</td></tr>\r\n”;
}
echo “</table>\r\n”;
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>批量查IP归属地</title>
<meta charset=“UTF-8”>
<meta name=“viewport” content=“width=device-width,minimum-scale=1.0,maximum-scale=1.0”>
<meta name=“apple-mobile-web-app-capable” content=“yes” />
<script type=“text/javascript”>
console.log(“问题反馈电话:”,“15058593138”);
console.log(“问题反馈邮件:”,“admin@12391.net”);
function KaTeX parse error: Expected '}', got '&' at position 116: …ms=aa"; Stxt+="&̲amp;tips="+ enc…(“tips”).value);
//$(“tips”).innerHTML = “正在加载…”;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var btxt = xmlhttp.response;
if(btxt == “err01”){ $(“tipx”).innerHTML = “!”; return false;}
$(‘tipx’).innerHTML = xmlhttp.response;
}
}
xmlhttp.open(“POST”, “?x=cha&tt=”+Math.random(), true);
xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlhttp.send(Stxt);
}
</script>
<style>
div,#tipx{display:block;width:99.7%;border:0;margin-top:5px;}
textarea{display:block;width:99.7%;border:1px solid #ccc;height:160px;}
table{margin:20px auto;border-left:1px solid #a2c6d3;border-top:3px solid #0180CF;font-size:12px;width:99.7%;}
table td{border-right:1px solid #a2c6d3;border-bottom:1px solid #a2c6d3;padding:2px;word-wrap:break-word;word-break:break-all;}
td{min-width:30px;max-width:490px;}
.tt{background-color: #f2f2f2;}
#submit{ height:35px;}
</style>
</head>
<body>
<form class=“form” id=“form” method=“POST” act=“?act=cha” >
<h3>批量查询IP归属地</h3>
<p>自动提文本中IP地址去重和出现次数降序并查询归属地!</p>
<textarea id=“tips”>
3.224.220.24
52.70.240.24
202.63.172.24
</textarea>
<input type=“button” id=“submit” value=“提交查询” οnclick=“loadcha(‘xid’)”>
<div id=“tipx”></div>
</form>
</body>
</html>
到此这篇关于基于PHP实现端口批量查询工具的文章就介绍到这了,更多相关PHP端口查询内容请搜索网赚博客http://www.piaodoo.com/以前的文章或继续浏览下面的相关文章希望大家以后多多支持网赚博客http://www.piaodoo.com/!
友情连接:
茂名一技http://www.szsyby.net/
茂名一技http://www.enechn.com/
美文集http://www.tpyjn.cn/
手游排行前十名http://www.bjkhrx.com/