Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Перехват трафика


Автор: Dmitry_177 29.5.2007, 13:07
Чтобы перехватывать весь трафик, входящий и исходящий, самый лучший способ - это ИМХО написать драйвер уровня ядра.. Хотел бы узнать, а какой алгоритм этого драйвера? Может какие функции нужно в этом драйвере перехватывать или что? 

Автор: Matematik 29.5.2007, 13:11
А не лучше взять готовый драйвер.? WinPcap

Автор: Dmitry_177 29.5.2007, 13:14
хочу свой написать..

Автор: MaXL 29.5.2007, 16:15
Dmitry_177, 
1) Писать скорее всего прийдётся на Си.
2) Нужны хоть какие-то навыки разработки драйверов, или ты хочешь именно этим примером приобрести их?
3) Вот эти ссылки надеюсь помгут тебе:
      -http://www.wasm.ru/article.php?article=netfilter
      -http://www.wasm.ru/all.php?mode=art

Автор: Dmitry_177 29.5.2007, 18:05
MaXL, 
1. Я знаю сто на С нужно писать..
2. Хоть какие-то навыки разработки драйверов есть, перехват API например =)
3. Спасибо за ссылки =)

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

Автор: drkot 29.5.2007, 22:08
Цитата(Dmitry_177 @  29.5.2007,  18:05 Найти цитируемый пост)
вообще к чему цепляться..

NDIS miniport

Автор: Dmitry_177 30.5.2007, 13:37
Вот я сейчас изучаю NDIS и исходники WinPCap и у меня возник вопрос.. А как можно определить что послано или получено? Т.е. послать/получить можно строку, число или вообще какую-нибудь структуру.. Во всех случаях как я понимаю при перехвате получу просто набор байтов в котором я ничего не понимаю.. Вот можно ли как-нибудь переводить эти наборы байтов в то что было послано/принято т.е. определять что была послана строка или число и соответственно переводить эти байты в строку или число..

Автор: drkot 30.5.2007, 16:02
Цитата(Dmitry_177 @  30.5.2007,  13:37 Найти цитируемый пост)
 Т.е. послать/получить можно строку, число или вообще какую-нибудь структуру..

послать или получить можно только пакет, а он и есть очень определенная структура

Цитата(Dmitry_177 @  30.5.2007,  13:37 Найти цитируемый пост)
Вот можно ли как-нибудь переводить эти наборы байтов в то что было послано/принято т.е. определять что была послана строка или число и соответственно переводить эти байты в строку или число..

примерный способ  smile 

Автор: sw04 2.6.2007, 23:36
Цитата(Dmitry_177 @  30.5.2007,  16:37 Найти цитируемый пост)
Вот я сейчас изучаю NDIS и исходники WinPCap и у меня возник вопрос.. А как можно определить что послано или получено? Т.е. послать/получить можно строку, число или вообще какую-нибудь структуру.. Во всех случаях как я понимаю при перехвате получу просто набор байтов в котором я ничего не понимаю.. Вот можно ли как-нибудь переводить эти наборы байтов в то что было послано/принято т.е. определять что была послана строка или число и соответственно переводить эти байты в строку или число.. 

глянь еще исходники Rouse_ в drkb. Поучительный пример снифера.
Правда использует недокументированные опции контроля сокета.
Минусы ощутил уже при первых тестах.
Например ловит ограниченное количество протоколов. GRE не ловит,например,  используется при vpn под ключениях.

Определить что пришло конечно же можно. по заголовку самого пакета.
У Роуза довольно прозрачно видно ,как мы разбирая пакет уровень за уровнем получаем в итоге не только данные, которые пришли, но и служебную информацию.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)