Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
11 / 11 / 10
Регистрация: 06.10.2012
Сообщений: 675

SOCKS получение ip

06.04.2014, 22:19. Показов 2498. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать socks. Использовал вот этот RFC.
Создал все запросы которые требуются. Но вот последний запрос "Ответы" от сервера клиенту, не могу понять как получаются BND.ADDR и BND.PORT.
Как их получить?
Буду очень благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2014, 22:19
Ответы с готовыми решениями:

Socks сервер
по курсовой выпала тема создание socks v5. Я создал асинхронный сокет, принимаю данные с браузера, потом подключаюсь к указанному хосту и...

Работа с socks
Приветствую Всех Кто в теме, прошу подсказать К примеру, в пакете net есть функция для конекта с серверам func Dial(network,...

Socks прокси
Подойдут ли Socks прокси, для выполнения запросов на сайты httpS?

11
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
07.04.2014, 14:41
Взято из тогоже RFC.

SOCKS-сервер посылает два ответа клиенту в течении операции BIND. Первый послыается после того, как сервер создает и привязывает новый сокет. Поле BND.PORT содержит номер порта, который SOCKS-сервер выделил для входящего соединения. Поле BND.ADDR содержит связанный IP-адрес. Клиент может использовать эту информацию для уведомления (через первичное соединение) приложения-сервера об адресе для взаимодействия. Второе уведомление происходит после ожидаемого входящего соединения или неудачной попытке входящего соединения.

При втором ответе поля BND.PORT и BND.ADDR содержат адрес и номер порта присоединившегося хоста.
0
11 / 11 / 10
Регистрация: 06.10.2012
Сообщений: 675
08.04.2014, 00:44  [ТС]
Цитата Сообщение от stima Посмотреть сообщение
Взято из тогоже RFC.
SOCKS-сервер посылает два ответа клиенту в течении операции BIND. Первый послыается после того, как сервер создает и привязывает новый сокет. Поле BND.PORT содержит номер порта, который SOCKS-сервер выделил для входящего соединения. Поле BND.ADDR содержит связанный IP-адрес. Клиент может использовать эту информацию для уведомления (через первичное соединение) приложения-сервера об адресе для взаимодействия. Второе уведомление происходит после ожидаемого входящего соединения или неудачной попытке входящего соединения.
При втором ответе поля BND.PORT и BND.ADDR содержат адрес и номер порта присоединившегося хоста.
Мне нужно реализовать без BIND. Сказали только Connect

Добавлено через 8 минут
Вот допустим у меня у клиента ip-127.0.0.1:2010
сервер ip-192.168.129.129:2010

Я в браузере забиваю google.ru
Клиент перехватывает эту ссылку и передаёт серверу...
Как я понимаю сервер должен получить BND и передать клиенту, а тот в свою очередь браузеру? или я что-то не то понял?
Мне дали такую схему: браузер->клиент(шифрует)->сервер(расшифровывает)->интернет . И обратно.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
08.04.2014, 01:20
Проясним, Вы реализуете, SOCKS5 клиент где транспортом является TCP. Исходя из http://www.ietf.org/rfc/rfc1928.txt, Вам приходит ответ на CONNECT в котором сообщается BND.ADDR BND.PORT.
Причем начало BND.ADDR вы можете взять сдвигом по октетам, а "variable len" походу попадает под "data type field" и равно MAX_ADDR_LEN (POSIX define). Смотрите датаграмму ответа сервера.

п.с. В RFC не сказано, что BIND является "mandatory", но и не упоминается, что он не должен быть "implemented".

Добавлено через 2 минуты
Схема правильная, но с биндом Вы напутали.
Клиент отсылает:
DST.ADDR desired destination address
DST.PORT desired destination port in network octet order

Клиент получает:
BND.ADDR server bound address
BND.PORT server bound port in network octet order

Добавлено через 9 минут
т.е. если Вы хотите передавать пакеты на google.com то указываете DST.ADDR googlec.com, в свою очередь, сервер предоставит Вам BND.ADDR и BND.PORT по которому будет происходить коммуникация зашифрованными пекетами, расшифрует их и передаст на адрес DST.ADDR.

т.е. Саму "нагрузку", данные для google.com, Вы будете передавать не через адресс:порт SOCKS5 сервера, а через дополнительно выделенные addr: port.
0
11 / 11 / 10
Регистрация: 06.10.2012
Сообщений: 675
08.04.2014, 23:45  [ТС]
Цитата Сообщение от stima Посмотреть сообщение
т.е. Саму "нагрузку", данные для google.com, Вы будете передавать не через адресс:порт SOCKS5 сервера, а через дополнительно выделенные addr: port.
А как их дополнительно выделить? Можете мне помочь немного. Есть ли вы где-нибудь в соц сети? Что-бы передавать исходники. Здесь пока не могу выложить. Т.к. препод (по курсачу) будет проверять здесь всё и если исходник здесь окажется мне не очень хорошо будет.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
09.04.2014, 00:21
Вы думаете, что Ваш преподаватель не заметит Вашего сообщения про соц сети?). И нет меня нет в соц сетях, вообще, я не приверженник этого.
И все же если Ваш преподаватель прочитает эту ветку, то получение СОВЕТОВ (а не решений) на форуме или любом другом ресурсе, это абсолютно нормально и только поощряется в среде программистов. И как я Вам уже заметил, у меня нет желания решать Вашу задачу от и до.
Что же касается самой задачи, то так как Вы конектитесь к SOCKS5 серверу, так же конектитесь и к переданному Вам адресу. Если хотите конкретике, то уточните Ваш язык программирования (С/С++), операционную систему (Windows/Linux/Unix), а также возможность использовать дополнительные библиотеки/фреймворки (boost/qt)
0
11 / 11 / 10
Регистрация: 06.10.2012
Сообщений: 675
09.04.2014, 10:11  [ТС]
Цитата Сообщение от stima Посмотреть сообщение
то же касается самой задачи, то так как Вы конектитесь к SOCKS5 серверу, так же конектитесь и к переданному Вам адресу
Т.е. клиент принятый BND должен отправить на браузер по тому же адресу, с которого принял ссылку?
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
09.04.2014, 15:08
Нет. У меня ворос как Вы предполагаете интеграцию в браузер, и в какой браузер Вы будете интегрировать Ваш клиент?
0
11 / 11 / 10
Регистрация: 06.10.2012
Сообщений: 675
09.04.2014, 17:07  [ТС]
Цитата Сообщение от stima Посмотреть сообщение
Нет. У меня ворос как Вы предполагаете интеграцию в браузер, и в какой браузер Вы будете интегрировать Ваш клиент?
А как тогда сделать что-бы браузер загружал ссылки? Я уже совсем запутался...
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
09.04.2014, 17:39
Браузер это отдельное приложение, разработанное группой разработчиков, у каждого браузера (покарйней мере chrome/firefox/ie) есть свой socks клиент. И я не знаю такой возможности чтобы Вы как-то подгрузили плагином, или еще как-то, свой клиент для сущестующих браузеров.

