16.16.5. function  QuarantineFileF

function  QuarantineFileF(ASearchPath:string;AMaskList:string;
                         ARecurse : boolean;
                         AMsg : string;
                         ASizeMin, ASizeMax : integer;
                         ADateMin : string = ''; ADateMax : string = '';
                         ACopyRigth : string = '';
                         AMD5 : string = ''):integer
 
 
Поиск файлов по заданному набору условий и копирование найденных файлов в карантин.
Является аналогов функции QuarantineFile для случая, когда неизвестно точное имя файла, но есть некоторые данные о нем (например, известен размер файла, его дата создания/модификации, копирайты или MD5).
Если любой из найденных файлов уже есть в карантине, или он опознан по базе безопасных, то копирование в карантин блокируется.
На работу функции влияют маски фильтрации, задаваемые при помощи AddQuarantineFilter
 
Параметры
 
ASearchPath - путь к каталогу, в котором осуществляется поиск. В пути допустимы макросы. Параметр обязателен
 
AMaskList - одна или несколько масок имени файла. В случае указания нескольких масок они разделяются запятой или точкой с запятой (,;). Например: "*.dll" или "*.exe;*.dll;xx0????.tmp". В маске могут использоваться стандартные символы * (любое количество любых символов) и ? - один произвольный символ в заданной позиции. Параметр обязателен, должна быть задана хотя-бы одна маска. Вместо маски (или в качестве одной из масок в списке) можно указывать имя файла, например "*.dll;trojan.exe;virus.exe" - в данном случае условию соответствуют все файлы с расширением DLL и файлы с именами trojan.exe и virus.exe
 
ARecurse - управление рекурсивным поиском по вложенным папкам. Если равен false, то поиск файла ведется только в указанном каталоге. Если true - то в указанном каталоге и всех его вложенных подкаталогах.
 
AMsg - произвольный текст, который при помещение в карантин вносится в описание файла. Параметр обязателен, допускается задание пустой строки
 
ASizeMin - минимальный размер файла в байтах. Параметр обязателен
 
ASizeMax - максимальный размер файла в байтах. Параметр обязателен, задание максимального размера 0 выключает контроль максимального размера
 
ADateMin - минимальная дата файла. Дата задается в виде строки формата DD.MM.YYYY. При сравнении проверяется дата создания и дата последней модификации файла, если любая из дат больше заданной, то условие считается выполненным. Параметр необязателен, если контроль минимальной даты не нужен, то задается пустая строка.  
 
ADateMax - максимальная дата файла. Дата задается в виде строки формата DD.MM.YYYY. При сравнении проверяется дата создания и дата последней модификации файла, если любая из дат меньше заданной, то условие считается выполненным. Параметр необязателен, если контроль максимальной даты не нужен, то задается пустая строка.
 
ACopyRigth - фрагмент копирайтов файла. Если задана пустая строка, то контроль копирайтов не производится. Если задан некий образец, то производится его поиск в тексте копирайтов, в случае нахождения условия считается выполненным. Поиск идет без учета регистра
 
AMD5 - MD5 сумма файла. Задание пустой строки или отсутствие параметра отключает контроль MD5.  
 
Совместимость: AVZ 4.34 и выше
 
На заметку
ARecurse = true следует применять с осторожностью, в особенность если сканируемая папка содержит множество подкаталогов - поиск файла в них может занять длительное время и значительно нагружать ресурсы системы.
 
На заметку
В случае, если задан образец копирайтов или MD5 сумма, требуется выполнение операций с файлом. При это на чтение копирайтов затрачиваются сравнительно небольшие ресурсы, тогда как для вычисления MD5 требуется чтение всего файла с диска, что весьма негативно влияет на быстродействие.  Поэтому при проверке установлен приоритет проверок:
- размер
- дата создания и модификации
- копирайты
- MD5
Поэтому к примеру поиск по размеру и MD5 будет идти значительно быстрее, чем просто по MD5 - за счет того, что ресурсоемкая операция вычисления MD5 будет производиться только для файлов с подходящим размером.
 
Примеры:
 
1. Пример карантина файла по маскам имени без учета прочих параметров
begin
  QuarantineFileF('c:\windows', 'avm*.*', false, '', 0, 0);
end.
 
 
2. Пример карантина EXE файлов с заданным размером (очень удобно для поиска семпла с известным размером и неизвестным именем)
begin
  QuarantineFileF('c:\windows', '*.exe', false,'', 98154, 98154);
end.
 
 
3. Пример карантина EXE и DLL файлов, созданных или модифицированных в пределах заданного интервала времени
begin
  QuarantineFileF('c:\windows', '*.exe,*.dll', false,'',
                  0, 0, '1.06.2010', '3.06.2010');
end.
 
4. Пример карантина DLL файлов по MD5
begin
  QuarantineFileF('c:\windows', '*.dll', false,'',
                  0, 0, '', '', '',
                  '91D52886E142ACB998D7539B6EF2040C');
end.
 
5. Пример карантина DLL файлов по MD5 размеру
begin
  QuarantineFileF('c:\windows', '*.dll', false,'',
                  98154, 98154, '', '', '',
                  '91D52886E142ACB998D7539B6EF2040C');
end.
 
6. Пример карантина EXE файлов по размеру и фрагментам копирайтов
begin
  QuarantineFileF('c:\windows', '*.exe', false, '',
                  80000, 12000, '', '',
                  'cool malware');
end.