SharpPcap è già in grado di acquisire i pacchetti nello stesso modo in cui fa wireshark (solo in codice anziché in una GUI). E puoi analizzarli direttamente oppure puoi scaricarli nell'unità nel comune formato di file .pcap.
La procedura per analizzare una cattura sono:
- Scegli un'interfaccia
- aprire una connessione in modalità promiscua
- Inizio catturare sia utilizzando un ciclo while o un callback evento
- analizzare il grezzo pacchetto al tipo che vuoi
Se stai leggendo i file .pcap dump il processo è quasi lo stesso Se si chiama un lettore di acquisizione offline, non è necessario selezionare un'interfaccia e non è necessario impostare la modalità promiscua. Tutti i filtri standard utilizzati da wireshark, tcpdump e molti altri framework Pcap sono supportati in SharpPcap. Per un riferimento a questi controlli l'uomo tcpdump.
Attualmente non è supportato l'analisi diretta di HTTP ma l'analisi dei pacchetti TCP è davvero semplice.
Quando si riceve il pacchetto crudo (non analizzato) fare questo:
TCPPacket packet = TCPPacket.GetEncapsulated(rawPacket);
il pacchetto.Il parser Net (Un componente separato e incluso di SharpPcap) è in grado di estrarre direttamente la porzione TCP anche se la comunicazione è incapsulata da VPN, PPoE o PPP.
volta che hai la TCPPacket analizzato basta afferrare packet.PayloadBytes per il carico utile in un array di byte che dovrebbe contenere l'header HTTP in byte prime che possono essere convertiti nel formato testo vero e proprio (Io non sono davvero sicuro se intestazioni HTTP usa la codifica UTF-8 o ASCII a quel livello). Ci dovrebbero essere un sacco di strumenti/librerie disponibili liberamente per analizzare le intestazioni HTTP.
Per estrarre il pacchetto HTTP da TCP:
È necessario raccogliere i pacchetti TCP del collegamento così come arrivano e se i dati è frammentato (superiore a 1500 byte) è necessario riassemblare le parti in memoria. Per scoprire quali parti vanno in quale ordine è necessario monitorare con attenzione i numeri di sequenza/riconoscimento.
Questa è una cosa non banale da realizzare con SharpPcap perché stai lavorando con una parte molto più bassa dello stack e riassemblando la connessione manualmente.
Wireshark ha un interessante articolo su come ottenere questo risultato in C.
A partire da ora, SharpPcap non supporta TCP payload analisi.
Se siete alla ricerca di facili da seguire esempi di come utilizzare SharpPcap scaricare l'albero dei sorgenti e guardare l'esempio progetti inclusi. C'è anche un tutorial for SharpPcap on codeproject.
Se avete altre domande e/o volete fare richieste di funzionalità al progetto, sentitevi liberi di postare sul progetto SourceForge. È tutt'altro che morto e continua a essere in fase di sviluppo attivo.
Nota: Chris Morgan è il capo del progetto e sono uno degli sviluppatori di SharpPcap/Packet.Net.
Aggiornamento: il progetto di esercitazione sul progetto di codice è ora aggiornato per corrispondere all'API corrente.
'GetEncapsulated' è uguale a' Packet.ParsePacket (e.Packet.LinkLayerType, e.Packet.Data); 'giusto? – C4u