myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему

> Анализ ответа от PtokaX, Вопрос по сокетам

Теги
Нет тегов для показа
Sergey2009
сообщение 23.2.2010, 0:45
Сообщение #1


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




Здравствуйте, пишу программу под C#, цель - это получить данные от хаба (в частности количество юзеров, размер шары). Для этого поставил PtokaX - чисто для анализа команд посылаемых моей программой. В программе создаю объект сокета и подсоединяюсь по протоколу (TCP/UDP) к указаному мною IP и порту, после посылки любой команды в окне администратора PtokaX выплывает такое: [00:02] x User removed: <unknown> (Socket 536). Я подозреваю, что необходимо предварительно "представиться" cерверу, но все попытки не успешны. Подскажите, чем подобные ответы сервера могут быть вызваны?

Точнее даже при обычном коннекте в админке PtockaX выдает [00:41] x User removed: <unknown> (Socket 524)
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 1:02
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Изучай протокол: http://mydc.ru/topic915.html
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 1:05
Сообщение #3


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




У меня есть этот топик, запросы подобно этому: $Lock EXTENDEDPROTOCOL[некий_ключ_хаба] Pk=PtokaX не воспринимаются
Go to the top of the page
+Quote Post
mariner
сообщение 23.2.2010, 11:24
Сообщение #4


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




http://mydc.ru/index.html?showtopic=1459&a...ost&p=11029

Думаю вам сюда
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 12:13
Сообщение #5


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




Cпасибо, я связался с человеком, может подскажет...
Go to the top of the page
+Quote Post
dmvn
сообщение 23.2.2010, 12:35
Сообщение #6


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Цитата(Sergey2009 @ 23.2.2010, 12:13) *
Cпасибо, я связался с человеком, может подскажет...

Помнится, я тоже сталкивался с этим. Как отлаживал - уже точно не помню, единственное что помню - так это то, что вставлял отладочную печать в код самого PtokaX (в nix-версию).
где-то тут на форуме были исходники маленькой проги HubLink для линковки хабов, которую я когда-то делал. Сравните вашу процедуру соединения и то что написано там.
Может быть мне удастся вспомнить, где там были грабли...

Но вообще когда он пишет User removed - это значит что он не получил нужного ответа (AFAIK). А вот что конкретно ему не понравилось - без отладки мне тогда понять не удалось. А дырявая башка уже всё забыла big_smile.gif Если у меня сохранился отладочный код - выложу...

Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 12:45
Сообщение #7


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




2 dmvn

Здравствуйте, ХабЛин программку глянул (она правда на С++), в моем конкретном случае, я создаю объект СОКЕТ. И конечную точку (Ip:Port). Протокол для соединения либо TCP, либо UDP...дак вот, к моему локальному хабу коннектится, но через некоторое время (команды я никакие не отсылаю), в птоке пишет [12:40] x User removed: <unknown> (Socket 536), а в Админке: Accepted Connectio - прибавляется 1, ну т.е. Соединение идет, а через некоторое время выкидывает меня (Сlosed Connection - прибавляется 1). Я подозреваю, что нужно в этот момент получить/отправить данные (т.е. в момент данного промежутка соединения)

В том-то и вопрос, как реагирует ПТОха на мою попытку? Если при соединеии он запрашивает данные Мол Кто я такой? Или же ему само соединение (в частности используемый протокол (TCP/UDP)) не нравится
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 12:56
Сообщение #8


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




В протоколе же чётко описаны все шаги входа на хаб. Нужно только внимательно прочитать.

  1. Мы соединяемся с хабом (не отсылаем при соединении ничего, а ждём ответа от хаба).
  2. Хаб принимает наше соединение и отсылает нам команду $Lock.
  3. Мы должны отослать в ответ команду $Key и команду $ValidateNick.
  4. Хаб отправит нам команды $HubName и $Hello
  5. Мы должны отправить команды $Version, $GetNickList и $MyINFO
  6. Хаб отправит нам список пользователей.
  7. Всё, мы вошли на хаб.


Кроме всего прочего, для того чтобы находится на хабе нам нужно время от времени отсылать на хаб команду пинга (пустую команду - команду, состоящую только из одного разделителя протокола | ).
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 13:03
Сообщение #9


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




Цитата(Setuper @ 23.2.2010, 14:56) *
В протоколе же чётко описаны все шаги входа на хаб. Нужно только внимательно прочитать.

  1. Мы соединяемся с хабом (не отсылаем при соединении ничего, а ждём ответа от хаба).
  2. Хаб принимает наше соединение и отсылает нам команду $Lock.
  3. Мы должны отослать в ответ команду $Key и команду $ValidateNick.
  4. Хаб отправит нам команды $HubName и $Hello
  5. Мы должны отправить команды $Version, $GetNickList и $MyINFO
  6. Хаб отправит нам список пользователей.
  7. Всё, мы вошли на хаб.


