PDA

View Full Version : [C++]Bloccare determinati ip..


4ndr34s
07-03-2009, 18:50
come da titolo, è possibile farlo???

wizard1993
07-03-2009, 20:28
tramite winsock; analizzando l'header del pacchetto a livello 3 iso/osi; poi che domanda è se si può fare? mai sentito parlare di peerguardian?

4ndr34s
07-03-2009, 20:43
ma io voglio farlo nel mio programma no con altri programmi sterni...

wizard1993
07-03-2009, 22:06
chiaramente; era solo per dirti che esistono programmi che già lo fanno

4ndr34s
07-03-2009, 22:47
questo è logico....
sono un informatico.....

tomminno
08-03-2009, 02:04
come da titolo, è possibile farlo???

Sistema operativo?
Senza scriversi dei driver è possibile usare le API specifiche:
netfilter su Linux
Windows Firewall API su Vista
iphlpapi su XP

cionci
08-03-2009, 13:41
Ma poi in che senso bloccare ? Bloccare l'accesso al tuo programma ? O a tutto il sistema ?

4ndr34s
08-03-2009, 14:03
vorrei che il mio programma bloccasse la connessione ad un ip passante dalla porta 6000 in modo da non farlo + entrare nel mio server
non so se vi ho reso chiara l'idea...
comunque si bloccare al sistema la connessione a quell'ip

cionci
08-03-2009, 14:07
Ma il programma che sta in ascolto sulla porta 6000 l'hai fatto te ?

Un modo brusco sarebbe quello di far fare il bind solo su 127.0.0.1 al programma che sta in ascolto sulla porta 6000, sempre che sia possibile. Poi fai un tuo programma che fa il bind sulla porta 6000 dell'indirizzo ip della scheda di rete in modo da ricevere tutte le connessioni in ingresso. Quando ricevi una connessione in ingresso fai il redirect di tutto verso 127.0.0.1:6000, ovviamente chiudendo la connessione agli indirizzi che vuoi bloccare.

4ndr34s
08-03-2009, 14:10
mmm in cosa consiste questo "blind"?
non e ho mai sentito parlare in vita mia..

cionci
08-03-2009, 14:13
Bind ;)
Il bind è l'operazione di mettersi in ascolto su una determinata porta di un dato indirizzo ip. Con i socket del C c'è proprio la funzione bind che prende in input un indirizzo ip ed una porta.
Nei programmi server spesso si può specificare l'indirizzo IP su cui il server deve fare il bind oppure, senza specificarlo, lo fa su tutti gli indirizzi IP assegnati al sisstema.

4ndr34s
08-03-2009, 14:16
sarebbe bellissimo cosi ma il problema è sempre il "How to"?

cionci
08-03-2009, 14:19
sarebbe bellissimo cosi ma il problema è sempre il "How to"?
How to...basta la conoscenza dei socket.
Prima di tutto devi scoprire se il programma che è in ascolto sulla porta 6000 lo puoi mettere in ascolto sulla porta 6000 del solo 127.0.0.1