Данная программа - некое подобие прокси. Она делится на 2 части: клиент и сервер,
к клиенту прилагается небольшой конфигуратор (конфигурация на этапе
компиляции, т.к. часть настроек нужна для компиляции, часть - для
работы программы [файл client.conf]).
Он (клиент) открывает заданный порт и ждёт подключения других клиентов 🙂 [пока поддерживается
http/1.0 🙁 ]. Далее клиент обрабатывает запрос и шлёт его серверу.
Тот, установив соединение, высылает подтверждение клиенту и начинается
пересылка данных. Данные шлются небольшими пакетами по 1056 байт (в
*nix - 1052. странно даже...) Есть идея обрабатывать запрос на
подключения сразу сервером, чтобы исключить необходимость "вшивания"
поддержки новых протоколов в клиента.
На кой чёрт я разделил прокси на клиент\сервер, спросите вы? Отвечу -)
1) используются свой протокол (не plain-text), который легко дорабатывается и имеет возможность включения всяких там шифрований и проч.
2) для связи клиент-сервер не используется TCP вообще 🙂 все пакеты отсылаются по протоколу ICMP с кодом 0 (echo_reply) 😉
Зачем всё это нужно? А вдруг найдётся такой провайдер, который
предоставляет guest-доступ на свой сервер и который не запретил
возможность пинга любого ip? 🙂 Если таковой не найдётся - можно
вполне использовать данную идею для попытки скрытия факта установки
соединения с удалённым компьютером 🙂
Есть идея "обернуть" это всё не в icmp, а в DNS.
client-beta4 - исходники клиента и конфигуратора
icmpd-0.2 - исходники сервера
exe - бинарники
Да, чуть не забыл - программа консольная, т.к. по-моему в гуи
просто нету смысла.