Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

sniffer ИСОДЯЩЕГО траффика

354
14 июля 2006 года
ШпиЁн
468 / / 19.02.2006
эх, проблемы-проблемы....

Пакеты входящего трафика снифером посмотреть можно, это просто...
надо лишь использовать ioctlsocket, где вторым параметром идет SIO_RCVALL. Проверил - работает:о)

А как просмотреть пакеты исходящего трафика? я ничего не нашел... NDIS драйвер я врядли смогу написать, может есть вариант попроще?
3
15 июля 2006 года
Green
4.8K / / 20.01.2000
Возможно, можно и проще, но получить довольно полный контроль над стеком TCP/IP без написания драйвера можно через layered service provider (LSP).
354
15 июля 2006 года
ШпиЁн
468 / / 19.02.2006
А можно примерчик хоть, или ссылку... я с LSP никогда дела не имел, не знаю даже с чего начать...
3
15 июля 2006 года
Green
4.8K / / 20.01.2000
Начни с Google или c MSDN.
http://www.microsoft.com/msj/0599/LayeredService/LayeredService.aspx
354
18 июля 2006 года
ШпиЁн
468 / / 19.02.2006
эх... английский я вроде неплохо знаю... но может есть другие ресурсы? :о) очень нужен пример...
Я даже NDIS теперь приветствую, надо ХОТЬ КАК-ТО это сделать...
13K
19 июля 2006 года
Mad Kit
18 / / 19.07.2006
В одном из примеров снифера я нашол такую строчку:
#define SIO_RCVALL 0x98000001
По каким принципам берется число 0x98000001?:confused:
16K
20 июля 2006 года
Fusion
13 / / 18.07.2006
По каким принципам вообще выбираются системные константы? :-)
13K
20 июля 2006 года
Mad Kit
18 / / 19.07.2006
Без понятия. Автор же статьи откудато откопал это число?!
16K
20 июля 2006 года
Fusion
13 / / 18.07.2006
Mad Kit, автор статьи столкнулся с проблемой - снифер не отлавливает исходящие пакеты. Я тоже сталкивался с этим в свое время, но забил за не надобностью. :-)

Код из моего снифера:

 
Код:
DWORD flag = TRUE;     //Флаг promiscuous Вкл/Выкл
 if (ioctlsocket(s, SIO_RCVALL, &flag) == SOCKET_ERROR)
{
     SetDlgItemText(hwndDlg, IDC_EDIT_STATUS, "Ошибка. Не удается включить режим promiscuous.");
}


Вот что я нарыл с свое время по этому поводу:

[FONT="Times New Roman"]"IP-пакеты (дейтаграммы), источником которых является приложение пользователя, инкапсулируются в Ethernet-кадры. Каждый кадр содержит исходный IP-пакет и другую информацию, необходимую для доставки его адресату, в частности, 6-ти байтовый Ethernet-адрес (MAC-адрес) назначения, который при помощи протокола ARP ставится в соответствие IP-адресу назначения. На уровне протокола Ethernet маршрутизация отсутствует. Другими словами, кадр, отправленный хостом-отправителем, не попадает напрямую хосту-получателю, а будет доступен для ВСЕХ хостов, объединенных в сеть. Каждая сетевая карта принимает кадр и считывает из него первые 6 байт. Эти байты содержат MAC-адрес хоста-получателя, но только одна карта в сети определит его как свой собственный, и передаст кадр для дальнейшей обработки сетевому драйверу." [/FONT]

Режим promiscuous всего лишь отключает эту проверку первых шести байт. Нам будут доступны ВСЕ кадры гуляющие по сети! :-) Но для нас они являлются ВХОДЯЩИМИ, этот режим не будет отлавливать ИСХОДЯЩИЕ кадры. Вот с этим и столкнулся ШпиЁн :-) Решение этой проблемы - порыться в DDK, откопать что-либо с NDIS, драйвер точно поможет :-)
13K
27 июля 2006 года
Mad Kit
18 / / 19.07.2006
Полезная информация( если можно ссылочку дай плз ), но вопрос мой был в другом. Я тоже нашол этот снифер и даже успел его переписать что бы он еще высвечивал порты на которые приходят сообщения, но вот о том почему константа SIO_RCVALL должна содержать именно такое число никто пока не сказал. В МСДН по этому поводу указано ряд других констант которые получаются установлением определенных битов но вот про двоичное число: 10000000000000000000000000011001 равное 0x98000001 там ничего не сказано! Помогите плз.
354
27 июля 2006 года
ШпиЁн
468 / / 19.02.2006
[QUOTE=Mad Kit]...но вот о том почему константа SIO_RCVALL должна содержать именно такое число никто пока не сказал... [/QUOTE]

