Sto utilizzando Scapy per riprodurre alcuni pacchetti scaricati in cui cambio il valore TTL. Ho ottenuto risultati molto strani anche con TTL = 1.non riceve tutti i messaggi superati in tempo ICMP: perché?
Quando eseguo le mie ore di test l'una dall'altra, posso ottenere da circa il 40% al 95% dei pacchetti a cui è stato risposto un messaggio di superamento del tempo ICMP. Quindi posso ricorsivamente riprodurre i pacchetti senza risposta e ottenere ogni volta più o meno la stessa percentuale di pacchetti con risposta di prima.
Perché è quello?
Ho inviato pacchetti con un intervallo di 0,1 secondi tra loro. Questo dovrebbe essere ok, giusto? Il mio valore di timeout è 10 secondi, che dovrebbe essere molto prudente.
Cosa c'è che non va qui?
Anche la limitazione della velocità ICMP era una mia ipotesi, ma oggi ho provato a inviare nuovamente tutto con un intervallo tra pacchetti pari a 5 secondi e non ho ancora ricevuto risposta per almeno 6-7 pacchetti da il mio 50 (piccolo test). Sto usando la funzione 'sr' in Scapy. Così ho pensato di passarlo un pacchetto alla volta e poi mettere in pausa per 1 secondo. Bene, questa volta * ogni * singolo pacchetto viene risposto. Immagino sia un problema con l'implementazione di 'sr'. –
Ho visto problemi simili con 'scapy', è lento al cane per inviare/ricevere traffico; su un progetto ho effettivamente iniziato a usare 'tcpdump' come processi in background che ha scritto in un file' .pcap' e poi ho analizzato il file in 'scapy' per vedere se ho ottenuto la risposta corretta. –
Vedo. Conosci qualche alternativa alla funzione 'sr' di scapy? Devo davvero solo inviare pacchetti con un valore TTL modificato e associarli con il corrispondente messaggio ICMP. Sembrava/così/semplice in Scapy, ma chiamare 'sr' per ogni pacchetto richiede anni. –