【问题标题】:How can i find the ips in network in python如何在python中找到网络中的ip
【发布时间】:2011-09-11 14:02:02
【问题描述】:

我如何通过 python 编程找到范围(即 132.32.0.3 到 132.32.0.44)的网络中的 TCP ip,并且还想知道哪些 ip 是活动的,哪些是死的。请发给我..谢谢回复...

【问题讨论】:

  • 你和这个网络有什么关系?您与该网络上的主机有什么关系?你为什么想知道?您希望如何将 IP 地址定义为“活”或“死”?
  • 正如 MattH 所说,我们需要更多详细信息才能真正回答您的问题。
  • 没有“网络中的 TCP ips”之类的东西。网络中的设备(通常是计算机)具有 IP 地址。如果您想检查哪些 IP 地址与当前打开的计算机相关联,您可以 ping 每个 IP 地址。 Pinging 假定每台计算机都配置为响应回显请求,但通常是这种情况。顺便说一句,Ping 不涉及 TCP。要在这些计算机上发现 TCP 服务,您必须首先决定要测试哪些 TCP 端口。如果要检查 Web 服务器,通常会尝试连接到端口 80。
  • 或者简而言之:你必须做所有nmap做的事情。

标签: python sockets tcp


【解决方案1】:

第 1 部分 - “查找 IP”

您的示例范围,132.32.0.3132.32.0.44 不匹配任何子网,这很奇怪。

通常用于检查主机是否正常运行的应用程序通常在子网范围内进行,例如192.168.0.0/28(主机地址:192.168.0.1192.168.0.14)。

如果您想计算子网内的地址,我建议您使用ipaddr。例如:

>>> from ipaddr import IPv4Address, IPNetwork
>>> for a in IPNetwork('192.168.0.0/28').iterhosts():
...   print a
...
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14

但是,如果您确定需要任意范围。您可以将 IPv4 地址转换为整数、递增并转换回点分 IP。例如:

def aton(a):
  """
  Change dotted ip address to integer
  e.g. '192.168.0.1' -> 3232235521L
  """
  return reduce(lambda x,y: (x<<8) + y, [ int(x) for x in a.split('.') ])

def ntoa(n):
  """
  Change an integer to a dotted ip address.
  e.g. 3232235522L -> '192.168.0.2'
  """
  return "%d.%d.%d.%d" % (n >> 24,(n & 0xffffff) >> 16,(n & 0xffff) >> 8,(n & 0xff))

def arbitraryRange(a1,a2):
  """
  Generate all IP addresses between two addresses inclusively
  """
  n1, n2 = aton(a1), aton(a2)
  assert n1 < n2
  i = n1
  while i <= n2:
    yield ntoa(i)
    i += 1

提供:

>>> for a in arbitraryRange('192.168.0.10','192.168.0.20'):
...   print a
...
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
192.168.0.16
192.168.0.17
192.168.0.18
192.168.0.19
192.168.0.20

第 2 部分 - “生死攸关”

“活着”或“死去”的问题很复杂,完全取决于这些术语的含义。为了提供上下文和对比,以下是关于 IP 地址/主机的可测试质量列表:

  • 响应 ARP 请求?
  • 响应 ICMP 回显请求?
  • 响应 TCP SYN?

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多