А никто тебе это и не скажет, просто в Microsoft решили что именно это число должно быть.

Вот что лежит в mstcpip.h
 
Код:
#define SIO_RCVALL            _WSAIOW(IOC_VENDOR,1)


Вот что лежит в winsock2.h
 
Код:
#define _WSAIOW(x,y)                 (IOC_IN|(x)|(y))

и там же
 
Код:
#define IOC_IN                            0x80000000

 
Код:
#define IOC_VENDOR                    0x18000000

После последовательного применения оператора OR как раз и получится 0x98000001 :-)

В твоем примерчике зачем-то переопределили то, что уже определено заранее :-)))))))
13K
31 июля 2006 года
Mad Kit
18 / / 19.07.2006
Большое спасибо.
16K
14 августа 2006 года
Student-uni
8 / / 14.08.2006
Tak а проблему с ишодясшим трафиком как решить

У меня на виртуальном интерфеисе не читает ишодяшии
а на физическом - Ок

Кто может знает в чем дело
354
15 августа 2006 года
ШпиЁн
468 / / 19.02.2006
входящий траф считать очень просто - описано выше.
исходящий траф считать очень сложно, нужно вклиниться в систему. но есть способ, решения есть у любой проблемы - нужно написать layered service provider, и можно контролировать весь траф на системе, узнавать кто, куда, откуда и т.д... или написать драйвер ndis... я пока изучаю и то, и другое, успехи есть, но малые, помочь особо не могу :-)))
16K
16 августа 2006 года
Student-uni
8 / / 14.08.2006
Тогда у меня вопрос по входящему трафику

А входящие ВПН пакеты он тоже считает ?
Каким образом ?
Ведь там адресат зашифрован ?

Пример.

Есть сетевая карта ПК1 192.168.0.1
и ПК 2 192.168.2.50


Задача считать трафик между ПК1 и ПК2 идущий через ВПН


Имеется ВПН сервер Напр 214.136.35.28 .
ПК1 к нему подключается.
На ПК1 тут же Создаётся виртуальный интерфейс. Напр 10.0.0.1
Прокладывается маршрут все пакеты
на ПК2- 192.168.2.50 направлять через 10.0.0.1 (в ВПН)

Теперь если ты наблюдаешь сетевую карту то видишь пакеты
пересылаемые между ПК1 и ВПН-сервером
192.168.0.1 и 214.136.35.28 но
не знаешь какой из них идёт на ПК2

Если ты наблюдаешь пакеты через виртуальный интерфейс
то как ты правильно заметил (я тоже это вижу)
видны только входящие
от ПК2 192.168.2.50 на вирт интерфейс 10.0.0.1
и ни одного исходящего.

Так вот у меня подозрение, что даже входящий трафик
мы видим не полный. мы видим только какие то сервисные
ТСП пакеты, но не сами ВПН пакеты с информацией.
Их мы не видим ни входящие ни исходящие.
Я проверял суммы с трафиком между ПК1 и ВПН-сервером
192.168.0.1 и 214.136.35.28

Так вот там входящий траффик значительно больше.
ЧТо подтверждает мои подозрения.

Если ты не используешь ВПН,
а хочешь посчитать прямое соединение
то проблем нет.
возьми сниффер v2software у меня он считает отлично и вход и выход.
Хочешь - скину.

А в случае с ВПН - надо либо раскодировать пакет
либо действительно делать это на уровне НДИС

набери NDIS тут
http://www.codeproject.com тут есть примеры драйверов

Если чего получится - можешь скинуть ?
student-uni sobaka mail.ru
мне похоже это предстоит тоже копать

Спасибо
354
16 августа 2006 года
ШпиЁн
468 / / 19.02.2006
хм... насчет VPN я мало что знаю. Допустим у компУтера адрес 192.168.0.56, он сможет принимать входящие пакеты только с адресов 192.168.0.1 - 192.168.0.255. Где-то я прочел про это, а вот где - не помню.
Если очень хочется натворить чудес в сети, то нужно разбирать source замечательной програмки winpcap ;) А насчет NDIS - это конечно, тоже выход, но я пришел к выводу что это уж больно сложно. Мне нужно было перехватывать ВЕСЬ траф на ОДНОМ компе, и это можно сделать и на более высоких уровнях - тот же LSP это позволяет.

Но я все равно что-нибудь придумаю, если что получится - скину. :-)))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог