
Web sobre qualquer protocolo
██╗ ██╗ ██████╗ ████████╗ ██████╗ ██████╗
██║ ██║██╔═══██╗╚══██╔══╝██╔═══██╗██╔══██╗
██║ █╗ ██║██║ ██║ ██║ ██║ ██║██████╔╝
██║███╗██║██║ ██║ ██║ ██║ ██║██╔═══╝
╚███╔███╔╝╚██████╔╝ ██║ ╚██████╔╝██║
╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝
WOTOP é uma ferramenta projetada para tunelar qualquer tipo de tráfego por um canal HTTP padrão.
Útil para cenários onde existe um proxy filtrando todo o tráfego, exceto o tráfego HTTP(S) padrão. Diferente de outras ferramentas que exigem que você esteja atrás de um proxy que permita a passagem de tráfego arbitrário (possivelmente após uma requisição CONNECT inicial), ou de ferramentas que funcionam apenas para SSH, esta não impõe tais restrições.
Supondo que você queira usar SSH para se conectar a uma máquina remota na qual não possui privilégios de root.
Haverá 7 entidades:
Se não houvesse proxy, a comunicação seria algo como:
Cliente -> Processo SSH do Cliente -> Servidor Alvo -> Processo SSH do Alvo
Neste cenário, aqui está o método proposto:
Cliente -> Processo SSH do Cliente -> Processo Cliente do WOTOP -> Proxy -> Processo Alvo do WOTOP -> Processo SSH do Alvo -> Servidor Alvo
WOTOP simplesmente encapsula todos os dados em pacotes HTTP e os armazena em buffer adequadamente.
Outro cenário ainda mais complicado seria se você tiver um servidor utilitário externo e precisar acessar os recursos de outro servidor a partir de trás de um proxy. Nesse caso, o wotop ainda será executado no seu servidor externo, mas em vez de usar localhost no segundo comando (seção Uso), use o nome do host da máquina alvo que possui o host.
Na máquina cliente:
./wotop <porta-hop-cliente> <nome-do-servidor-host> <porta-hop-servidor>
Na máquina alvo:
./wotop <porta-hop-servidor> localhost <porta-alvo> SERVER
(Observe a palavra-chave SERVER no final)
No caso do SSH, a porta alvo seria 22. Agora, com esses dois em execução, para fazer SSH você executaria o seguinte:
ssh <nome-do-usuário-da-máquina-alvo>@localhost -p <porta-hop-cliente>
Nota: A palavra-chave server informa ao wotop qual lado da conexão deve ser sobre HTTP.
Pull Requests são mais do que bem-vindos! 😄