Кроме всего прочего, для того чтобы находится на хабе нам нужно время от времени отсылать на хаб команду пинга (пустую команду - команду, состоящую только из одного разделителя протокола | ).



1. Мы соединяемся с хабом (не отсылаем при соединении ничего, а ждём ответа от хаба).

Ну как бы соединение не получается, закрывает он мою попытку. Попытка рубится не сразу, а через некоторое время...и как я вижу по потоку, он (Хаб) ничего мне не отсылает. Может есть программы, что-то типа снифера, чтобы глянуть пакеты идущие от хаба мне?
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 13:15
Сообщение #10


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ну раз не получается соединиться, то смотри причину в ошибке сокета.
Я так понимаю используется winsock? Соединение нужно устанавливать исключительно по протоколу TCP, никаких UDP!

Цитата
и как я вижу по потоку, он (Хаб) ничего мне не отсылает.

по какому ещё потоку? Лови то что тебе прислал хаб функцией recv.
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 13:29
Сообщение #11


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




Объект (С#):
Socket Sock = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
Тут впринципе все понятно, endpoint - cоздает конечную точку вида Ip:Protocol

Похоже подцепил ответ от хаба:

"$Lock EXTENDEDPROTOCOLe=nHlsuM`EX[SVsG2tbw1TXlcxAwin Pk=PtokaX|"
Это и есть ключ, теперь его нужно обратно отослать :-)...так

Цитата(Sergey2009 @ 23.2.2010, 15:28) *
Объект (С#):
Socket Sock = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
Тут впринципе все понятно, endpoint - cоздает конечную точку вида Ip:Protocol

Похоже подцепил ответ от хаба:

"$Lock EXTENDEDPROTOCOLe=nHlsuM`EX[SVsG2tbw1TXlcxAwin Pk=PtokaX|"
Это и есть ключ, теперь его нужно обратно отослать :-)...так


Класс сокет, он создает свой поток
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 13:32
Сообщение #12


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ну вот. Хаб тебе отсылал, а ты просто видимо не ловил то, что он тебе отсылал.
Хаб отсылает тебе $Lock и ждёт от тебя $Key, а ты молчишь, поэтому хаб закрывает с тобой соединение через некоторое время ожидания.
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 13:40
Сообщение #13


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




Видите в чем дело, я ловил конструкцией :

byte[] remdata = { };
Sock.Receive(remdata);

Сокет - это Объект класса...и поидее он должен был подцепить данные от хаба. Хотя не ловил. Оказывается, необходимо действовать по такому:
http://krez0n.org.ua/archives/41

Кстати ответ от хаба идет в кодировки ASCII, хотя в документации к протоколу ADC написано : The protocol requires that all text must be sent as UTF-8 encoded Unicode, normalized in form C.


Я немного не понимаю, как свзяан TCP и ADC ?
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 13:49
Сообщение #14


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




А при чём тут вообще ADC?
Хаб PtokaX работает на NMDC протоколе. Это разные протоколы.
А TCP - это сетевой протокол, который нужен для передачи данных по сети. А уже эти данные содержат в себе NMDC протокол.

Вообще, как так можно что-то писать, не разобравшись даже для чего нужен TCP протокол?))))


Спасибо сказали:
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 15:14
Сообщение #15


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




>>PtokaX работает на NMDC.

Ок, понял :-)
Cпасибо за помощь, вы сюда загляните еще попозже:-)

Ловлю $Lock:

$Lock EXTENDEDPROTOCOL\\3xL@dKO:xJ3Aepet=d\\PG905pGwin Pk=PtokaX|

Т.е. ключ как я понимаю будет такой:

$Key \\3xL@dKO:xJ3Aepet=d\\PG905pGwin|

Соединение:

[15:18] <unknown> (ip) > $Key ?raUyUbfx3dl@ye0YSvAGtK]ncDwin|
[15:18] x User removed: <unknown> (Socket 444)


Однако, если посмотреть "обычное" рукопожатие внешнего клиента и хаба, то ключ (он конечно же другой) выглядит так:

$Key tСА° A С±±АА0rCЃ'Ђ·бv–ЕГуSв0BCҐ·/%DCN096%/’‘сW·бp|

Кодировка как я понимаю не ASCII и что за последовательность tСА° - ? она постоянно присутсвует в ключе других юзеров
Go to the top of the page
+Quote Post
Nickolya
сообщение 23.2.2010, 15:35
Сообщение #16


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 775 раз




