找回密码
 注册需人工审核(节假日除外)
搜索
查看: 299|回复: 1

扫IP.PHP

[复制链接]

签到天数: 195 天

[LV.7]炉火纯青

发表于 2024-11-8 10:56:01 | 显示全部楼层 |阅读模式
  • 这个代码好像不能用,请大神修改下
  • <?php
  • /*
  • 食用方法:
  • hotelscanner.php?fmt=http://x.x.x.x:9901/tsfile/live/1000_1.m3u8
  • hotelscanner.php?fmt=http://x.x.x.x/tsfile/live/1000_1.m3u8
  • 注意要点:
  • 1.扫描D段就将该段定为非数字字符,比如192.168.1.x,扫描C段就将该段定为非数字字符,比如192.168.x.x,以此类推。
  • 2.如果fmt格式参数不指定端口,则使用端口数组测试。
  • 3.结果在网页上显示,也会实时保存到脚本目录下的同名txt文件中。
  • */
  • error_reporting(0); //禁止错误报告
  • $arr_port = [801, 808, 8080, 8081, 8181, 8811, 8888, 9901, 9999, 18181]; //可能使用的端口数组,可自行删减
  • $fmt = $_GET['fmt']; //要测试的链接地址
  • if (empty($fmt)) die('需指定要扫描的链接地址格式');
  • //分解URL链接
  • $scheme = parse_url($fmt)['scheme']; //协议
  • $host   = parse_url($fmt)[ 'host' ]; //主机
  • $port   = parse_url($fmt)[ 'port' ]; //端口
  • $path   = parse_url($fmt)[ 'path' ]; //路径
  • //判断使用端口数组
  • if (!empty($port)) $arr_port = [$port];
  • //分解IP地址
  • list($a, $b, $c, $d) = explode('.', $host);
  • echo "开始扫描:<br>";
  • flush(); //刷新页面内容
  • $arr_host = array(); //创建主机地址数组
  • $start_time = microtime(true); //记录开始时间
  • if (!is_numeric($a)) {
  •   for ($ia = 0; $ia <= 255; $ia++) {
  •     for ($ib = 0; $ib <= 255; $ib++) {
  •       for ($ic = 0; $ic <= 255; $ic++) {
  •         echo "<br>$ia.$ib.$ic.(0-255): >";
  •         for ($id = 0; $id <= 255; $id++) {
  •           test_http($scheme, "$ia.$ib.$ic.$id", $arr_port, $path);
  •           echo ".";
  •         }
  •       }
  •     }
  •   }
  • } else {
  •   if (!is_numeric($b)) {
  •     for ($ib = 0; $ib <= 255; $ib++) {
  •       for ($ic = 0; $ic <= 255; $ic++) {
  •         echo "<br>$a.$ib.$ic.(0-255): ";
  •         for ($id = 0; $id <= 255; $id++) {
  •           test_http($scheme, "$a.$ib.$ic.$id", $arr_port, $path);
  •           echo ".";
  •         }
  •       }
  •     }
  •   } else {
  •     if (!is_numeric($c)) {
  •       for ($ic = 0; $ic <= 255; $ic++) {
  •         echo "<br>$a.$b.$ic.(0-255): ";
  •         for ($id = 0; $id <= 255; $id++) {
  •           test_http($scheme, "$a.$b.$ic.$id", $arr_port, $path);
  •           echo ".";
  •         }
  •       }
  •     } else {
  •       echo "<br>$a.$b.$c.(0-255): ";
  •       for ($id = 0; $id <= 255; $id++) {
  •         test_http($scheme, "$a.$b.$c.$id", $arr_port, $path);
  •         echo ".";
  •       }
  •     }
  •   }
  • }
  • $end_time = microtime(true); //记录结束时间
  • $seconds = round($end_time - $start_time, 3);
  • $count_time = gmdate('H:i:s', $seconds) . '.' . explode('.', $seconds)[1];
  • $count_host = count($arr_host);
  • echo "<br><br>扫描结束!<br><br>";
  • echo "执行本次脚本获得 " . $count_host . " 个主机地址,总共消耗时间:" . $count_time . "(" . $seconds . " 秒)。<br><br>";
  • echo "扫描结果:<br>";
  • foreach ($arr_host as $v) echo "$v<br>"; //枚举扫描结果
  • function test_http($scheme, $host, $arr_port, $path) {
  •   set_time_limit(0); //重置超时时间,很重要!!!
  •   $handles = array();
  •   $running = null;
  •   $mh = curl_multi_init(); //创建批处理句柄
  •   foreach ($arr_port as $port) {
  •     $url = "{$scheme}://{$host}:{$port}{$path}";
  •     $ch = curl_init($url);
  •     curl_setopt($ch, CURLOPT_NOSIGNAL, 1);           //解决CURLOPT_TIMEOUT_MS赋值小于1000报错的bug
  •     curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);       //超时时间(毫秒),数值越大,扫描越慢
  •     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  //以字符串返回
  •     curl_multi_add_handle($mh, $ch);
  •     $handles[$port] = $ch;
  •   }
  •   do { //执行批处理句柄
  •     curl_multi_exec($mh, $running);
  •     curl_multi_select($mh);
  •   } while ($running > 0);
  •   foreach ($handles as $port => $ch) { //检查每个请求的响应内容
  •     $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);     //获取响应状态码
  •     $size = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD); //下载的数据总值
  •     if ($code == 200 && $size > 0) {
  •       save_result("$host:$port"); //实时保存主机地址到本地文档中
  •       global $arr_host; //套用全局变量
  •       array_push($arr_host, "$host:$port"); //添加到主机地址数组中
  •       echo "'$host:$port'";
  •     }
  •   }
  •   foreach ($handles as $ch) curl_multi_remove_handle($mh, $ch); //关闭并发请求的句柄
  •   curl_multi_close($mh);
  •   flush(); //刷新页面内容
  • }
  • function save_result($host) {
  •   $txt_name = basename($_SERVER['PHP_SELF']) . '.txt';
  •   $datetime = date('Y-m-d H:i:s', time());
  •   if ($file = fopen($txt_name, 'a')) { //打开文件
  •     fwrite($file, "$datetime --> $host\r\n");
  •     fclose($file); //关闭文件
  •   }
  • }
  • ?>

[color=rgb(51, 102, 153) !important]复制代码

人生没有彩排,每天都是直播。

Welcome to iptv.cc !

回复

使用道具 举报

签到天数: 145 天

[LV.7]炉火纯青

发表于 2024-11-8 13:11:39 | 显示全部楼层

人生没有彩排,每天都是直播。

Welcome to iptv.cc !

回复

使用道具 举报

本版积分规则

Archiver|手机版|小黑屋|IPTV论坛 | 管理员邮箱:a@8494.net

本站以兴趣爱好为宗旨,非经营性质,不以任何形式收取任何费用。IPTV论坛没有任何官方Q群,V群,T群,禁止留任何联系方式,请配合。

免责声明:本站上述内容来自网络,不得用于商业或非法用途,您必须在下载后24小时内,从设备中删除,否则后果自负。如内容侵犯您的版权、著作权,请联系我,第一时间处理。

GMT+8, 2025-1-31 11:28 , Processed in 0.097456 second(s), 18 queries .

IPTV论坛 创建于 2023年5月1日

快速回复 返回顶部 返回列表