Ciao a tutti,
Ho realizzato un semplice programma in C per scambiare file tramite la rete.
C'è un client che si connette ad un server con ip noto, dopo ciò inizia il trasferimento di comandi e dei dati.
Il client se dietro un NAT funziona perfettamente dato che è LUI a connettersi al server, il problema sorge se è dietro ad un firewall.
In questo caso ho provato a connettermi tramite la porta 80 al server pensando che il firewall lasciasse passare il traffico sulla 80 ma non funziona...
Però ho scoperto una cosa: questo client che ho realizzato prima di connettersi al server scarica una pagina web (cioè usa il protocollo http) e ho scoperto che, pur essendo dietro un firewall, riesce a scaricare la pagina web!
Pertanto credo che il firewall lascia passare il traffico sulla porta 80 ma effettua molto probabilmente uno "Stateful Inspection" analizzando appunto i pacchetti in uscita e bloccando quelli che NON sono pacchetti HTTP.
Per bypassare questo firewall ho pensato ad un HTTP Tunnel che mi permetta di "far credere" al firewall che i pacchetti scambiati siano richieste http ...cioè far credere che quei pacchetti li sta inviando un browser!
Adesso mi chiedo: come realizzo praticamente questo tunnel? In pratica devo far credere al firewall che sto facendo richieste http e visualizzando pagine web... seguire il protocollo HTTP (cioè connessione, invio comando get, attendo risposta server, chiudo) è sufficiente?
naturalmente la risposta da parte del server sarà sempre la stessa ma con l'aggiunta del classico header di sever web...
Chiedo vostri consigli![]()