Что нового

Узнать, куда подключена программа. Сокет, порт, хост...

atlake

Новичок
Сообщения
40
Репутация
0
Есть одна Он-лайн (клиент) игрушка. Я выбираю сервер на каком играть. Всего их 3. На каждом сервере свой порт. После авторизации в игре, я подключаюсь к сокету (каждый раз - разный) и идет загрузка аккаунта. Данные принимаются/передаются по TCP.

Нужно определить - к какому конкретно сокету и порту я подключен в данный момент.
На счёт порта проблем не возникло. Определяю через Консоль Windows. Сокет определить мне никак не удается.

Есть прекрасный сниффер - WPE PRO.
Он отлавливает нужные мне пакеты. Складывает их в список для Отправки. Перед отправкой устанавливается сокет к которому я подключен сейчас к игре. Потом я могу выслать эти пакеты на нужный порт хост и сокет.

Вместо использования WPE PRO мне удобее будет отсылать нужные пакеты программно, через AutoIt например. На сокет который узнает моя программа на АвтоИте.

Help! :(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
что по твоему есть сокет?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
слишком расплывчато. в моем понимание, сокет - это адрес ip:blum:ort. и то и другое, как ты говоришь, ты можешь найти. мне не понятно, что за сокет остается ненайденным.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Kaster
Он видимо имеет ввиду, что ему известен указатель на сокет.


Добавлено:
Сообщение автоматически объединено:

Код:
Func _SocketToIP($SHOCKET)
   Local $sockaddr, $aRet

   $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

   $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET,"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
   If Not @error And $aRet[0] = 0 Then
	  $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
	  If Not @error Then $aRet = $aRet[0]
   Else
	  $aRet = 0
   EndIf

   $sockaddr = 0
   Return $aRet
EndFunc
 

sims

Осваивающий
Сообщения
184
Репутация
24
firex [?]
Он видимо имеет ввиду, что ему известен указатель на сокет.
А толку от него?
Дескриптор сокета валиден только для процесса, в котором его получили. Поэтому придется инжектить код в целевой процесс игры чтобы работать в контексте ее процесса.

Вообще, зачем такие сложности?
Если известен адрес сервера и порт, то открывайте новое соединение и производите обмен данными.
 
Верх