Решил вот показать миру как будет выглядеть просмотр и разбор пакетов в новом пакетхаке, пока что работает мало чего но уже можно думаю составить представление что получается, а главное можно и нужно прокоментировать что лучше изменить/удалить/добавить.
Итак что же имеется на данный момент:
* только вкладка Просмотр, на первой есть только не связанные с кодом элементы управления, так что туда даже не суйтесь...
* на этой вкладке в верхней панеле работает только кнопка загрузки лога пакетов и меню выбора скрипта разбора пакета
* пока нет расцветки пакетов и не работает фильтр
Вобщем работает собсно только загрузка лога от предыдущих версий пакетхака, отображение списка пакетов и разбор выбранного пакета.
Ключевая особенность нового разборщика это разбор скриптом, тоесть на смену packets.ini пришли скрипты, за щёт этого немного подрос размер файла, но зато сильно возросли возможности разбора.
Скрипт разбора пишется на Паскале с помощью следующих функций:
delphi Код:
// задаёт имя пакета
procedure SetName(const text: string);
// возвращает и выводит в поле разбора число типа Byte
function b(const name: string): Byte;
// возвращает и выводит в поле разбора число типа Cardinal
function d(const name: string): Cardinal;
// возвращает и выводит в поле разбора число типа Integer
function i(const name: string): Integer;
// возвращает и выводит в поле разбора число типа Word
function h(const name: string): Word;
// возвращает и выводит в поле разбора число типа Double
function f(const name: string): Double;
// возвращает и выводит в поле разбора число типа Int64
function i64(const name: string): Int64;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Byte
function bh(const name: string): Byte;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Cardinal
function dh(const name: string): Cardinal;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Integer
function ih(const name: string): Integer;
// возвращает и выводит в поле разбора в шестнадцатиричном виде число типа Word
function hh(const name: string): Word;
// возвращает и выводит в поле разбора Hex строку массива байт
function ba(const name: string; const size: Integer): string;
// возвращает и выводит в поле разбора число типа Cardinal
// и добавляет соответствующую результату строку из файла filename
function df(const name, filename: string): Cardinal;
// возвращает и выводит в поле разбора Unicode строку
function s(const name: string): string;
// пропускает заданное число байт в пакете
function z(const size: Integer): Integer;
Вобщем в приложении скрин и собсно сама программа, можете осмотреть и начинать заполнять скрипты разбора
Кстати одно замечание, для формирования списка пакетов каждый пакет прогоняется через скрипт без вывода в поле разбора, за счёт этого список имён формируется не мгновенно, у меня лог весом в мегабайт разбирается гдето за 3 секунды.
История преверсий:
0.3:
+ раскраска пакетов с возможностью менять цвета
+ при перемещении курсора в поле разбора выделяется кусок пакета соответствующий этой строке
0.2:
! ещё увеличена скорость формирования списка пакетов
+ работают фильтры, правда они пока не сохраняются
0.1:
+ кнопочка перезагрузки скрипта парсинга
+ увеличена скорость формирования списка пакетов
+ добавлено завершение разбора пакета при достижении его конца
! увеличил поле Description с 15 до 20 символов