【问题标题】:Change my PC IP programmatically [closed]以编程方式更改我的 PC IP [关闭]
【发布时间】:2012-07-17 07:28:51
【问题描述】:

我正在构建需要主机每 30 分钟更改一次 IP 的应用程序,我可以在没有 3rd 方应用程序的情况下以编程方式进行吗?

Python 更受欢迎,Java 也受欢迎。

【问题讨论】:

  • 我认为更改您的 IP 需要您联系您的 ISP。此外,这听起来像是试图绕过黑名单或某种禁令。
  • 每次更改 IP 地址都会丢失所有现有连接。如果您出于安全原因这样做是个坏主意。如果您这样做是出于黑客目的,那真是个坏主意。
  • 哪个平台?哪个发行版?
  • stackoverflow.com/questions/7580834/… 用 win32 和 WMI 模块回答这个问题
  • @Peter:出于好奇:为什么这对黑客来说真的很糟糕?

标签: java python ip


【解决方案1】:

如果您想更改您的外部(互联网)IP 地址,并且您的机器通过 dsl 连接到互联网,并且您的 ISP 为您分配了一个动态 IP,您可以重新启动路由器(实际上是您的 dsl 调制解调器,但它是内置的)如果您没有旧型号,请进入路由器)以获取新 IP。

理论上可以通过向路由器发送一个小的 SNMP 数据包告诉它自己重启来以编程方式重新启动路由器 - 假设路由器遵循协议并正确解释数据包,并且没有防火墙或其他过滤器阻止 SNMP 消息你和路由器。

在一般情况下,要设置的 SNMP OID 为 1.3.6.1.2.1.69.1.1.3 - 您可以使用任何具有 SNMP 库的语言来设置,例如 python 的 pySNMP。根据您的路由器型号,您可能需要不同的 OID,或者根本无法通过 SNMP 进行重置。

假设您的路由器 ip 是 192.168.0.1 并且它接受默认的重置 OID,这样的事情应该适用于 pySNMP:

from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto import rfc1902
cmdgen.CommandGenerator().setCmd(
    cmdgen.CommunityData('my-agent', 'public', 1),
    cmdgen.UdpTransportTarget(('192.168.0.1', 161)),
    ((1,3,6,1,2,1,69,1,1,3,0), rfc1902.Integer(1))
)

【讨论】:

  • 我很确定美国的大多数 ISP 客户都拥有动态 IP。
  • 是这样吗?那么我想我在这方面的信息有点过时了。似乎几年前静态IP在美国有点普遍(从留言板/irc/论坛对话等判断),我认为在美国拥有静态IP至少更常见比在欧洲这里。我将从答案中删除该评论。
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 2019-07-10
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多