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

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

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

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

IT-новости

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

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

подробнее

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

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

подробнее

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

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

подробнее

    perror ( "SO_ATTACH_FILTER" );

    close ( e0_r );

    exit (1);

}

В приведенном примере есть один недостаток: исходные данные, такие как IP-адрес, номер порта, вводятся в текст программы. При необходимости изменения условий фильтрации придется каждый раз вносить изменения в исходный текст и перекомпилировать программу. Модифицируем программу фильтрации для возможности гибкой настройки фильтра на новое условие, например, на новый IP-адрес. IP-адрес будем вводить в командной строке (аргумент argv [1]). В массиве BPF_code третий элемент перепишем в виде:

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

В этой инструкции мы обнуляем поле, содержащее IP-адрес. Для хранения введенного IP-адреса нам потребуются дополнительные переменные:

union {

    u_long net;

    char point [4];

} addr;

В поле net объединения addr будет храниться введенный IP-адрес в сетевом формате. Заполним поле net:

addr. net = inet_addr (argv [1]);

Теперь необходимо зеркально перевернуть значение IP-адреса в сетевом формате. Сделаем это, поменяв местами 0-й и 3-й байты, 1-й и 2-й:

addr. point [0] ^= addr. point [3];

addr. point [3] ^= addr. point [1];

addr. point [0] ^= addr. point [3];

addr. point [1] ^= addr. point [2];

addr. point [2] ^= addr. point [1];

addr. point [1] ^= addr. point [2];

Заполним необходимое поле в массиве BPF_code:

BPF_code [3]. k = addr. net;

Таким образом, если мы введем адрес 192.168.1.2, поле BPF_code [3]. k будет содержать значение 0xC0A80102. Для контроля можно отобразить это значение:

printf( « %x «, BPF_code[3]. k );

После этого подключаем фильтр к сокету и работаем.

Использование tcpdump

Для упрощения задачи составления программы фильтрации можно воспользоваться утилитой tcpdump. Давайте рассмотрим, как это делается. Предположим, нам необходим пакетный фильтр, принимающий IP-пакеты, адресатом или отправителем которых является хост с IP-адресом 192.168.9.1. Вводим следующую команду:

tcpdump -dd host 192.168.9.1


Предыдущая страницаОглавлениеСледующая страница
 
[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