Domanda

SFONDO : ora capisco come scrivere un'applicazione C # in grado di monitorare i pacchetti di andare in / out della scheda di rete sul PC l'applicazione è in esecuzione. Il know approccio che si basa su http://www.winpcap.org/ essere già installato sul PC però, e poi io uso un C # involucro come http://pcapdotnet.codeplex.com/ o http://sourceforge.net/projects/sharppcap/ .

DOMANDA : La mia domanda però, che cosa devo fare per essere in grado di avere un'applicazione C # che i pacchetti possono annusare che non necessita di un 3 ° applicativi partito / conducenti di essere pre-installato?

Chiarimento : Cioè voglio veramente l'applicazione Al momento ho, ma senza alcun requisito per me di dire all'utente di dover andare e scaricare / installare XYZ prima di essere in grado di utilizzare l'applicazione. Ai fini della questione presuppone che l'automazione della scaricare e installare un'applicazione di terze parti / driver non è consentito neanche. (Con WinPCap Non sono sicuro se si può racchiudere, però credo che non dovresti in ogni caso purtroppo)

grazie

È stato utile?

Soluzione

Personalmente mi sarebbe attenersi a WinPCap. Ma dal momento che lei ha chiesto, è possibile annusare i pacchetti dalla rete utilizzando per il seguente codice per attivare raw socket.

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
s.Bind(new IPEndPoint(IPAddress.Parse("<IP Address Here of NIC to sniff>"), 0));
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
byte[] inBytes = new byte[] { 1, 0, 0, 0 };
byte[] outBytes = new byte[] { 0, 0, 0, 0 };
s.IOControl(IOControlCode.ReceiveAll, inBytes, outBytes);

Una volta fatto questo, è possibile utilizzare Socket.Receive o Socket.BeginReceive di leggere i pacchetti IP grezzi.

Altri suggerimenti

C'è un modo per catturare i pacchetti in entrata / uscita su .NET utilizzando solo l'attuazione winsocks standard. Ho visto un blog con esempio di come, ma non ho più il collegamento.

Per farla breve, è un caso estremo vantaggio, perché non è quello che winsocks (le finestre standard di rete del driver) è stato destinato per.

Il motivo Pcap è di solito necessario per catturare i pacchetti è, si utilizza il proprio driver di rete NDIS che sblocca tutte le funzionalità del vostro NIC. In cima a quello, ma fornisce anche un modo semplice per filtri impostati per limitare la quantità di pacchetti viene catturato sull'interfaccia specificata.

IE, il driver ignorerà pacchetti di un tipo specifico a livello di kernel anziché a livello usermode. Pertanto, sarete in grado di filtrare i pacchetti in modo più efficiente e la cattura con carichi più grandi sulla rete.

In .NET, ai pacchetti di filtro, avresti bisogno di fornire il proprio schema di filtraggio dei pacchetti a livello di applicazione che sarebbe molto meno efficiente.

di Windows blocca l'accesso ai protocolli non standard per 'motivi di sicurezza' in modo che in realtà non supportano l'utilizzo di pacchetti RAW per il networking (anche se il codice può esistere per renderlo possibile). pacchetti RAW sono sempre stati destinati per la ricerca la progettazione di nuovi protocolli, non uso generale.

Per tutte queste ragioni è solitamente una buona idea per raccogliere Winpcap e un wrapper per la lingua specifica di realizzare qualsiasi tipo di cattura applicazione.

Nota: Io personalmente preferisco SharpPcap, ma sto anche prevenuto come faccio di sviluppo del progetto. Pcap.net è molto simile nella sua realizzazione, quando si tratta di catturare, diverge soprattutto quando si tratta di come i pacchetti vengono analizzati.

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