USB-Guard
Файл signature_engine.c

Реализация потокового сканера сигнатур (см. signature_engine.h). Подробнее...

#include "signature_engine.h"

Функции

int scan_init (ScanState *state)
 Инициализирует состояние сканера (сбрасывает хвост).
int scan_feed (ScanState *state, const unsigned char *block, unsigned int block_len, const VirusSignature *sigs, unsigned int sig_count, int *virus_flag, const char **match_name)
 Скармливает сканеру один блок данных и ищет в нём сигнатуры.

Подробное описание

Реализация потокового сканера сигнатур (см. signature_engine.h).

Функции

◆ scan_feed()

int scan_feed ( ScanState * state,
const unsigned char * block,
unsigned int block_len,
const VirusSignature * sigs,
unsigned int sig_count,
int * virus_flag,
const char ** match_name )

Скармливает сканеру один блок данных и ищет в нём сигнатуры.

Аргументы
stateСостояние сканера. Не должен быть NULL.
blockБлок данных (например, сектор 512 байт). Не должен быть NULL.
block_lenДлина блока в байтах.
sigsТаблица сигнатур. Не должна быть NULL.
sig_countКоличество сигнатур в таблице.
virus_flagВыход: 1 если найдена сигнатура, иначе 0. Не должен быть NULL.
match_nameВыход: имя найденной угрозы (или не трогается, если чисто). Не NULL.
Возвращает
SF_SUCCESS при успехе, иначе значение Error_Codes_SF.
Заметки
Сигнатуры на стыке блоков ловятся через carry предыдущего вызова.
Предупреждения
Длина каждой сигнатуры должна быть в диапазоне 1..SIG_MAX_LEN.

◆ scan_init()

int scan_init ( ScanState * state)

Инициализирует состояние сканера (сбрасывает хвост).

Аргументы
stateУказатель на состояние. Не должен быть NULL.
Возвращает
SI_SUCCESS при успехе, иначе значение Error_Codes_SI.