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

酒店扫ip.php

[复制链接]

签到天数: 195 天

[LV.7]炉火纯青

发表于 2024-10-30 20:41:21 | 显示全部楼层 |阅读模式
本帖最后由 yf1197565391 于 2024-10-31 18:35 编辑

求教下大神这个怎么修改成扫C.D段代码,   目前只能扫一组D段,改了半天全部都是报错

复制代码


<?php
//播放格式http://127.0.0.1/jdtv.php?vid=1&id=2
header('Content-Type: text/json;charset=utf-8');
$vid=$_GET["vid"];
$id=$_GET["id"];
if($vid==null){$vid=1;}
//定义扫描ip起始和端口值
$PD=[
'1'=>['121.29.80.',':9901','240'],
'2'=>['127.0.0.',':2223','1'],
'3'=>['192.168.1.',':9901','1'],
];
$ips=@$PD[$vid][0];
$dk=@$PD[$vid][1];
$ii=@$PD[$vid][2];
//扫描并保存
$cache2='tv';
if(!is_dir($cache2)){
mkdir(iconv('UTF-8','GBK',$cache2),0777,true);
}
$bc="tv/".$vid."cache2.txt";
$urls=file_get_contents($bc);
if($urls==null){$urls=0;}
$hls="http://".$ips.$urls.$dk."/tsfile/live/".$id."_1.m3u8";
if(wy($hls)=='200'){
header("Location:".$hls);}else{
for($i=$ii;$i<256;$i++){
$hls="http://".$ips.$i.$dk."/tsfile/live/".$id."_1.m3u8";
if(wy($hls)=='200'){
$tv=file_put_contents($bc,$i);
header("Location:".$hls);
exit;}}}
function wy($url){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_TIMEOUT_MS,500);
curl_exec($ch);
$data=curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
return $data;}
?>

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

Welcome to iptv.cc !

回复

使用道具 举报

签到天数: 50 天

[LV.5]略有小成

发表于 2024-10-30 21:38:37 | 显示全部楼层
单从代码的运行性来说,两个for循坏缺少结束符 }。首先代码就无法运行。
$ips=@$PD[$vid][0];   PD数组中[$vid][0]定义有误,以'1'=>['121.29.80.' . $i . '.' . $j . ':9901','240']
$ii=@$PD[$vid][2];   PD数组中[$vid][2]无定义。
$hls="http://".$ips.$urls.$dk."/tsfile/live/".$id."_1.m3u8";   url结构混乱,变量代入的话,压根不是一个url地址
$id也没有格式化为0001字符串形式。
在处理代码,正常逻辑url找到有效,则输出,保存;无论是在d段还是c段。else的逻辑是没找到的处理,为什么又增加一个循坏。
坛里不是有优秀的相关扫描代码吗?

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

Welcome to iptv.cc !

回复

使用道具 举报

签到天数: 195 天

[LV.7]炉火纯青

 楼主| 发表于 2024-10-30 21:54:47 | 显示全部楼层
