Latest posts on мониторинг игрового сервера topichttps://python.su/forum/topic/3615/2009-01-22T08:31:36+02:00Общий :: Network :: мониторинг игрового сервера
2009-01-22T08:31:36+02:00Ryuga23589<blockquote><em>Dimka665</em><br/>может быть ты найдешь там внизу ссылку на питоновский модуль)))</blockquote>нашел))
Общий :: Network :: мониторинг игрового сервера
2009-01-21T13:23:27+02:00Dimka66523553<blockquote><em>Ryuga</em><br/>О! то что надо)) нашел вики по valve серверам) терь все шикарно получается)</blockquote>может быть ты найдешь там внизу ссылку на питоновский модуль)))
Общий :: Network :: мониторинг игрового сервера
2009-01-20T17:28:20+02:00Ryuga23520<blockquote><em>igor.kaist</em><br/>Тебе нужно знать, какую именно структуру данных данных возвращает сервер. Нужно искать доки по серверу. Где будет сказано типа этого: “первый байт это А, следующие 2 байта это В, затем 8 байт это С”. И следуя этому и используя модуль struct, ты получаешь необходимые тебе данные.</blockquote>О! то что надо)) нашел вики по valve серверам) терь все шикарно получается)
Общий :: Network :: мониторинг игрового сервера
2009-01-20T09:02:02+02:00igor.kaist23496Тебе нужно знать, какую именно структуру данных данных возвращает сервер. Нужно искать доки по серверу. Где будет сказано типа этого: “первый байт это А, следующие 2 байта это В, затем 8 байт это С”. И следуя этому и используя модуль struct, ты получаешь необходимые тебе данные.
Общий :: Network :: мониторинг игрового сервера
2009-01-19T21:36:40+02:00Ryuga23480гуглю))<br/>только вот никак не могу найти какой-нить реальный пример( чтобы разбиралось на примере взаимодействия клиент-сервера, или разборки пакета
Общий :: Network :: мониторинг игрового сервера
2009-01-19T21:09:04+02:00igor.kaist23479Хм.. Вот тут то и нужно знать формат сообщений, которые шлет сервер. В каком порядке и какие байты (последовательность байт) идут. Тут либо гуглить, либо методом научного тыка
Общий :: Network :: мониторинг игрового сервера
2009-01-19T20:38:09+02:00Ryuga23477<blockquote><em>Dimka665</em><br/>import struct</blockquote>не вкупаю как его юзать о_0<br/>я так понимаю, допустим я получил от сервера hex пакет, чтобы его привести к нормальному виду надо:<br/><div class="code"><pre>import struct<br/>packet=struct.unpack('format', packet)</pre></div>а где взять формат? я нарыл таблицу типа <br/>символ | тип языка С | тип объякта в Питон |<br/>—————————————————-|<br/>c | char | символ длиной 1<br/>и пр<br/>но абсолютно не непонимаю как это мне поможет)
Общий :: Network :: мониторинг игрового сервера
2009-01-19T14:53:17+02:00Dimka66523463import struct
Общий :: Network :: мониторинг игрового сервера
2009-01-19T14:35:56+02:00Ryuga23462эксперементальным путем выяснил, что сервер и клиент обмениваются пакетами по какой-то не ясной системе) в итоге я настроил подсчет игроков для сервере 27028, но это не работает для сервера 27029)<br/>да и с обработкой хекс пакетов не очень вышло) никто не подскажет какой-нить модуль для работы с ним?
Общий :: Network :: мониторинг игрового сервера
2009-01-19T12:55:15+02:00Ryuga23455вопщем, покапался в пакетах которые отсылает игра. В итоге взял их, и начал пересылать своим скриптом)) Все получилось)<br/>Теперь надо как-то написать парсер для обработки полученной инфы, но это дело техники)
Общий :: Network :: мониторинг игрового сервера
2009-01-19T11:36:23+02:00Ryuga23450<blockquote><em>player</em><br/>Кажись не слушает сервер на энтом порту<br/>Запусти снифер и посмотри что и куда отсылается. По идее должен быть запрос TCP SYN (запрос на установления связи) и в ответ на него TCP RST (разрыв связи со стороны сервера)</blockquote>ничего подобного не обнаружил, однако выяснил:<br/>игра конектится через UDP, а питон у меня через TCP<br/>в итоге сделал вот так:<br/><div class="code"><pre>import socket<br/>host='217.117.187.72'<br/>Q='' #что то надо послать<br/>port=27028<br/>s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</pre></div>Насколько я понял, теперь надо на место Q вставить заголовок запроса. У меня они есть в хекс виде со снифера, как бы правильно их вставить?<br/>Вот что наслушал снифер, когда я запрашивал состояние сервера из игры.<br/><div class="code"><pre>(UDP)192.168.0.1:1473->217.117.187.72:27028 ,34 Bytes<br/>(UDP)217.117.187.72:27028->192.168.0.1:1473 ,48 Bytes<br/>(UDP)192.168.0.1:1473->217.117.187.72:27028 ,53 Bytes<br/>(UDP)217.117.187.72:27028->192.168.0.1:1473 ,159 Bytes<br/>(UDP)192.168.0.1:1473->217.117.187.72:27028 ,34 Bytes<br/>(UDP)217.117.187.72:27028->192.168.0.1:1473 ,37 Bytes<br/>(UDP)192.168.0.1:1473->217.117.187.72:27028 ,37 Bytes<br/>(UDP)217.117.187.72:27028->192.168.0.1:1473 ,34 Bytes</pre></div>Также есть сами пакеты,вида:<br/><div class="code"><pre>(UDP)217.117.187.72:27028->192.168.0.1:1473 ,34 Bytes<br/><br/>45 00 00 22 16 5B 00 00 7B 11 D4 08 D9 75 BB 48 ; E.."[..{....u.H<br/>C0 A8 00 01 69 94 05 C1 00 0E F7 14 FF FF FF FF ; ....i..........</pre></div>и даже пакет с ответом есть):<br/><div class="code"><pre>(UDP)217.117.187.72:27028->192.168.0.1:1473 ,159 Bytes<br/><br/>45 00 00 9F 15 18 00 00 7B 11 D4 CE D9 75 BB 48 ; E.....{....u.H<br/>C0 A8 00 01 69 94 05 C1 00 8B BC F1 FF FF FF FF ; ....i...........<br/>49 25 4B 72 61 73 47 61 6D 65 73 20 4C 65 66 74 ; I%KrasGames Left<br/>34 44 65 61 64 20 56 65 72 73 75 73 23 32 00 6C ; 4Dead Versus#2.l<br/>34 64 5F 76 73 5F 73 6D 61 6C 6C 74 6F 77 6E 30 ; 4d_vs_smalltown0<br/>35 5F 68 6F 75 73 65 62 6F 61 74 00 6C 65 66 74 ; 5_houseboat.left<br/>34 64 65 61 64 00 4C 34 44 20 2D 20 56 65 72 73 ; 4dead.L4D - Vers<br/>75 73 20 2D 20 4E 6F 72 6D 61 6C 00 F4 01 00 08 ; us - Normal.....<br/>00 64 77 00 00 31 2E 30 2E 30 2E 35 00 A0 94 69 ; .dw..1.0.0.5...i</pre></div>
Общий :: Network :: мониторинг игрового сервера
2009-01-19T11:10:50+02:00player23448<div class="code"><pre>Traceback (most recent call last):<br/> File "<pyshell#4>", line 1, in <module><br/> s.connect((host, port))<br/> File "<string>", line 1, in connect<br/>error: [Errno 10061] Подключение не установлено,</pre></div>Кажись не слушает сервер на энтом порту<br/><br/>Запусти снифер и посмотри что и куда отсылается. По идее должен быть запрос TCP SYN (запрос на установления связи) и в ответ на него TCP RST (разрыв связи со стороны сервера)
Общий :: Network :: мониторинг игрового сервера
2009-01-19T11:08:16+02:00Ryuga23447<blockquote><em>igor.kaist</em><br/>Да все вроде правильно. Что не работает то? Ты волен и ip указывать smile</blockquote>пишет банальное:<br/><div class="code"><pre>Traceback (most recent call last):<br/> File "<pyshell#4>", line 1, in <module><br/> s.connect((host, port))<br/> File "<string>", line 1, in connect<br/>error: [Errno 10061] Подключение не установлено,</pre></div>а вот почему не установлено хз. на виндовой машине когда пробую - фаервол сразу говорит,что скрипт коннектится, все ок. а потом вот такая ошибка вылазит.<br/><strong>2cybergrind</strong><br/>эм,ушел гуглить про бродкаст)
Общий :: Network :: мониторинг игрового сервера
2009-01-19T11:07:49+02:00player23446<blockquote><em>cybergrind</em><br/>+ иногда можно узнать послав запрос бродкастом (типа как игра и ищет другие игры по сети), т.е. в этом случае необязательно подключаться к серверу.<br/>в общем надо запустить сниффер и посмотреть что шлется, куда и как.</blockquote>Как по мне план действий надо менять на следующий:<br/>1. Погуглить игру и как к ней конектиться и как забирать инфу<br/>2. Посмотреть снифером <br/> а. Запустили снифер<br/> б. Запустили игру и посмотрели количество игроков<br/> в. Посмотрели в снифер что он там наловил (но я боюсь что там всё будем не понятно)<br/>3. Начинаем писать что-то своё
Общий :: Network :: мониторинг игрового сервера
2009-01-19T10:13:45+02:00cybergrind23443+ иногда можно узнать послав запрос бродкастом (типа как игра и ищет другие игры по сети), т.е. в этом случае необязательно подключаться к серверу.<br/>в общем надо запустить сниффер и посмотреть что шлется, куда и как.