LINUX.ORG.RU

(RegExp)подскажите как....


0

0

Мне нужно найти последовательность \x7F\xFF\xFF\xFF\xAB, но с определенного байта. то есть нужно задать смещение относительно начала. как это сделать в регулярных выражениях?

зы нужно написать сэмпл для layer7 фильтра на один плохой протокол


Ответ на: комментарий от hizel

паттерны для фильтра в виде регекспов пишутся

Vetal80
() автор топика
Ответ на: комментарий от helios

И ключик, на пробельные символы

/.{$offset,}\x7F\xFF\xFF\xFF\xAB/s
helios ★★★★★
()
Ответ на: комментарий от Vetal80

Варианты эквивалентны, но 2ой более «элегантный»... Ну и модификатор «s» не забудьте, дабы «любой символ» (.) мог быть пробельным.

helios ★★★★★
()
Ответ на: комментарий от Vetal80
helios@debian:~$ perl
$a = "aaaa\n"; 
print 1 if $a =~ /.{2,}\x0A/; 

Выдаёт «1»... Можно ещё так сделать:

/^.{$offset,}\x7F\xFF\xFF\xFF\xAB/s
Чтобы искал только с начала строки...

Ты бы хоть показал как юзаешь...

helios ★★★★★
()
Ответ на: комментарий от Vetal80

вот только не могу выбрать кол-во точек. и точки ли?
я делаю поиск по бинарнику - нужно выдклить такие, которые подпадают под выражение.

Vetal80
() автор топика
Ответ на: комментарий от Vetal80

>нет в ядре поддержки стрингов, так шо я свободен..

Шо ж это за ядро-то такое?

l7-filter-userspace, кстати, довольно глючный. Например, при попытке передать страницу apache server-info или server-status при наличии в конфе протокола HTTP он просто блокирует пакеты.

nnz ★★★★
()
Ответ на: комментарий от Vetal80
$a = ' ef fwerfg gg erg gergaegeargeahreahemheh';
LOOP: goto LOOP if $a =~ /\G.*?ge(?{print pos()})/gc;

выведет позиции, на которых нашёл подстроку «ge»

мб оно?

Точнее формулируй мысль.

helios ★★★★★
()
Ответ на: комментарий от helios

ну вот юдп пакет - последовательность байтов. мне нужно написать регексп для выделения определенных пакетов. признак таких пакетов - последовательность байтов с определенной позиции в юдп пакете.

Vetal80
() автор топика
Ответ на: комментарий от Vetal80

for my $i (0..$#UPD) { print «Пакет $i имеет искомую последовательность\n» if $UPD[$i] =~ /.{определённая_позиция,}последовательность/s }

LORCODE отвалился :(

helios ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.