Jump to content
Калькуляторы

L7 практические примеры Поделитесь примерами regexp для mikrotik

Коллеги, подскажите актуальные L7 регэкспы для матчинга трафика( Skype, торренты, youtube и тд и тп).

Share this post


Link to post
Share on other sites

uTP

v1

/*

* syn - 14 bytes

* 'udp[17] = 2 and udp[18] = 4 and udp[21:2] = 0 and udp[23] = 0 and udp[24] = 8 and udp[25:4] = 0 and udp[29:4] = 0'

* 41 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 41 and udp[25:2] = 0x0204 and udp[29:4] = 0x00000008 and udp[33:4] = 0 and udp[37:4] = 0)'

*/

/*

* rst - 4 bytes

* 'udp[17] = 0 and udp[18] = 3'

* 31 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 31 and udp[25:2] = 0x0003)'

*/

 

 

v2

/*

* syn - 14 bytes

* 'udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x40 and udp[1] = 2 and udp[18:2] = 0 and udp[20] = 0 and udp[21] = 8 and udp[22:4] = 0 and udp[26:4] = 0'

* (udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x40) => udp[0] = 0x41

* 38 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 38 and udp[8:2] = 0x4102 and udp[26:4] = 0x00000008 and udp[30:4] = 0 and udp[34:4] = 0)'

*/

/*

* rst - 4 bytes

* 'udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x30 and udp[1] = 0'

* (udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x30) => udp[0] = 0x31)

* 28 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 28 and udp[8:2] = 0x3100)'

*/

 

это в синтаксисе tcpdump.

Share this post


Link to post
Share on other sites

uTP

v1

/*

* syn - 14 bytes

* 'udp[17] = 2 and udp[18] = 4 and udp[21:2] = 0 and udp[23] = 0 and udp[24] = 8 and udp[25:4] = 0 and udp[29:4] = 0'

* 41 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 41 and udp[25:2] = 0x0204 and udp[29:4] = 0x00000008 and udp[33:4] = 0 and udp[37:4] = 0)'

*/

/*

* rst - 4 bytes

* 'udp[17] = 0 and udp[18] = 3'

* 31 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 31 and udp[25:2] = 0x0003)'

*/

 

 

v2

/*

* syn - 14 bytes

* 'udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x40 and udp[1] = 2 and udp[18:2] = 0 and udp[20] = 0 and udp[21] = 8 and udp[22:4] = 0 and udp[26:4] = 0'

* (udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x40) => udp[0] = 0x41

* 38 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 38 and udp[8:2] = 0x4102 and udp[26:4] = 0x00000008 and udp[30:4] = 0 and udp[34:4] = 0)'

*/

/*

* rst - 4 bytes

* 'udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x30 and udp[1] = 0'

* (udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x30) => udp[0] = 0x31)

* 28 = udp hdr len (8) + upd pkt data len

* upd header included:

* '(udp[4:2] = 28 and udp[8:2] = 0x3100)'

*/

 

это в синтаксисе tcpdump.

Это из своего опыта я так понимаю?

Share this post


Link to post
Share on other sites
Это из своего опыта я так понимаю?

Да.

http://www.netlab.li...php?topic=804.0

 

Неплохо , а где еще актуальные могут валяться?, просто хочу знать что народу трэба )

Edited by shafiev

Share this post


Link to post
Share on other sites

Иван, а вы не могли бы написать о своем творении в рассылку?

Может кто-то закомитит в систему?

Share this post


Link to post
Share on other sites

Системе это нужно как пятое колесо телеге, этому место в портах.

Вон ng_ipacct в портах висит, хотя штука более универсальная.

В ядро вообще берут самые универсальные вещи, а не столь специфичные.

Кажется ng_patch и тот еле протащили, уж куда универсальнее.

 

А коммитеры там ваще обленились: http://www.netlab.li...php?topic=781.0

висит уже года два, всё ждут когда я им документацию переведу и код дооформлю согласно стилю.

Ну я сделаю, как будет время и желание, мне то торопится некуда.

 

Ну или вот: http://netlab.linkpc...d/tmp/amdtemp.c

уникальный драйвер (в других ОС так же хреново как и во фре щас, я переписывал по спекам почти с нуля), которому плевать какой АМД проц вставлен, он ещё лет 5 будет температуру показывать на всех новых процах амд, совсем без правок кода.

А они там по старинке идентификаторы процов по одному добавляют.

 

Вот учили бы лучше русский, давно бы всё закоммитили :)

Share this post


Link to post
Share on other sites

Хорошо, пусть будет в портах.

 

Вы знаете пословицу - "Лучшее - враг хорошего"?

Share this post


Link to post
Share on other sites

Как нить займусь, обычно у меня настроение появляется что то объяснять через транслейтор вместе со снегом, до НГ держится :)

Прошлые года у меня переезды были и не до этого было.

Share this post


Link to post
Share on other sites

а для тех кто в танке можно пояснить как это засунуть в тик L7?

Share this post


Link to post
Share on other sites

эт я понял.

 

менять синтаксис надо и как?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Ivan_83 уже поделился. Всё же тривиально. Просто компиляете правила tcpdump в bytecode и грузите их в BPF модуль iptables

 

tcpdump -i INTERFACE -ddd 'TCPUMP_FILTER' > filter.bpf

iptables -t TABLE -I CHAIN -m bpf --bytecode-file filter.bpf -j ACTION

 

куда уж проще-то?

 

Старые ядра использовать не советую для этого дела. Я бы начал с 3.16.5, потом уж даунгрейдить, если будут какие-то проблемы

Share this post


Link to post
Share on other sites

Под готовим решением понималось нечто больше ,чем только торрент )

Edited by Tamahome

Share this post


Link to post
Share on other sites

большинство протоколов не требуют L7 анализа. Собственно, торрент из тяжёлых только и требует.

Share this post


Link to post
Share on other sites

Ну или оффсеты пересчитать под свою утилиту, если они отличаются.

Синтаксис tcpdump мне нужен был только для отладки, чтобы убедится что сишный код пакеты видит также как и должен, да и наблюдать проще было через tcpdump чем ещё дописывать специально для этого код.

Сами оффсеты и сигнатуры я получил путём анализа кода основного торрент клиента. Это окончательный (оптимизированный) вариант, предварительные содержали больше сравнений, потом я их сгруппировал, местами получилось одно сравнение 4 байта вместо 4-х одно байтовых или битовых. Собственно то что идёт после слов "upd header included" и есть оптимизированный вариант + заголовок юдп.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this