PDA

Visualizza la versione completa : [C++] Libreria per ritardare pacchetti entranti e uscenti da host


ingtabby
29-12-2005, 13:23
Ciao a tutti! Devo fare un programma per windows in cui ritardo (secondo tempi stabiliti da un algoritmo) tutti i pacchetti entranti e uscenti da uno specifico host...quale libreria posso usare? Winpcap da quello che ho capito serve solo a sniffare...è vero? Altrimenti potrei copiare i pacchetti, dropparli e rimandarli...ma in userspace che libreria posso usare??
Vi ringrazio...
Saluti
Francesco

alka
29-12-2005, 14:08
A quale linguaggio fai riferimento?

Leggi il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=862017) per conoscere tutte le regole da seguire per utilizzare nel modo corretto quest'area del forum.

Ciao e buona prosecuzione! :ciauz:

unomichisiada
29-12-2005, 14:24
Originariamente inviato da ingtabby
Ciao a tutti! Devo fare un programma per windows in cui ritardo (secondo tempi stabiliti da un algoritmo) tutti i pacchetti entranti e uscenti da uno specifico host...quale libreria posso usare? Winpcap da quello che ho capito serve solo a sniffare...è vero? Altrimenti potrei copiare i pacchetti, dropparli e rimandarli...ma in userspace che libreria posso usare??
Vi ringrazio...
Saluti
Francesco
Ciao tempo fa ho programmato un semplice firewall che agiva al livello di rete cioè analizzando gli headers dei pacchetti IP.
Il programam era costituito da due parti:
-un driver in kernelmode che si "aggangiava" (hook) alla dll di filtraggio pacchetti presente come componente di windows
-un frontend per configurare le regole sulla base delle quali doveva avvenire il filtraggio dei pacchetti.

In particolare la prima parte era programmata in linguaggio C e la seconda in linguaggio C++.

Penso che il tuo problema si possa risolvere realizzando qualcosa di simile alla prima parte del mio programma, il driver.Infatti il mio driver operava semplicemente da filtro anteposto al driver di filtraggio pacchetti di win, tu invece di effettuare una selezione dei pacchetti potresti semplicemente introdurre una qualche elaborazione fasulla o delle sleep() per ottenere il tuo scopo. Ovviamente per fare questo devi avere due prerequisiti:

-una discreta conoscenza del linguaggio C
-una buona dose di voglia per leggerti la documentazione relativa alla tecnica che ho utilizzato e che sono disposto ad inviarti se decidi di percorrere questa strada.

Con winpcap non so se si può ottenere ciò che vuoi, ad esempio il mio scopo non era raggiungibile (avevo sondato l'ipotesi prima) in quento winpcap può effettuare solo un'analisi dei pacchetti ma non può interferire in alcun modo da quanto avevo capito.In altre parola ci puoi realizzare uno sniffer (ma esiset già l'ottimo ethereal) ma non quello che vuoi tu.

ingtabby
29-12-2005, 14:52
Per Alka: scusa! ho provato a cambiare il titolo ma adesso è troppo tardi...è che ho postato in tantissimi forum e ormai ero allo stremo delle forze e nn ci ho fatto caso :biifu:
Il linguaggio cmq è c++.

Per unomichisiada: forse quello che hai fatto tu è implementare un hook-filter..no? Ho letto qualcosa a riguardo e in effetti sembra interessante ma più difficile da realizzare...in più il ritardo da aggiungere dovrebbe essere gestito da un algoritmo..riuscirei ad inglobarlo nel filter? cmq guarda se puoi mandami tutto quello che puoi sull argomento..ho bisogno di tutto il materiale possibile perchè sull'hook -filter ho visto che c'è poco in giro...il c++ lo sto conoscendo adesso, cmq il mio lavoro è per la tesi di laurea e nel biennio abbiamo fatto java quindi penso di potermi arrangiare discretamente...aspetto una tua risposta!!Sei gentilissimo! Grazie!

unomichisiada
29-12-2005, 16:04
Originariamente inviato da ingtabby
Per Alka: scusa! ho provato a cambiare il titolo ma adesso è troppo tardi...è che ho postato in tantissimi forum e ormai ero allo stremo delle forze e nn ci ho fatto caso :biifu:
Il linguaggio cmq è c++.

Per unomichisiada: forse quello che hai fatto tu è implementare un hook-filter..no? Ho letto qualcosa a riguardo e in effetti sembra interessante ma più difficile da realizzare...in più il ritardo da aggiungere dovrebbe essere gestito da un algoritmo..riuscirei ad inglobarlo nel filter? cmq guarda se puoi mandami tutto quello che puoi sull argomento..ho bisogno di tutto il materiale possibile perchè sull'hook -filter ho visto che c'è poco in giro...il c++ lo sto conoscendo adesso, cmq il mio lavoro è per la tesi di laurea e nel biennio abbiamo fatto java quindi penso di potermi arrangiare discretamente...aspetto una tua risposta!!Sei gentilissimo! Grazie!
Esatto ho implementato un hook filter, vedo che hai già letto in proposito molto bene!
L'algoritmo lo puoi codificare in una funzione C del driver stesso e la puoi richiamare dalla funsione che elabora i pacchetti senza problemi.Per fare sta cosa ti serve soprattutto il C non il C++. L'interfaccia di configurazione (se ne serve una) te la puoi anche fare in java con le jni se già conosci java.Io a suo tempo la feci in C++ con le MFC perchè con java non ero ancora in grado.Una volta letta un po di doc farlo secondo me ti risulterà meno difficile di quanto non ti possa apparire ora.
Hai ragione sulla tecnica dell HF si trova poco però ho qualcosa io, contattami in privato che te la mando. Compatibilmente con il tempo che ho e con quello che mi ricordo puoi anche farmi delle domande se hai dubbi.Ciao

Loading