需求:
刚刚搞了个【小米】路由器,我想进路由的管理后台,提示:安装xx的路由管家,我不想安装
但是无法找到这个管理后台。
而且我是用这个路由作为中继,那么这个路由的ip就会经常更换
尝试通过网上搜索引擎来查找,无结果。奇怪了,个个都是大佬,基操是吧,不post解决办法上来
好好好
通过powershell来进行ip端口的查找
方法1
向192.168.1.1至192.168.1.255 这个255个端口发送请求,查看有没有响应,持续请求持续时间10秒
会打印所有信息,需要肉眼查找
$jobs=@(); 1..255 | ForEach-Object { $ip="192.168.1.$_"; $jobs+=Start-Job -ScriptBlock { param($ip); try { $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" }; $response=Invoke-WebRequest -Uri "http://${ip}:80" -Method Head -TimeoutSec 10 -Headers $headers -ErrorAction Stop; if ($response.StatusCode -eq 200) { Write-Output "IP with webpage data: ${ip}" } elseif ($response.StatusCode -eq 301 -or $response.StatusCode -eq 302) { Write-Output "IP with redirection: ${ip}" } } catch { } } -ArgumentList $ip } ; $jobs | ForEach-Object { $job=$_; $job | Wait-Job; Receive-Job -Job $job | ForEach-Object { Write-Output $_ }; Remove-Job -Job $job }
方法2
不打印没响应的信息
$jobs=@(); 1..255 | ForEach-Object { $ip="192.168.1.$_"; $jobs+=Start-Job -ScriptBlock { param($ip); try { $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" }; $response=Invoke-WebRequest -Uri "http://${ip}:80" -Method Head -TimeoutSec 10 -Headers $headers -ErrorAction Stop; if ($response.StatusCode -eq 200 -or $response.StatusCode -eq 301 -or $response.StatusCode -eq 302) { Write-Output "IP with webpage data: ${ip}" } } catch { } } -ArgumentList $ip }; $jobs | ForEach-Object { $job=$_; $job | Wait-Job -Timeout 60 | Out-Null; Receive-Job -Job $job | ForEach-Object { if ($_ -ne $null) { Write-Output $_ } }; Remove-Job -Job $job }
呵
方法2的拆分
PowerShell单行命令注释
以下是逐步注释,解释每一部分的功能:
$jobs=@(); 1..255 | ForEach-Object { $ip="192.168.1.$_"; $jobs+=Start-Job -ScriptBlock { param($ip); try { $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" }; $response=Invoke-WebRequest -Uri "http://${ip}:80" -Method Head -TimeoutSec 10 -Headers $headers -ErrorAction Stop; if ($response.StatusCode -eq 200 -or $response.StatusCode -eq 301 -or $response.StatusCode -eq 302) { Write-Output "IP with webpage data: ${ip}" } } catch { } } -ArgumentList $ip }; $jobs | ForEach-Object { $job=$_; $job | Wait-Job -Timeout 60 | Out-Null; Receive-Job -Job $job | ForEach-Object { if ($_ -ne $null) { Write-Output $_ } }; Remove-Job -Job $job }
初始化作业数组:
$jobs=@();
初始化一个空数组$jobs,用于存储作业。
生成1到255的范围,并为每个IP地址启动作业
1..255 | ForEach-Object {
生成1到255的范围,循环处理每个数字。
构建当前IP地址并启动作业
$ip="192.168.1.$_";
$jobs+=Start-Job -ScriptBlock { param($ip);
使用当前数字构建IP地址,格式为192.168.1.x。
启动一个新作业,并将作业添加到$jobs数组。
请求头和HTTP请求
try { $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" }; $response=Invoke-WebRequest -Uri "http://${ip}:80" -Method Head -TimeoutSec 10 -Headers $headers -ErrorAction Stop;
定义请求头,模拟常见浏览器的User-Agent。
使用Invoke-WebRequest发送HTTP HEAD请求到构建的IP地址和端口80。
设置请求超时时间为10秒,并在出现错误时停止处理。
处理响应
if ($response.StatusCode -eq 200 -or $response.StatusCode -eq 301 -or $response.StatusCode -eq 302) { Write-Output "IP with webpage data: ${ip}"
}
检查响应的状态码,如果状态码是200、301或302,则输出该IP地址有网页数据。
捕获异常
} catch { }
捕获任何异常,但不进行处理。
传递参数
} -ArgumentList $ip
将当前IP地址作为参数传递给作业。
等待并处理作业
}; $jobs | ForEach-Object { $job=$_; $job | Wait-Job -Timeout 60 | Out-Null; Receive-Job -Job $job | ForEach-Object { if ($_ -ne $null) { Write-Output $_ } }; Remove-Job -Job $job
}
等待每个作业完成,最多等待60秒。
抑制不必要的输出。
获取并处理作业的结果,只输出有响应的IP地址。
移除已完成的作业。