Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),

В принятом Ethernet-кадре по смещению, равному 12 байт (6 байт MAC-адреса источника + 6 байт MAC-адреса назначения), находится 2-х байтовый идентификатор протокола сетевого уровня. Эти 2 байта мы загружаем в аккумулятор.

BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETH_P_IP, 0, 8),

Проверяем соответствие значения, загруженного в аккумулятор, идентификатору IP-протокола (ETH_P_IP = 0x800). При выполнении условия переходим к следующей инструкции (jt = 0). В противном случае смещаемся на 8 структур вниз (jf = 8) и выходим из программы фильтрации с возвратом нулевого значения. Это значит, что данный пакет отброшен.

BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 26),

Загружаем в аккумулятор 4-байтовое значение, находящееся по смещению 26 в принятом пакете. Это значение соответствует IP-адресу источника.

BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0xC0A80102, 0, 6),

Проверяем соответствие значения, загруженного в аккумулятор, IP-адресу 192.168.1.2. Значение 0xC0A80102 – это шестнадцатиричное представление данного IP-адреса. Однако в сетевом формате адрес 192.168.1.2 выглядит как 0x201A8C0. Это связано с порядком передачи в сети – передача начинается с бита младшего разряда. Если адрес не совпадает – выходим из программы фильтрации.

BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),

Загружаем в аккумулятор 1 байт, находящийся по смещению 23. В этом поле содержится идентификатор протокола транспортного уровня. Для протокола TCP это значение равно 6.

BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 4),

Проверяем соответствие транспортного протокола.

Далее нам необходимо проверить поле «Порт источника» на соответствие значению 23. Для этого необходимо сперва установить длину заголовка IP-пакета.

BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14),

В индексный регистр будет загружено значение длины заголовка IP-пакета. По смещению, равному сумме длин Ethernet-заголовка и IP-заголовка, будет находиться поле «Порт источника». Загрузим его в аккумулятор:

BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14),

и проверим полученное значение:

BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x17, 0, 1),

Выходим из программы фильтрации.

BPF_STMT(BPF_RET+BPF_K,1500),

BPF_STMT(BPF_RET+BPF_K,0),

};

Заполним поля структуры struct sock_fprog *Filter :

Filter -> len = 11;            - значение поля len равно числу структур в массиве BPF_code [ ]

Filter -> filter = BPF_code;   - указатель на массив структур BPF_code [ ]

Привязка фильтра к сокету выполняется при помощи вызова setsockopt следующим образом:

if ( setsockopt ( e0_r, SOL_SOCKET, SO_ATTACH_FILTER, Filter, sizeof (*Filter) ) < 0 ) {


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100