|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2007
Messaggi: 364
|
[ Vb6 ] Bloccare Traffico Ip - Genymus
Salve, ho bisogno di bloccare il traffico tcp/udp verso e da un ip su porte predefinite.
Per esempio: Chiudere traffico in entrata da 192.16.20.1 su porta Tcp 1234 Chiudere traffico in uscita verso 192.16.20.2 su porta Udp 4321 Naturalmente mi servirebbe anche un modo per riaprirle. Grazie Ps: Premetto che il programma dovrà girare su macchine con Windows Xp con utenti limitati, e mi sarà impossibile registrare dll; non mi è concesso nemmeno modificare il firewall di windows. Il winsock non è installato. Se questa cosa è possibile con le limitazioni scritte quì sopra, bene. Altimenti postate lo stesso... il sapere umano appartiene al mondo... Grazie in anticipo per le risposte.
__________________
Genymus!!! "Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti." "Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere. "Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?" Aforismieaforismi.it |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2007
Messaggi: 364
|
nessuno sa come fare?
__________________
Genymus!!! "Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti." "Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere. "Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?" Aforismieaforismi.it |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Su XP devi usare le packet filtering API incluse in iphlpapi.dll.
Su Vista eventualmente devi usare le Windows Filtering API. Ultima modifica di tomminno : 22-09-2009 alle 09:53. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2007
Messaggi: 364
|
mi può fare un esempio su come utilizarle, riguardo il mio problema?
Grazie
__________________
Genymus!!! "Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti." "Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere. "Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?" Aforismieaforismi.it |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12840
|
Per il "verso" non può semplicemente mettersi un listening su quelle porte? O forse è troppo banale
![]() Tra l'altro con le porte >1024 non dovresti avere particolari problemi come utente limitato ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Se per te è necessario bloccare la porta in un senso solo allora devi per forza scriverti un driver. Per usare le packet filtering api per prima cosa bisogna creare un'interfaccia, i filtri che si aggiungono a questa interfaccia eseguono il not della regola impostata dall'interfaccia, ovvero per bloccare solo alcune porte ip bisogna definire un'interfaccia che consente tutto il traffico e poi impostare i filtri per la combinazione porte/ip d'interesse. In C è qualcosa di simile a questo: Codice:
INTERFACE_HANDLE hInterface = NULL; //Interfaccia permissiva PfCreateInterface(0, PF_ACTION_FORWARD, PF_ACTION_FORWARD, FALSE, FALSE, &hInterface); PF_FILTER_DESCRIPTOR filterDescriptorIn; filterDescriptorIn.dwFilterFlags = FD_FLAGS_NOSYN; filterDescriptorIn.dwRule = 0; filterDescriptorIn.pfatType = PF_IPV4; filterDescriptorIn.dwProtocol = FILTER_PROTO_ANY;//Puoi anche specificare FILTER_PROTO_UDP o FILTER_PROTO_TCP ma in strani casi non mi funzionava filterDescriptorIn.fLateBound = 0; filterDescriptorIn.wSrcPort = 1234; filterDescriptorIn.wDstPort = FILTER_TCPUDP_PORT_ANY; filterDescriptorIn.wSrcPortHighRange = 1234; filterDescriptorIn.wDstPortHighRange = FILTER_TCPUDP_PORT_ANY; BYTE mask[4] = { 255,255,255,255 }; BYTE source[4] = {192,16,20,1}; BYTE localIP[4] = prendi l'ip locale della macchina filterDescriptorIn.SrcAddr = source; filterDescriptorIn.SrcMask = mask; filterDescriptorIn.DstAddr = localIP; filterDescriptorIn.DstMask = mask; PfAddFiltersToInterface(hInterface , 1, &filterDescriptorIn, 0, NULL, NULL); PF_FILTER_DESCRIPTOR filterDescriptorOut; filterDescriptorOut.dwFilterFlags = FD_FLAGS_NOSYN; filterDescriptorOut.dwRule = 0; filterDescriptorOut.pfatType = PF_IPV4; filterDescriptorOut.dwProtocol = FILTER_PROTO_ANY; filterDescriptorOut.fLateBound = 0; filterDescriptorOut.wSrcPort = FILTER_TCPUDP_PORT_ANY; filterDescriptorOut.wDstPort = 4321; filterDescriptorOut.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY; filterDescriptorOut.wDstPortHighRange = 4321; BYTE mask[4] = { 255,255,255,255 }; BYTE dest[4] = {192,16,20,2}; BYTE localIP[4] = prendi l'ip locale della macchina filterDescriptorOut.SrcAddr = localIP; filterDescriptorOut.SrcMask = mask; filterDescriptorOut.DstAddr = dest; filterDescriptorOut.DstMask = mask; PfAddFiltersToInterface(hInterface, 0, NULL, 1, &filterDescriptorOut, NULL); |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2007
Messaggi: 364
|
in vb6 non riesco a trasformarlo soprattuto l'interfaccia.
__________________
Genymus!!! "Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti." "Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere. "Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?" Aforismieaforismi.it |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ma tu sulle macchine dove eventualmente dovrai installare questo programma, hai privilegi oppure no? Perchè non dovrebbe bastare un semplice firewall settato da un admin e quindi non modificabile dall'utente limitato?
Inoltre, credo che vb6 sia davvero mal pensato per sviluppare qualcosa del genere. Ad ogni modo, ho trovato questo link, magari ti è utile: http://www.msghelp.net/showthread.php?tid=30867
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#9 | ||
Senior Member
Iscritto dal: Oct 2007
Messaggi: 364
|
Quote:
Quote:
Grazie per il link, ci darò un'occhiata subito. Genymus
__________________
Genymus!!! "Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti." "Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere. "Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?" Aforismieaforismi.it |
||
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2007
Messaggi: 364
|
Da quello che ho visto nella pagina a cui il link rimandava, viene utilizzato il Winsock (quindi mswinsok.ocx) che non è installato nel pacchetto di installazione di windows, e che quindi non posso usare se non registrata la dll.
Altre risposte? Grazie
__________________
Genymus!!! "Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti." "Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere. "Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?" Aforismieaforismi.it |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
In entrata, il software vero, non potrebbe fare binding (a meno di forzare il barging) e in ogni caso le connessioni verrebbero instaurate, senza fare il lavoro richiesto però. |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: May 2001
Messaggi: 12840
|
Quote:
Devo fare una prova, giusto per curiosità, senza mettere il server in accept. |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Il suo scopo è limitarne invece il dialogo con un determinato ip (o range di ip) |
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12840
|
Hai ragione ragionandoci un attimo se facessi un bind, anche senza listening, bloccherei la porta ma indistintamente a qualsiasi comunicazione...
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Certo che se non hai permessi come puoi pensare di bloccare le porte? Pensavo che per lo meno il software potesse girare con permessi superiori a Users Ultima modifica di tomminno : 22-09-2009 alle 16:31. |
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Ok ma in uscita può voler dire 2 cose:
porta sorgente :X porta destinazione:X Se io faccio un blocco sulla 80, vuol dire che, oltre ad impedire l' ingresso ad un ipotetico webserver, dovrebbe bloccare anche i segmenti uscenti che hanno come destinazione 80, ovvero non riesco piu ad utilizzar eil web, mentre se forzassi il SO ad utilizzare come porta locale l' 80 dovrei uscire tranquillamente. |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quindi in uscita significa che io non posso cercare di aprire connessioni verso l'esterno da quella porta, in ingresso che non posso ricevere connessioni su quella porta. Chiaramente le api di XP non fanno questa distinzione e bloccano completamente la porta. Con Vista invece grazie allo stack TCP/IP rinnovato è possibile fare questa distinzione direttamente da API. |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:57.