Domanda

Ho provato googling per questo, ma non ho trovato nulla ... Sto costruendo un port scanner e vorrei fare in modo, che io possa eseguire la scansione di un intervallo di rete ad esempio 192.168.2. * E scoprire quanti computer sono in tale intervallo nel sito. Alot come Nmap. Sto la programmazione in Python. Questo è possibile in Python?

È stato utile?

Soluzione

Ecco Progetto di esempio che si può iniziare con:

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

o qualcosa di simile utilizzando ICMP ( ping ) piuttosto ringraziare 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

Altri suggerimenti

Usa python-nmap. Utilizzo di base:

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))

Per ulteriori riferimenti vedi http://pypi.python.org/pypi/python-nmap

socket raw è possibile implementare qualcosa di nmap-like. Probabilmente troverete che le sonde più informativi devono essere fatte utilizzando pacchetti appositamente predisposti che fanno cose "dispari", rispetto ai normali interfacce di programmazione. Vale la pena leggere su IP / UDP / TCP RFC .

Uso delle prese prime è possibile generare byte per byte ogni pacchetto di sondaggio di tua scelta, con opzioni / configurazioni di set che sono normalmente impossibili / difficile da fare in circostanze normali, ma che "trucco" un host a rivelare una ricchezza di informazioni.

Per IPv4 sulla rete locale è possibile ricorrere a ARP utilizzando per esempio Scapy , vedi domanda relativa .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top