Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 12

ООП дизайн и pcap

15.07.2014, 15:02. Показов 1144. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Задача - фильтровать пакеты из pcap файла по заданной пользователем строке. Все бы ничего, но в последующем предстоит расширять число протоколов для фильтрации и число свойств протоколов, по которым осуществляется фильтрация.
Так вот задумка такая - получить пакет из Pcap файла и применить фильтр составленный при помощи паттерна компоновщик ( древовидная структура фильтра в узлах которой содержатся описания протоколов, имеющих свойства для фильтрации). Фильтр принимает указатель на пакет, пробегается по всем своим узлам, сначала проверяет тот ли протокол, протокол пробегается по своим фильтрующим свойствам и говорит "Да фильтр подходит" или "Нет" . Но вот незадача( как генерировать такой фильтр динамически? ведь если использовать для создания Фабрику, то она должна будет знать обо всем - о протоколах, об их свойствах и т.д. Так вот вопрос - как генерить объект фильтра избегая большой связанности компонентов? Вариант делать фильтрацию путем создания и наложения LibPcap фильтра- не катит.
Если подскажите в виде паттернов - будет вообще круто
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2014, 15:02
Ответы с готовыми решениями:

Дизайн сайтов (desktop и адаптивный дизайн), баннеров и логотипов
Добрый день! Меня зовут Катя. Я - начинающий дизайнер. Рисую за гроши сайты (desktop и адаптивный дизайн), баннеры и логотипы. Моя...

PCAP Linux
Доброго дня, уважаемые! Вопрос такого плана. При перехвате пакетов что-то странное в флагами. Компилировалось, запускалась на дебиане...

Дизайн выпадающего меню под дизайн обычного
Здравствуйте, у меня то есть меню, но, есть одно но... Есть меню в стиле лава-лампы, и я хочу чтобы при уменьшении ширины экрана,...

6
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
15.07.2014, 15:14
Цитата Сообщение от LARSnn Посмотреть сообщение
но в последующем предстоит расширять число протоколов для фильтрации и число свойств протоколов, по которым осуществляется фильтрация.
таки стратегия налицо...
Цитата Сообщение от LARSnn Посмотреть сообщение
ведь если использовать для создания Фабрику, то она должна будет знать обо всем - о протоколах, об их свойствах и т.д.
кажется вы собирались фильтры со строки командной задавать
Цитата Сообщение от LARSnn Посмотреть сообщение
фильтровать пакеты из pcap файла по заданной пользователем строке.
Цитата Сообщение от LARSnn Посмотреть сообщение
, то она должна будет знать обо всем - о протоколах, об их свойствах
а разве это не так? фабрика лишь дает метод на выходе которого объект, но созданием она сама занимается - следовательно знает о его свойствах
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.07.2014, 16:15
Может подойдет паттерн визитер ?
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
15.07.2014, 17:25
Цитата Сообщение от LARSnn Посмотреть сообщение
Фильтр принимает указатель на пакет, пробегается по всем своим узлам, сначала проверяет тот ли протокол
а зачем проверять со всеми протоколами? если можно вызывать ф-цию для конкретного протокола сразу, т.е определили протокол, вызвали ф-цию обработки соответствующую данному протоколу
0
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 12
16.07.2014, 19:29  [ТС]
Цитата Сообщение от aLarman Посмотреть сообщение
а зачем проверять со всеми протоколами? если можно вызывать ф-цию для конкретного протокола сразу, т.е определили протокол, вызвали ф-цию обработки соответствующую данному протоколу
Цитата Сообщение от aLarman Посмотреть сообщение
а зачем проверять со всеми протоколами? если можно вызывать ф-цию для конкретного протокола сразу, т.е определили протокол, вызвали ф-цию обработки соответствующую данному протоколу
Сейчас многое переделал. В принципе есть пока только несколько протоколов разных уровней OSI. Есть фильтр, составленный через патерн Компоновщик, в котором в строгом порядке в списке храняться фильтры для протоколов. Композитный фильтр должен:
1) Получить сырой пакет, вызвать конкретный фильтр, проверить тот ли пакет, если да, то проверить есть ли фильтрующие условия для данного протокола, если нет -> вызвать фильтр для протокола следующего уровня

Добавлено через 8 минут
Конкретный фильтр протокола может
1) определить этот ли протокол
2) по возможности определить тип вышележащего протокола
3) проверить есть ли фильтрующее условие, если да, то наложить данный фильтр
Вопросов масса
1) Ну создал я композитный фильтр по умолчанию, как в него запихнуть фильтрующее условие для конкретного протокола? стратегия вроде подходит, но тогда эт ужос получается со свойствами протоколов
2) как лучше создавать фильтрующее условие? т.к. условие должно быть связанно со свойством протокола а протокол должен быть внутри простого фильтра (ну как должен быть, мне кажется что так)
Если что могу прислать UML того, что сейчас есть

Добавлено через 49 минут
Если кто знает Open Source аналоги - ссылки в студию. WireShark не предлагать ( там все проще для уже закапчереного пакета - для каждого пакета изначально выстраивается таблица содержащая свойства и значения, потом фильтр переводится в такую же таблицу -> таблицы сравниваются)
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
17.07.2014, 12:33
У Вас задача решить поставлненную проблему или поигратся с паттернами?

Мой совет решите так как получается, увидив весь код (или задающюю его часть) будет легче понимать взаимосвязь обьектов. Полагайтесь более на восходящее проектирование.
1
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 12
18.07.2014, 14:24  [ТС]
Главное решить проблему, но и с паттернами поиграться тоже хочется ( для большей практики в данной тематике).
Вчера как раз расчертил полностью схему (изначально понимал, что вряд ли получится хорошо). Да дизайн получился в некоторых моментах такой, что стыдно стало. НО Вы правы на все 100. Я четко увидел все конкретные проблемы на всех уровнях, что помогло легко найти простое решение.
В качестве резюме для себя:
1) Не заниматься преждевременной оптимизацией
2) Попытаться сначала решить проблему, а потом уже подумать над более элегантным вариантом
3) Практика, практика, практика... Только она поможет. Большие умные книжки об ООП/проектировании и менне объемные о паттерах не решат за тебя проблему и не дадут шаблонных путей решения. Все связано с конкретным контекстом задачи и предметной области. Вооот))
Ps. причем вчера решил, а сегодня пост увидел))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.07.2014, 14:24
Помогаю со студенческими работами здесь

Не компилируется проект с Pcap
В консольное приложение установил из nuget manager библиотеки https://www.nuget.org/packages/Pcap.Net.x86/ При компиляции появляется...

Pcap для CLI
Всем привет, у кого есть какая инфа с нормальными примера для приёма и отправки МАК пакетов под CLI ???

PCap и получение html кода
Добрый день. Делаю достаточно крупную систему, одним из компонентов которой является прослушивание http-трафика. Использую для этого...

Подготовить пакет для pcap
Всем доброго времени суток. Нужно вручную формировать кадр для pcap'а. Мой вариант конечно работает, но он кривой и дико медленный......

PCAP и связанные с ним ошибки
Доброго времени суток. Использую PCAP, чтобы снифать пакеты в своей программе. Она работает, однако есть одна неприятная особенность. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru