Начнем с того, что это за файл. В этом файле перечисленные фильтры, которые вы можете увидеть в программе SkyNET по нажатию на кнопку G.
Для чего они нужны? Для того, чтобы получать только интересные вам файлы при грабинге. Новичкам можно использовать стандартный regex.txt, который идет со многими билдами программы (например SkyNET 0.93d). Но гораздо интересней настроить этот файл под свои нужды и потребности.
Итак, как работает этот файл? Все очень просто. Когда skynet зацепил какой-то файл, он начинает проверять фильтры построчно из файла regex.txt. При первом же совпадении дальше проверка не идет. То есть, условия стоящие выше в regex.txt имеют больший приоритет. Именно поэтому во всех (почти) regex’ах сначала идут BLOCK-строчки, которые отсеивают ненужные файлы сразу.
Теперь перейдем к описанию самого формата фильтров.
Строчка условия состоит из четырех частей
Цвет полоски для данного типа файла
Способ определения файла
Условие
Группа, к которой принадлежит файл
Рассмотрим все поподробнее:
Это стандартный цвет, задаваемый тремя группами в шестнадцатеричном виде. В программах для рисования или корректировки фоток (например, фотошоп) при выборе цвета можно увидеть этот самый код. Тут все стандартно (FFFFFF – белый, FF0000 – красный, 00FF00 – зеленый и тд)
Здесь возможны 2 варианта:
- b – определять по содержимому (в начале файла)
- t – определять по полю content-type
Это самая важная и сложная часть. Здесь задается условие отбора. Если способ определения файла b, тогда условия задаются с помощью регулярных выражений, позаимствованных в UNIX.
Формат следующий: сначала ставится знак «^» - это определение начала строки.
Далее перечисляются символы, которые идут по порядку в файле (например, ^Rar, означает, что все файлы начинающиеся с символов Rar. удовлетворяют условию).
Если в файле на каком-то месте возможен любой произвольный символ, то его можно обозначить «.» (точкой) (например, ^RIFF....AVI, означает, что данному условию удовлетворяют файлы, у которых первые 4 символа RIFF, далее идут любые 4 символа, а далее 3 символа AVI).
Если вам нужно описать последовательность любых символов неопределенной длины, тогда применяется сочетание «.*» (вообще звездочка указывает на повторение символа 0 или более раз, а так как перед ней стоит точка, значит повторяться будет любой символ) (например, ^PK.*NAV, означает, что данному условию удовлетворяют файлы, у которых первые два символа PK, а далее в любом месте начала файла есть последовательность символов NAV).
Если вам нужно в качестве символа указать точку (например фильтровать расширения .mp3, точка все таки задана явно), то просто точку поставить нельзя, так как программа определит ее как любой символ, поэтому применяется сочетание символов «\\.» (например, ^PK.*\\.wmv, означает, что файлам, у которых первые два символа PK, далее в любом месте начала файла есть последовательность .wmv, это условие удовлетворяет).
Если последовательность символов может быть написана в разных регистрах (например, rar или RAR), тогда применяется выражение (?i) перед этой последовательностью (например, ^PK.*(?i)MANIFEST, означает, что файлам, в начале которых 2 знака PK и в любом месте встречается последовательность MANIFEST, написанная в любом регистре, хоть MaNifeSt, удовлетворяет условию).
Возможно указание условий (альтернативы) выбора. Например, к какой-то группе могут принадлежать файлы с разным началом, тогда применяется следующее выражение ^(усл1|усл2| … |услN) (Например, ^.*<(?i)(html|!doctype|head|body), означает, что файлам, содержащим в любом месте последовательность Вроде основные описал, вот список всех метасимоволов (символы обозначающие группы других символов) и их модификаторов:
\\ - считать следующий метасимвол как обычный символ.
^ - начало строки
. - один произвольный символ.
$ - конец строки
| - альтернатива (или)
() - группировка
[] - класс символов
Метасимволы имеют модификаторы (пишутся после метасимвола):
* - повторяется 0 или большее число раз
+ - повторяется 1 или большее число раз
? - 1 или 0 раз
{n} - точно n раз
{n,} - по меньшей мере раз
{n,m} - не меньше n, но и не больше m
Если способ определения файла t, тогда просто вписывается значение поля content-type.(например, ^image/jpeg – означает картинки в формате JPEG, ^application/msword – означает документы, написанные в Word'е)
Здесь указывается присваиваемое расширение файлу и через «;» группы файлов (необязательно).
В конце файла обычно пишут строчку 404040 b . bin;ALL, которая удовлетворяет всем файлам (означает, что если файл не попал не в одно условие, ему присваивается расширение bin).
Совет: внимательно расставляйте порядок условий, иначе можно не получить желаемый результат.
Например, я хочу ловить rar-архивы с музыкой в формате mp3, а другие rar-архивы я ловить не хочу. Если у меня будет последовательность записана так:
008000 b ^Rar! rar
008000 b ^Rar!.*\\.mp3 mp3.rar
И в программе отмечу плюсом группу mp3.rar и не отмечу rar, то я ничего не поймаю, так как архивы с музыкой также попадают под общее определение архивов, а я их не указал. Чтобы все заработало, нужно поменять порядок строк (поменять местами):
008000 b ^Rar!.*\\.mp3 mp3.rar
008000 b ^Rar! rar