Обещал как то написать как расклеивать склеенные пакеты, ну вот читайте.
Как я вижу большинство из тех кто работает с пакетами, даже не понимают что они делают. Они так сказать тычут пальцем в небо, и потом смотрят что же произойдет. Это похоже на то как трех летний ребенок отрывает у мухи крылышки и смотрит что же она будет делать. Ладно что то я ухожу от темы.
Пакеты от сервера приходят склеенными, связано это с реализацией протокола TCP, в подробности вдоваться не буду, так как вы всеравно нубы и ничего не поймете, изложу лишь суть которую необходимо знать вам.
Многие кто выкладывал какие то входящие от сервера пакеты, вместе с разбираемым пакетом выкладывали еще кучу приклеенных к нему пакетов, в которых бывало даже проскакивали идешники их персов и по которым можно было вычислить их акк и забанить. Так вот что бы вы наконец поняли как формируется пакет, разжую вам это и положу в рот, останется только проглотить.
На данном этапе пакет можно условно разделить на две части, это размер пакета и тело пакета.
Для примера возьмем пакет PONG:
|
Цитата: |
|
|
|
|
|
|
|
|
2C 00 DD 02 13 00 CF EE 3E 02 00 00 00 00 CD E0 44 52 04 02 00 00 00 00 00 00 00 00 00 00 40 D7 44 52 00 00 00 00 A5 A6 00 00 08 A3 2D 84 |
|
|
|
|
|
Красным цветом выделен размер тала пакета, зеленым само тело пакета.
Размер - это число тех байт которые выделенны зеленым. Если перевести 2C в десятичную систему счисления то получим 44. А теперь посчитайте байты выделенные зеленым их будет ровно 44.
Теперь возьмем какой нить условный пакет, в котором будет склеено сразу несколько, так как реальный пример мне приводить влом.
|
Цитата: |
|
|
|
|
|
|
|
|
06 00 01 02 03 04 05 06 07 00 09 0A 0B 0C 0D 0E 0F |
|
|
|
|
|
И так мы взяли пакет приведенный выше и теперь попытаемся понять это один цельный пакет или несколько склеенных.
Мы видим что размер тела пакета равен шести. Выделяем размер красным.
|
Цитата: |
|
|
|
|
|
|
|
|
06 00 01 02 03 04 05 06 07 00 09 0A 0B 0C 0D 0E 0F |
|
|
|
|
|
Раз размер тела равен шести, то отсчитываем 6 байт после размера и красим зеленым их.
|
Цитата: |
|
|
|
|
|
|
|
|
06 00 01 02 03 04 05 06 07 00 09 0A 0B 0C 0D 0E 0F |
|
|
|
|
|
Мы выделили первый пакет, и у нас еще остался хвост, значит тут несколько склеенных пакетов. Далее повторяем наши действия. Следующие два байта это размер тела второго пакета, красим их красным жирным.
|
Цитата: |
|
|
|
|
|
|
|
|
06 00 01 02 03 04 05 06 07 00 09 0A 0B 0C 0D 0E 0F |
|
|
|
|
|
Размер тела равен семи, значит отсчитываем семь байт после размера и красим их жирным зеленым.
|
Цитата: |
|
|
|
|
|
|
|
|
06 00 01 02 03 04 05 06 07 00 09 0A 0B 0C 0D 0E 0F |
|
|
|
|
|
Все, никаких хвостов у нас больше не осталось, таким образом, мы видим что в одном пакете нам пришло два склеенных, которые мы успешно разделили.
|
Цитата: |
|
|
|
|
|
|
|
|
06 00 01 02 03 04 05 06
07 00 09 0A 0B 0C 0D 0E 0F |
|
|
|
|
|
Видите как все просто, не будьте нубами не выкладываете склеенные пакеты.