Скорее всего такая последовательность есть всегда ввиду того что строка Lock содержит в себе всегда в начале EXTENDEDPROTOCOL
Алгоритм создания ключа можешь найти в описании протокола на этом форуме. Еще я знаю что хабы порой не проверяют ответ клиента, но это лишь слухи big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 15:43
Сообщение #17


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ключ нужно рассчитывать по параметру команды $Lock, а не тупо отправлять параметр команды $Lock!
Алгоритм расчёта ключа опять же смотри в протоколе: http://mydc.ru/ipb.html?act=findpost&pid=19477

Кроме этого, вместе с ключом нужно сразу же отослать и команду $ValidateNick.
Код
$Key[рассчитанный_по_параметру_команды_lock_ключ]|$ValidateNick nick|
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 15:48
Сообщение #18


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




Спасибо, но мне нужно всего лишь кодировку в которой необходимо пересылать этот ключ обратно ПтоКе. Ведь принятая команда $Lock - уже содержит зашифрованную последовательность (tСА° < ключ> бp|). Я это к тому, что в моем ответе ПтоКе содержится на конце win|, и ключ отсылается в кодировке ACSII, а внешние клиенты шлют ключ как-то иначе
Go to the top of the page
+Quote Post
Setuper
сообщение 23.2.2010, 15:52
Сообщение #19


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Команда $Lock не содержит ключа.
Она содержит лишь код, по которому нужно по известному алгоритму определить ключ.

Код
$Lock [код]|
$Key lock2key([код])|


где lock2key - это функция (алгоритм), которая преобразует код команды lock в ключ
Go to the top of the page
+Quote Post
Sergey2009
сообщение 23.2.2010, 16:08
Сообщение #20


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 23.2.2010
Пользователь №: 6 163
Спасибо сказали: 0 раз




А сам алгоритм lock2key есть, а то я давно С++ не пользовал.
Go to the top of the page
+Quote Post

3 страниц V   1 2 3 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Перехват выполнения бана(ов) PtokaX
Возможно ли?
0 MIKHAIL 346 1.8.2022, 10:31 Посл. сообщение: MIKHAIL
No new Topic has attachmentsУстановка хаба PtokaX 0.5.2.2 на роутер под прошивкой LEDE 2017
DC++ сервер в роутере
15 мамин_парень 14 820 29.1.2021, 8:02 Посл. сообщение: мамин_парень
No new ВАЖНО: Topic has attachmentsPtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
112 alex82 94 492 13.9.2019, 17:57 Посл. сообщение: CyberGhost404
No new Topic has attachmentsPtokaX 0.5.2.1 Mod
Модификация PtokaX от alex82
17 alex82 18 913 22.8.2019, 12:27 Посл. сообщение: SergSat
No New Posts Ptokax 0.5.0.2
Crash-14.11.2014-01.11.48.log
8 Drakula 11 404 6.6.2019, 15:09 Посл. сообщение: avalon
No New Posts Topic has attachmentsПрошивка LEDE 17.01.4 для 740n v4,v5 c PtokaX 0.5.0.1
Готовая прошивка с поддержкой сервера DC++, все влезло в 4мб ))
1 мамин_парень 5 158 10.3.2018, 15:29 Посл. сообщение: мамин_парень
No New Posts Ptokax, opendchub (DC++) - Сборка пакета для OpenWRT, LEDE 2017
Пакеты хабов для прошивки роутера
0 мамин_парень 4 603 29.8.2017, 7:00 Посл. сообщение: мамин_парень
No new Topic has attachmentsАнтиреклама для PtokaX
API1, API2 | Скрипт антирекламы для чата и лички
39 Damaks 51 067 9.8.2017, 14:26 Посл. сообщение: Ksan
No new ВАЖНО: Topic has attachmentsPtokaX
Описание. Публикация новых версий
94 Svyat 173 364 11.4.2017, 23:08 Посл. сообщение: Alexey
No new Topic has attachmentsPtokaX в OpenWrt (Linux)
Ребята как собрать под эту систему?
21 мамин_парень 25 785 10.4.2017, 15:19 Посл. сообщение: мамин_парень
No New Posts Автозапуск PtokaX на Rassberry Pi?
Не могу запустить
13 Sezam 12 988 7.11.2016, 9:14 Посл. сообщение: Saymon21
No New Posts Доска обьявлений для Ptokax 0.5.0.x
3 NightmareUA 7 179 11.8.2016, 16:22 Посл. сообщение: Ksan
No New Posts FreeBSD 11.0 & PtokaX
Проблема подключения в клиенте PtokaX по имени
5 nsd7 7 468 22.4.2016, 3:47 Посл. сообщение: Saymon21
No New Posts От: PtokaX 0.5.2.1 Mod
От темы с ID: 5784
0 Alexey 3 759 21.4.2016, 18:16 Посл. сообщение: Alexey
No New Posts Перенос базы пользователей с RusHub на PtokaX
3 Angel_D 7 457 5.12.2015, 2:11 Посл. сообщение: Saymon21

 



RSS Сейчас: 28.1.2023, 1:06