Поиск бинарных данных

ID статьи: 894
Последнее обновление: 19 янв, 2024
Documentation:
Product: NGFW
Version: 7.1.0

Параметр .byte_test позволяет сравнить байт с заданным значением и применим к данным, представленным в двоичном или символьном форматах.

Общий формат записи:

.byte_test = <bytes>,<operator>,<value>,<offset>,[,<multiplier>][,<modifiers>];

Доступные параметры отображены в таблице:

Наименование

Описание

<bytes>

Количество байтов в текущей позиции с заданным смещением, считываемых из пакета. Может принимать значения 1, 2 или 4.

<size>

Длина строки; указывается для строковых данных.

*

Использование всех символов до первого нечислового символа.

<operator>

Оператор, использующийся для сравнения байта с заданным значением:

  • < — меньше;

  • > — больше;

  • = — равно;

  • != — не равно;

  • & — результат выполнения операции логического И для <bytes> и <MASK> (число, задающее интересующие биты) не равен 0;

  • ~ — результат выполнения операции логического И для <bytes> и <MASK> равен 0;

  • ^ — результат выполнения операции XOR для <bytes> и <MASK> не равен 0.

Например:

.byte_test=1,&,0x80,0;

проверяет, что старший разряд первого байта поля данных пакета установлен в 1.

<value>

Значение, с которым выполняется сравнение, или размер пакета.

Значение может быть задано с использованием префикса ; доступно использование арифметических операторов (+, -, *, /).

<offset>

Смещение в поле данных пакета:

  • relative: от последней точки совпадения.

Если параметр смещения не указан, то анализ, по умолчанию, производится с начала пакета.

<post_offset>

Число байтов, на которое необходимо сместить точку начала сканирования.

Важно! Применим для .byte_jump.

<multiplier>

Числовое значение, на которое необходимо умножить извлечённое число перед сравнением или переносом точки начала сканирования; параметр является опциональным.

<modifiers>

Модификаторы (опционально):

  • big — обработка данных со старшего разряда;

  • little — обработка данных с младшего разряда;

  • string — данные в пакете являются строковыми;

  • hex — преобразование строки данных в шестнадцатеричное число;

  • dec — преобразование строки данных в десятичное число;

  • oct — преобразование строки данных в восьмеричное число;

  • align — округление числа конвертируемых байтов до следующей 32-битной границы; используется только для .byte_jump (например, 0 ➜ 0; 1,2,3,4 ➜ 4; 5,6 ➜ 8 и т.д.).

Пример сравнения первых 4 байтов каждого из пакетов со значением 1234; данные в пакете представлены в символьном формате в десятичной системе счисления:

.byte_test=4,=,1234,0,string,dec;

Параметр .byte_jump переносит точку начала сканирования на указанное число байтов. Общий формат записи при обработке данных со старшего или младшего разряда (т.е. для модификаторов big и little):

.byte_jump = <bytes>,<offset>,<post_offset>[,<multiplier>][,<modifiers>];

Для строковых данных (модификатор string):

.byte_jump = (<size> | *),<offset>,<post_offset>[,<multiplier>][,<modifiers>];

Эта статья была:   Полезна | Не полезна
Сообщить об ошибке
ID статьи: 894
Последнее обновление: 19 янв, 2024
Ревизия: 5
Просмотры: 4667
Комментарии: 0
Теги