酒店扫ip.php
本帖最后由 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];
$dk=@$PD[$vid];
$ii=@$PD[$vid];
//扫描并保存
$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;}
?> 单从代码的运行性来说,两个for循坏缺少结束符 }。首先代码就无法运行。
$ips=@$PD[$vid]; PD数组中[$vid]定义有误,以'1'=>['121.29.80.' . $i . '.' . $j . ':9901','240']
$ii=@$PD[$vid]; PD数组中[$vid]无定义。
$hls="http://".$ips.$urls.$dk."/tsfile/live/".$id."_1.m3u8"; url结构混乱,变量代入的话,压根不是一个url地址
$id也没有格式化为0001字符串形式。
在处理代码,正常逻辑url找到有效,则输出,保存;无论是在d段还是c段。else的逻辑是没找到的处理,为什么又增加一个循坏。
坛里不是有优秀的相关扫描代码吗? jiteloozz 发表于 2024-10-30 21:38
单从代码的运行性来说,两个for循坏缺少结束符 }。首先代码就无法运行。
$ips=@$PD[$vid]; PD数组中[$ ...
不知道哪个是更好的,想找个可以扫C/D段的,有效IP自动保存,方便调用,加快输出 你真有才,php扫,不崩溃才怪 刚学php时写的,所以注释写得比较详细,支持ABCD段扫描(只要你有耐心{:4_104:}),后来发现空间测绘很方便,所以这个代码已经很久不使用了,由于要用多个端口去猜,所以效率很差,你可以参考参考。
<?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 = ; //可能使用的端口数组,可自行删减
$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);
$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); //关闭文件
}
}
?> 人生没有彩排,每天都是直播
页:
[1]