攻陷一台内网主机,想要确认它是否可以联网以及相应的出口IP,可以访问特定的网站。myip.ipip.net
如果是一台linux的机器,一般可以运行shell和python3
chukouip.sh
#!/bin/bash
ip=$(curl -s http://myip.ipip.net)
echo "My public IP address is: $ip"
chukouip.py
import requests
def get_public_ip():
try:
response = requests.get('http://myip.ipip.net', timeout=5)
if response.status_code == 200:
return response.text.strip()
else:
return "Error: Unable to fetch IP address."
except requests.exceptions.RequestException as e:
return f"Error: {e}"
public_ip = get_public_ip()
print(f"My public IP address is: {public_ip}")
导入 requests 库:用于发送 HTTP 请求。
定义 get_public_ip 函数:用于获取公共 IP 地址。
使用 requests.get 方法发送 GET 请求到 myip.ipip.net
检查响应的状态码是否为 200,如果是,则返回文本内容。
如果状态码不是 200 或者发生异常,返回错误消息。
调用函数并打印结果:调用 get_public_ip 函数并将结果打印出来。
如果拿下的是一台windows机器,可以使用powershell或者bat脚本。
chukouip.ps1
$ip = Invoke-RestMethod -Uri 'http://myip.ipip.net' -UseBasicParsing
Write-Host "My public IP address is: $ip"
Invoke-RestMethod 命令:用于发送 HTTP 请求并接收响应。
-Uri 参数指定了要请求的 URL。
-UseBasicParsing 参数用于避免 PowerShell 自动转换 JSON 输出,这对于简单的文本响应非常有用。
Write-Host 命令:用于输出结果到控制台。
chukouip.bat,适用于windows server 2003的场景
@echo off
setlocal enabledelayedexpansion
:: 设置命令提示符为 UTF-8 编码
chcp 65001 >nul
:: 获取公共 IP 地址
for /f "usebackq tokens=* delims=" %%a in (`curl -s http://myip.ipip.net`) do (
set ip=%%a
)
:: 显示公共 IP 地址
echo My public IP address is: !ip!
endlocal
@echo off:关闭命令回显,使得脚本运行时不显示命令本身。
setlocal enabledelayedexpansion:启用延迟变量扩展,以便在循环中正确使用变量。
命令提示符的代码页设置为 65001,即 UTF-8 编码。
for /f 循环:使用 curl 命令获取 IP 地址,并通过 for /f 循环读取输出。
usebackq 表示使用反引号来引用命令,而不是双引号。
tokens=* 表示获取整个行作为单一的令牌。
delims= 表示不使用任何分隔符。
set ip=%%a:将获取到的 IP 地址赋值给变量 ip。
echo My public IP address is: !ip!:输出公共 IP 地址。这里使用 !ip! 而不是 %ip%,是因为我们启用了延迟变量扩展。
endlocal:结束局部变量环境。
看来powershell和shell的优势还挺大,就说真的是简洁。
nstool.netease.com/ ,这个网站也可以访问之后知道自己的出口IP多少。