Как я могу найти IPS в сети в Python - PullRequest
0 голосов
/ 09 июня 2011

Как я могу найти TCP ips в сети с диапазоном (то есть от 132.32.0.3 до 132.32.0.44) через программирование на python, а также узнать, какие ips живы, а какие мертвы.пожалуйста, пришлите мне .. спасибо за ответчики ...

1 Ответ

1 голос
/ 09 июня 2011

Часть 1 - «Поиск IP-адресов»

Ваш примерный диапазон, от 132.32.0.3 до 132.32.0.44, не соответствует ни одной подсети, что любопытно.

Обычно приложения для проверки того, находятся ли хосты вверх и вниз, обычно находятся в пределах подсети, например, 192.168.0.0/28 (адреса хоста: 192.168.0.1 до 192.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?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...