jiteloozz 发表于 2024-10-30 21:38
单从代码的运行性来说,两个for循坏缺少结束符 }。首先代码就无法运行。
$ips=@$PD[$vid][0];   PD数组中[$ ...

不知道哪个是更好的,想找个可以扫C/D段的,有效IP自动保存,方便调用,加快输出

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

Welcome to iptv.cc !

回复

使用道具 举报

签到天数: 382 天

[LV.9]已臻大成

发表于 2024-10-31 09:30:45 | 显示全部楼层
你真有才,php扫,不崩溃才怪

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

Welcome to iptv.cc !

回复

使用道具 举报

签到天数: 172 天

[LV.7]炉火纯青

发表于 2024-11-1 03:30:18 | 显示全部楼层
刚学php时写的,所以注释写得比较详细,支持ABCD段扫描(只要你有耐心),后来发现空间测绘很方便,所以这个代码已经很久不使用了,由于要用多个端口去猜,所以效率很差,你可以参考参考。



  1. <?php
  2. /*
  3. 食用方法:
  4. hotelscanner.php?fmt=http://x.x.x.x:9901/tsfile/live/1000_1.m3u8

  5. hotelscanner.php?fmt=http://x.x.x.x/tsfile/live/1000_1.m3u8

  6. 注意要点:
  7. 1.扫描D段就将该段定为非数字字符,比如192.168.1.x,扫描C段就将该段定为非数字字符,比如192.168.x.x,以此类推。
  8. 2.如果fmt格式参数不指定端口,则使用端口数组测试。
  9. 3.结果在网页上显示,也会实时保存到脚本目录下的同名txt文件中。
  10. */

  11. error_reporting(0); //禁止错误报告

  12. $arr_port = [801, 808, 8080, 8081, 8181, 8811, 8888, 9901, 9999, 18181]; //可能使用的端口数组,可自行删减

  13. $fmt = $_GET['fmt']; //要测试的链接地址

  14. if (empty($fmt)) die('需指定要扫描的链接地址格式');

  15. //分解URL链接
  16. $scheme = parse_url($fmt)['scheme']; //协议
  17. $host   = parse_url($fmt)[ 'host' ]; //主机
  18. $port   = parse_url($fmt)[ 'port' ]; //端口
  19. $path   = parse_url($fmt)[ 'path' ]; //路径

  20. //判断使用端口数组
  21. if (!empty($port)) $arr_port = [$port];

  22. //分解IP地址
  23. list($a, $b, $c, $d) = explode('.', $host);

  24. echo "开始扫描:<br>";
  25. flush(); //刷新页面内容

  26. $arr_host = array(); //创建主机地址数组
  27. $start_time = microtime(true); //记录开始时间

  28. if (!is_numeric($a)) {
  29.   for ($ia = 0; $ia <= 255; $ia++) {
  30.     for ($ib = 0; $ib <= 255; $ib++) {  
  31.       for ($ic = 0; $ic <= 255; $ic++) {
  32.         echo "<br>$ia.$ib.$ic.(0-255): >";
  33.         for ($id = 0; $id <= 255; $id++) {
  34.           test_http($scheme, "$ia.$ib.$ic.$id", $arr_port, $path);
  35.           echo ".";
  36.         }
  37.       }
  38.     }
  39.   }
  40. } else {
  41.   if (!is_numeric($b)) {
  42.     for ($ib = 0; $ib <= 255; $ib++) {  
  43.       for ($ic = 0; $ic <= 255; $ic++) {
  44.         echo "<br>$a.$ib.$ic.(0-255): ";
  45.         for ($id = 0; $id <= 255; $id++) {
  46.           test_http($scheme, "$a.$ib.$ic.$id", $arr_port, $path);
  47.           echo ".";
  48.         }
  49.       }
  50.     }
  51.   } else {
  52.     if (!is_numeric($c)) {
  53.       for ($ic = 0; $ic <= 255; $ic++) {
  54.         echo "<br>$a.$b.$ic.(0-255): ";
  55.         for ($id = 0; $id <= 255; $id++) {
  56.           test_http($scheme, "$a.$b.$ic.$id", $arr_port, $path);
  57.           echo ".";
  58.         }
  59.       }
  60.     } else {
  61.       echo "<br>$a.$b.$c.(0-255): ";
  62.       for ($id = 0; $id <= 255; $id++) {
  63.         test_http($scheme, "$a.$b.$c.$id", $arr_port, $path);
  64.         echo ".";
  65.       }
  66.     }
  67.   }
  68. }

  69. $end_time = microtime(true); //记录结束时间
  70. $seconds = round($end_time - $start_time, 3);
  71. $count_time = gmdate('H:i:s', $seconds) . '.' . explode('.', $seconds)[1];
  72. $count_host = count($arr_host);

  73. echo "<br><br>扫描结束!<br><br>";
  74. echo "执行本次脚本获得 " . $count_host . " 个主机地址,总共消耗时间:" . $count_time . "(" . $seconds . " 秒)。<br><br>";
  75. echo "扫描结果:<br>";
  76. foreach ($arr_host as $v) echo "$v<br>"; //枚举扫描结果

  77. function test_http($scheme, $host, $arr_port, $path) {
  78.   set_time_limit(0); //重置超时时间,很重要!!!

  79.   $handles = array();
  80.   $running = null;

  81.   $mh = curl_multi_init(); //创建批处理句柄
  82.   foreach ($arr_port as $port) {
  83.     $url = "{$scheme}://{$host}:{$port}{$path}";
  84.     $ch = curl_init($url);
  85.     curl_setopt($ch, CURLOPT_NOSIGNAL, 1);           //解决CURLOPT_TIMEOUT_MS赋值小于1000报错的bug
  86.     curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);       //超时时间(毫秒),数值越大,扫描越慢
  87.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  //以字符串返回
  88.     curl_multi_add_handle($mh, $ch);
  89.     $handles[$port] = $ch;
  90.   }

  91.   do { //执行批处理句柄
  92.     curl_multi_exec($mh, $running);
  93.     curl_multi_select($mh);
  94.   } while ($running > 0);

  95.   foreach ($handles as $port => $ch) { //检查每个请求的响应内容
  96.     $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);     //获取响应状态码
  97.     $size = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD); //下载的数据总值
  98.     if ($code == 200 && $size > 0) {
  99.       save_result("$host:$port"); //实时保存主机地址到本地文档中
  100.       global $arr_host; //套用全局变量
  101.       array_push($arr_host, "$host:$port"); //添加到主机地址数组中
  102.       echo "'$host:$port'";
  103.     }
  104.   }

  105.   foreach ($handles as $ch) curl_multi_remove_handle($mh, $ch); //关闭并发请求的句柄
  106.   curl_multi_close($mh);

  107.   flush(); //刷新页面内容
  108. }

  109. function save_result($host) {
  110.   $txt_name = basename($_SERVER['PHP_SELF']) . '.txt';
  111.   $datetime = date('Y-m-d H:i:s', time());
  112.   if ($file = fopen($txt_name, 'a')) { //打开文件
  113.     fwrite($file, "$datetime --> $host\r\n");
  114.     fclose($file); //关闭文件
  115.   }
  116. }
  117. ?>
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册需人工审核(节假日除外)

×

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

Welcome to iptv.cc !

回复

使用道具 举报

签到天数: 73 天

[LV.6]渐入佳境

发表于 2024-11-4 17:58:29 | 显示全部楼层
人生没有彩排,每天都是直播

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

Welcome to iptv.cc !

回复

使用道具 举报

本版积分规则

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

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

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

GMT+8, 2025-1-31 11:31 , Processed in 0.101388 second(s), 19 queries .

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

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