Спросите у своего преподавателя, как он видет конечную имплементацию клиента. Возможно от вес не требуется вообще интеграция. А только смоделировать работу брауза, что делается давольно таки просто. А именно:
1. Когда Вы в браузере переходите по определенному url он шлет GET/POST запрос (обычный буффер) на указанный вами адресс.
2. В случае, если в комуникации участвует socks, то он этот запрос (буффер) передает на socks клиент.
3. Встроенный socks клиент соединяется с сервером, получает необходимую мета информацию.
4. Потом буффер, переданный браузером, шифруется если необходимо, и шифрованным отправляется по указанному BND адрессу.
5. Соответственно потом принимается ответ от socks сервера, расшифровуется и передается браузеру на исполнение.

Так вот, чтобы смоделировать запрос браузера Вам нужно предоставить интерфейс в Ващем клиенте. Припустим
C++
1
2
void MySocksClient::do_communication(const std::string& raw_pkt); //
void MySocksClient:on_communication_done(const call_back_t& browser_call_back); //где call_back_t typedef на коллбек.
соответственно, эмуляция происходит следущая
//pseudo code
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
std::string browser_request()
{
       return "GET /index.html HTTP/1.1"
                "Host: www.example.com";
};
 
void browser_call_back(const std::string& response)
{
    std::cout << response << std::endl;
   //тут вы должныполучить HTTP OK
}
 
void main()
{
      MySocksClient client;
      .....
      client.on_communication_done(&browser_call_back);
      client.do_communication(browser_request());
}
0
11 / 11 / 10
Регистрация: 06.10.2012
Сообщений: 675
10.04.2014, 23:04  [ТС]
Цитата Сообщение от stima Посмотреть сообщение
Браузер это отдельное приложение
Так я не понял самого главного как происходит генерация BND со стороны сервера что-бы потом эти данные передать клиенту
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
10.04.2014, 23:32
Вы представляете как работает обычное клиент/серверное TCP/UDP соединение? Почитайте поподробней, если кратко, то сервер в BND.ADDR и в BDN.PORT говорит клиенту, на какой адрес и на какой порт он ожидает соединение, при этом производит необходимые действия (создает сокет, биндится и ждет информации).
Вообще socks5 можно представить как 1 главное соединение (по которым Вы передаете команды CONNECT, BIND, ASSOSIATE), и N нагрузочных (по которым Вы передаете данные).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2014, 23:32
Помогаю со студенческими работами здесь

Socks 5 и https
Задавал этот вопрос на форуме C# но там видимо никто ничего не знает, одна надежда на вас Пишу курсач, socks 5. Все страницы грузит кроме...

Вопросы по спецификации SOCKS 5
SOCKS - клиент подключается к серверу, сервер получает все необходимые данные и пересылает их клиенту. Я сделал так что-бы клиент получал...

443 порт socks
Курсач реализация клиента-сервера socks5 Клиент подключается к серверу и так происходит загрузка страниц. Простые страницы всё нормально...

Socks Proxy Server
Нужно написать проксификатор(Socks 5) В интернете мало информации на эту тему, единственное что нашел в приложениях,и то даже не...

Socks 4/5 для webbrowser
Гуглил, нашел 2 способа, но оба только для http/https прокси. Можно ли как-то заставить работать webbrowser через socks 4/5?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru