2012-09-06 15 views
5

Priorità:Packet comportamento corrispondente in scapy

sto usando scapy per testare un dispositivo di rete che può selettivamente pacchetti loopback scambiando MAC sorgente/destinazione, indirizzi IP, e lo strato 4 numeri di porta. Lo scambio può essere selezionato per layer_2_only, layers_2_and_3, layers_2_3_and_4. Sto eseguendo scapy su un server, trasmettendo pacchetti sul dispositivo e convalidando che i pacchetti inviati indietro hanno scambiato i campi source/dest appropriati a seconda dell'impostazione.

Problema:

Il metodo Scapy srploop(), che invia e riceve i pacchetti partite funziona bene per i tipi di messaggi come ping e ARP. Sto scoprendo che se trasmetto un pacchetto UDP e le porte source/dest non sono invertite dal dispositivo loop-back, allora scapy non tratta il pacchetto loopback come una partita. Quando i numeri di porta vengono invertiti dal dispositivo loop-back, i pacchetti vengono rilevati come corrispondenze.

Domande:

  1. Esiste un modo per ignorare o comunque influenzare la logica del pacchetto corrispondente di Scapy? Ad esempio, essere in grado di disabilitare la corrispondenza al livello 4 sarebbe utile. Ho esaminato la documentazione e non ho trovato nulla che suggerisca che sia possibile.

  2. C'è un altro modo per ottenere questo risultato in scapy. Ho provato a utilizzare send() seguito da sniff() ma non sono riuscito a catturare le risposte utilizzando tale metodo.

risposta

1

Per la seconda parte della domanda, si potrebbe desiderare di provare l'approccio che ho detto in Scapy fails to sniff packets when using multiple threads.

In pratica, eseguire lo sniffer su un thread separato e filtrare il traffico di ritorno in una coda, a cui è possibile accedere dal thread principale che esegue lo send(). Quindi hai inviato e ricevuto in corso allo stesso tempo (su due thread).

L'unico problema è che nella mia configurazione particolare, ho riscontrato un comportamento strano nello sniffer in cui non riesce ad applicare il filtro quando viene eseguito su un thread separato. Spero che tu abbia più fortuna.

UPDATE: il problema con lo sniffer è stato risolto (fare riferimento alla domanda in precedenza).

Spero che questo aiuti!