Как узнать, сколько клиентов находится в определенном диапазоне адресов? - PullRequest
2 голосов
/ 15 ноября 2010

Я попробовал поискать в Google, но ничего не нашел ... Я строю сканер портов и хотел бы сделать так, чтобы я мог сканировать диапазон сети, например, 192.168.2. * И узнать, сколько компьютеровнаходятся на том диапазоне, которые онлайн.Очень похоже на Nmap.Я программирую на питоне.Возможно ли это в Python?

Ответы [ 4 ]

2 голосов
/ 15 ноября 2010

Используйте python-nmap.Основное использование:

import nmap
nm = nmap.PortScanner()
nm.scan(hosts='192.168.2.0/24', arguments='-n -sP -PE -PA21,23,80,3389')
hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()]
for host, status in hosts_list:
    print('{0}:{1}'.format(host, status))

Для получения дополнительной информации см. http://pypi.python.org/pypi/python-nmap

1 голос
/ 15 ноября 2010

Вот пример Draft , с которого вы можете начать:

import socket

addr_range = "192.168.1.%d"

ip_address_up = []

# Use UDP. 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.settimeout(2.0)

for i in range(1, 254):
    try:
        ip = addr_range % i
        socket.gethostbyaddr(ip)
        ip_address_up.append(ip)
    except socket.herror as ex:
        pass

print ip_address_up

или что-то в этом роде, используя ICMP ( ping ), а скорее UDP:

import socket
import ping

ip_address_up = []

addr_range = "192.168.1.%d"

for i in range(1, 254):       
   try:
       ip = addr_range % i
       delay = ping.do_one(ip, timeout=2)
       ip_address_up.append(ip)
   except (socket.herror, socket.timeout) as ex:
       pass

print ip_address_up
0 голосов
/ 15 ноября 2010

Для IPv4 в локальной сети вы можете прибегнуть к ARP , скажем, Scapy , см. Связанный вопрос .

0 голосов
/ 15 ноября 2010

Используя raw sockets , вы можете реализовать что-то похожее на nmap. Вы, вероятно, обнаружите, что наиболее информативные тесты должны быть сделаны с использованием специально созданных пакетов, которые делают «странные» вещи по сравнению с обычными интерфейсами программирования. Это стоит прочитать на IP / UDP / TCP RFCs .

Используя необработанные сокеты, вы можете генерировать побайтово любой пробный пакет по вашему выбору с установленными опциями / конфигурациями, которые обычно невозможно / трудно сделать в обычных обстоятельствах, но которые «обманывают» хост в раскрытии большого количества информации.

...