
██╗ ██╗ ██████╗ ████████╗ ██████╗ ██████╗
██║ ██║██╔═══██╗╚══██╔══╝██╔═══██╗██╔══██╗
██║ █╗ ██║██║ ██║ ██║ ██║ ██║██████╔╝
██║███╗██║██║ ██║ ██║ ██║ ██║██╔═══╝
╚███╔███╔╝╚██████╔╝ ██║ ╚██████╔╝██║
╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝
WOTOP — это инструмент, предназначенный для туннелирования любого трафика через стандартный HTTP-канал.
Полезен в сценариях, где есть прокси, фильтрующий весь трафик, кроме стандартного HTTP(S). В отличие от других инструментов, которые либо требуют нахождения за прокси, пропускающим произвольный трафик (возможно, после первоначального CONNECT-запроса), либо работают только с SSH, этот не накладывает таких ограничений.
Предположим, вы хотите использовать SSH для подключения к удалённой машине, на которой у вас нет прав root.
Всего будет 7 сущностей:
Если бы прокси не было, связь выглядела бы так:
Client -> Client SSH process -> Target Server -> Target SSH process
В данном сценарии предлагается следующий метод:
Client -> Client SSH process -> Client WOTOP process -> Proxy -> Target WOTOP process -> Target SSH process -> Target Server
WOTOP просто оборачивает все данные в HTTP-пакеты и соответствующим образом их буферизует.
Ещё более сложный сценарий — когда у вас есть внешний сервер-утилита и вам нужно получить доступ к ресурсам другого сервера из-за прокси. В этом случае wotop по-прежнему будет работать на вашем внешнем сервере, но вместо localhost во второй команде (раздел «Использование») используйте имя хоста целевой машины, на которой расположен хост.
На клиентской машине:
./wotop <client-hop-port> <server-host-name> <server-hop-port>
На целевой машине:
./wotop <server-hop-port> localhost <target-port> SERVER
(Обратите внимание на ключевое слово SERVER в конце)
В случае SSH целевой порт будет 22. Теперь, когда эти два процесса запущены, для подключения по SSH выполните следующее:
ssh <target-machine-username>@localhost -p <client-hop-port>
Примечание: Ключевое слово server указывает wotop, какая сторона соединения должна работать через HTTP.
Pull Request'ы более чем приветствуются! 😄