Salve a tutti, stamattina stavo provando a fare un rudimentale sniffer per poi analizzare leggendoli ad uno ad uno i pacchetti che mi arrivavano, quindi ho pensato che una volta presi i pacchetti potevo salvarne il contenuto in un file, ed ecco il codice:
Il codice funziona, ma nel file log.txt non scrive nulla il file resta vuoto come prima, come risolvo?
P.S. esiste una funzione simile a RAW_SOCKET che però funzioni per linux? Grazie mille in anticipo
Codice:
import socket, io
# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
a=range(4)
while 0==0:
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a package
print s.recvfrom(65565)
a=s.recvfrom(65565)
with open('log.txt', 'w') as file:
file.write(a[0])
file.close()
# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Il codice funziona, ma nel file log.txt non scrive nulla il file resta vuoto come prima, come risolvo?
P.S. esiste una funzione simile a RAW_SOCKET che però funzioni per linux? Grazie mille in anticipo