программирование обмена Socks 5 (как?)

Модератор: Модераторы разделов

Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX

программирование обмена Socks 5

Сообщение Olej »

Собственно, это и есть весь вопрос:
- предлагается (сделать) новый сетевой проект
- нужно, в частности, реализовать обмен через Socks 5
- (собственно, нужен только сервер Socks 5), но для кропотливой отладки всего придётся делать и встречный Socks клиент :unsure:

Если кто щупал Socks 5 обстоятельно, даже не обязательно на уровне программирования сокетов, а на протокольном уровне - отзовитесь :drinks: ... есть что обсудить, да и я много интересного могу показать.

Попутный вопрос: а какой лёгкий Socks-прокси проект для Linux можно взять и установить, в качестве тестовой площадки на совместимость протокольной части Socks 5 "самопала" с реализацией в проекте?
Спасибо сказали:
Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX

Re: программирование обмена Socks 5

Сообщение Olej »

Любопытным ... "быстрым умом ньютонам" дам, для натырки, ссылки:
SOCKS
C++ Socks5 Hostname resolution
Спасибо сказали:
Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX

Re: программирование обмена Socks 5

Сообщение Olej »

Olej писал(а):
29.01.2016 12:51
- нужно, в частности, реализовать обмен через Socks 5

Логика там, как оказывается, до чрезвычайности простая ... "как умывальник" :rolleyes: :

- клиент, который хочет использовать SOCKS, конектится вместо требуемого TCP сервера IP:port к прокси-серверу SOCKS5 IP:port
- клиент с прокси-серверу SOCKS5 обмениваются 2-мя сообщениями запрос-ответ
- во 2-м сообщении клиент передаёт требуемого TCP сервера IP:port
- если всё нормально, прокси-сервер SOCKS5 устанавливает соединение с запрошенным сервером TCP
- клиент гонит (и читает) данные в открытый сокет к прокси-серверу SOCKS5...
- а тот ретранслирует весь TCP поток между клиентом и TCP сервером.

Это если не затрагивать аутентификацию и только для TCP протокола.
Но аутентификация делаетя совсем другими прооколами, и к SOCKS5 (обменам) не имеет никакого касательства.


Рассказывать долго ... но если кого заинересуют сетевые приложения - вот есть проект с кодом ... свеже выпеченный ;-)
Там есть 4 приложения (иначе без этого не отладиться):
- tcpserv - TCP эхо-сервер
- tcpcli - для него отладочный клиент (сделан так ещё потому, что меня просили его воспроизвести для Windows)
- sockcli - клиент, который обращается через SOCKS-прокси к tcpserv
- proxyserv - сам SOCKS прокси-сервер.
Работаю по протоколу SOCKS5 без авторизации (так как SOCKS4).
Вот здесь - все 3 красавца :drinks: :

Код: Выделить всё

olej@nvidia ~/2016_WORK/in.WORK/bcbs/socks5 $ ./tcpserv -vvv
listening on the TCP port 60000
127.0.0.1:46199 <= 127.0.0.1:60000
123
34567

olej@nvidia ~/2016_WORK/in.WORK/bcbs/socks5 $ ./sockcli -vv
through SOCKS 5 127.0.0.1:40000 connect to TCP host 127.0.0.1:60000
-> <5|1|0>
<- <5|0>
-> <5|1|0|1| 127 0 0 1 |234.96>
<- <5|0|0|1| 127 0 0 1 |234.96>
ready for enter:
123
123
34567
34567
^C

olej@nvidia ~/2016_WORK/in.WORK/bcbs/socks5 $ ./proxyserv -vv
SOCKS5 proxy is ready on port 40000
ID=1 <------
<- <5|1|0>
-> <5|0>
<- <5|1|0|1| 127 0 0 1 |234.96>
request for host 127.0.0.1 TCP port 60000
Connection refused
-> <5|5|0|1| 127 0 0 1 |234.96>
ID=1 ------>
ID=2 <------
<- <5|1|0>
-> <5|0>
<- <5|1|0|1| 127 0 0 1 |234.96>
request for host 127.0.0.1 TCP port 60000
-> <5|0|0|1| 127 0 0 1 |234.96>
host 127.0.0.1 порт 60000
123
123
34567
34567
connection closed by client
ID=2 ------>
^C

Опции -vv повышают уровень отладочного вывода (как это принято в POSIX/UNIX/Linux) ... без них мусора будет выводится гораздо меньше.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали: