Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтр драйвер возможен? 
:(
    Опции темы
kuzulis
Дата 27.8.2011, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Доброго времени суток.

У меня в мыслях есть идея создать кроссплатформенное GUI приложение для сниффинга/мониторинга траффика от последовательных портов.

Для Windows всё более менее ясно: пишем фильтр-драйвер, загружаем его и пользуемся его плюшками (яркий пример такого приложения - Free Serial Port Monitor). 

Но проблема возникла с Linux: как тут быть?

Посмотрел сорцы программки slsnif (http://sourceforge.net/projects/slsnif/ ) - там юзаются пайпы и/или /pty .
Но это немного не то, тем более, что эта утилита как-то не корректно работала:
1. Она работает только на прием данных в порт
2. Она тупо открывает порт, читает из него данные и выводит в консоль, при этом, тому приложению,
которому реально необходимы эти данные - их просто не получает, т.к. slsnif их уже прочитал.

ЗЫ: Если не прав - поправьте.

Так вот, возможно ли и в Linux написать что-то похожее на Filter driver как в Windoews? Или может, есть альтернативные варианты?
PM MAIL   Вверх
Void
Дата 27.8.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 3
Всего: 173



slsnif, interceptty и подобные программы открывают новое устройство псведотерминала, на использование которого предполагается переконфигурировать приложения, за которыми нужно следить. Это возможно в большинстве случаев и, конечно, проще, чем писать модуль ядра.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
kuzulis
Дата 27.8.2011, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Т.е. Приложение должно вместо порта открывать пайп или pty? так может оказаться что такого выбора в нем может не быть.  Но а примеры ж фильтр драйверов должны быть в сети? А то я не нашел. Имхо драйвер было бы лучше и универсальнее.

PM MAIL   Вверх
bsa
Дата 29.8.2011, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Цитата(kuzulis @  27.8.2011,  19:21 Найти цитируемый пост)
Но а примеры ж фильтр драйверов должны быть в сети?

Для Linux такого понятия вообще нет.
Цитата(kuzulis @  27.8.2011,  19:21 Найти цитируемый пост)
Имхо драйвер было бы лучше и универсальнее.

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

Обычно, для подобных утилит используют libpcap. Она уже кроссплатформенная.
PM   Вверх
kuzulis
Дата 29.8.2011, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Цитата

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

Ну а иначе то никак. 
Т.к. к примеру, нужно перехватывать не только траффик ввода/вывода, но, к примеру и моменты конфигурирования устройства.
Также, если брать "стандартный" вариант, который к примеру, используют slsnif, interceptty, то там мы открываем порт с уже известными параметрами. 
А что, если приложение, которое нам нужно "ломануть" втихпря как-то использует порт с какими то параметрами и которые изменяет в режиме своей работы - в этом случае, мы не сможем ничего сделать. Ведь так? Или я не прав?

 
Цитата

Обычно, для подобных утилит используют libpcap. Она уже кроссплатформенная.

Но ведь она только для перехвата сетевого траффика tcp/ip.

Есть ли еще решения?
PM MAIL   Вверх
bsa
Дата 31.8.2011, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



черт. заработался я. Почему-то подумал, что речь идет о сокетах. smile

Скорее всего, действительно придется писать модуль ядра, который будет перехватывать управление портом от штатного драйвера. Как вариант, можно просто переименовать устройство порта, а на его место пихнуть созданные упомянутыми прогами pty. Правда, во втором случае, придется много делать из-под рута каждый раз при необходимости сниффинга.
PM   Вверх
kuzulis
Дата 1.9.2011, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Цитата(bsa @  31.8.2011,  17:31 Найти цитируемый пост)
Скорее всего, действительно придется писать модуль ядра, который будет перехватывать управление портом от штатного драйвера.

Так вот и главный вопрос: где можно про это дело почитать? Есть ли какие нить примеры и т.п.? 
Уж больно руки чешутся закодить smile
PM MAIL   Вверх
bsa
Дата 1.9.2011, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Думаю, стандартная книга о написании драйверов для Linux тебе подойдет.
Думаю, твой драйвер должен найти объекты описания устройств и подменить в них коллбэки на свои. А при выгрузке, соответственно, восстанавливать обратно.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.