PKT 3.1
Материал из YTDB DataBase
PKT 3.1 — формат файлов дампов сетевых пакетов PKT, преемник формата PKT 3.0.
Основной причиной создания PKT 3.1 стала невозможность PKT 3.0 хранить данные с нескольких соединение клиента World of Warcraft в RAW формате.[1][2]
Спецификация состоит из описаний двух форматов для хранения расшифрованных и зашифрованных пакетов World of Warcraft, файлов с расширениями .pkt и .raw соответственно.
Содержание |
Спецификация PKT
Вначале файла находится основной заголовок. В основном заголовке находятся общие данные о дампе. После основного заголовка один за другим находятся фрагменты сетевого потока с заголовками.
Для полей длиннее 1 байта по-умолчанию используется порядок байт «от младшего к старшему» (little-endian).
Именование файла
Поле | Значение |
Имя файла | Любое |
Расширение файла | Обязательно .pkt |
Основной заголовок
Поле | Длина | Содержание |
Подпись файла | 3 байта | Последовательно символы 'PKT' в кодировке ASCII |
Версия формата | 2 байта | Последовательно байты младшей версии, старшей версии. Для PKT 3.1 обязательно 0x01, 0x03 |
Идентификатор сниффера | 1 байт | См. Идентификатор сниффера в PKT |
Номер билда клиента | 4 байта | |
Язык клиента | 4 байта | Последовательно байты кода языка клиента в кодировке ASCII, например 'enGB' |
Ключ сессии | 40 байтов | Необязательно. Может быть заполнено нулями. |
Время начала записи дампа[3] | 4 байта | Количество прошедших секунд с эпохи Unix (UTC) |
Ticks начала записи дампа[3] | 4 байта | Количество прошедших миллисекунд с момента запуска операционной системы |
Длина опциональных данных | 4 байта | |
Опциональные данные | Длина этого поля указана в предыдущем поле. |
Фрагмент сетевого потока
Поле | Длина | Содержание |
Направление движения пакета | 4 байта | Последовательно символы 'SMSG' или 'CMSG' для пакетов от сервера к клиенту и от клиента к серверу соответственно в кодировке ASCII |
Идентификатор соединения[3][4] | 4 байта | Уникальный идентификатор TCP/IP соединения, которому принадлежит пакет |
Ticks получения пакета | 4 байта | Количество прошедших миллисекунд с момента запуска операционной системы |
Длина опциональных данных | 4 байта | |
Длина данных пакета | 4 байта | Не менее 4 байт |
Опциональные данные | Содержание этого поля контролируется разработчиком программы-сниффера. Длина указана в поле «длина опциональных данных». | |
Данные пакета | Содержит данные одного пакета World of Warcraft. Длина указана в поле «длина данных пакета». Первые 4 байта этого поля — опкод пакета. |
Спецификация RAW
Вначале файла находится основной заголовок. В основном заголовке находятся общие данные о дампе. После основного заголовка один за другим находятся фрагменты сетевого потока с заголовками.
Для полей длиннее 1 байта по-умолчанию используется порядок байт «от младшего к старшему» (little-endian).
Именование файла
Поле | Значение |
Имя файла | Любое |
Расширение файла | Обязательно .raw |
Основной заголовок
Поле | Длина | Содержание |
Подпись файла | 3 байта | Последовательно символы 'RAW' в кодировке ASCII |
Версия формата | 2 байта | Последовательно байты младшей версии, старшей версии. Для PKT 3.1 обязательно 0x01, 0x03 |
Идентификатор сниффера | 1 байт | См. Идентификатор сниффера в PKT |
Номер билда клиента | 4 байта | |
Язык клиента | 4 байта | Последовательно байты кода языка клиента в кодировке ASCII, например 'enGB' |
Ключ сессии | 40 байт | |
Время начала записи дампа[3] | 4 байта | Количество прошедших секунд с эпохи Unix (UTC) |
Ticks начала записи дампа[3] | 4 байта | Количество прошедших миллисекунд с момента запуска операционной системы |
Длина опциональных данных | 4 байта | |
Опциональные данные | Содержание этого поля контролируется разработчиком программы-сниффера. Длина этого поля указана в предыдущем поле. |
Фрагмент сетевого потока
Поле | Длина | Содержание |
Направление движения пакета | 4 байта | Последовательно символы 'SMSG' или 'CMSG' для пакетов от сервера к клиенту и от клиента к серверу соответственно в кодировке ASCII |
Идентификатор соединения[3][4] | 4 байта | Уникальный идентификатор TCP/IP соединения, которому принадлежит пакет |
Ticks получения пакета | 4 байта | Количество прошедших миллисекунд с момента запуска операционной системы |
Длина опциональных данных | 4 байта | |
Длина данных пакета | 4 байта | Не менее 4 байт |
Опциональные данные | Содержание этого поля контролируется разработчиком программы-сниффера. Длина указана в поле «длина опциональных данных». | |
Данные пакета | Содержит данные одного пакета TCP протокола. Длина указана в поле «длина данных пакета». |