Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Концепция сниффера, Сниффер - учет сетевого траффика 
:(
    Опции темы
Flogrimm
Дата 8.1.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет!

Я пишу простой сниффер на c# в рамках курсового, но у меня есть несколько вопросов. 

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

1) Лог

- Стоит ли вести просто текстовый лог типа

ip отправителя - ip получателся - время - размер пакета

или лучше сереализовать полностью объекты (у меня это некий IPHeader который содержит различную информацию о пакете)

или все-таки нет смысла в сереализации?

- В лог писать информацию о пакетах, как часто они бы не поступали или писать информацию через определенный момент времени - например каждую секунду?

2) Почему то получается словить не весь трафик... я беру за основу алгоритм, реализованный в MJsniffer (http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx) - смотрим размер ip пакетов и суммируем их...

http://oleg40a.in.ua/upload/MJSniffer.rar



Это сообщение отредактировал(а) Flogrimm - 8.1.2009, 11:30
PM MAIL   Вверх
Dims
Дата 9.1.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



По умолчанию сетевая карта слышит только те пакеты, которые адресованы именно ей. Чтобы она слышала все пакеты, нужно перевести её в promiscuous mode. Это должна быть какая-то низкоуровневая команда или настройка драйвера сетевой карты. Не знаю, насколько она стандартизована.
PM MAIL   Вверх
Flogrimm
Дата 10.1.2009, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не совсем понял... как же я смогу словить пакеты, которые ей не адресованы? или вы имеете в виду пакеты проходящие через мою карту в другую точку назначения?
PM MAIL   Вверх
baldina
Дата 10.1.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Flogrimm, так ethernet устроен. все пакеты получают все карты в рамках одного домена коллизий (т.е. соединенные концентраторами - хабами). те пакеты, которые не предназначены карте, она просто отбрасывает. promiscuous mode позволяет получить все эти пакеты. 
перевести карту в этот режим можно при помощи соотв. ioctl, что-то вроде

Код

int mode=1;
SOCKET s;
....
ioctlsocket (s, SIO_RCVALL, &mode);

PM MAIL   Вверх
Dims
Дата 21.1.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 0
Всего: 11



Цитата(Flogrimm @  10.1.2009,  00:28 Найти цитируемый пост)
как же я смогу словить пакеты, которые ей не адресованы?

Значит, я неправильно понял вопроса. Я думал, что говоря, что не удаётся словить "весь" трафик Вы как раз имели в виду чужие пакеты. 

Ethernet -- это "эфирная сеть", то есть, внутри сетевого провода существует как бы радиоэфир, а все сетевые карточки -- это радиостанции. Эти радиостанции либо "кричат" в эфир, либо слушают его. Когда карточка слушает эфир, она может принять передачу ("словить пакет") и проверить его MAC адрес назначения. Если этот адрес её, то она передаст пакет наверх, драйверу. А если пакет чужой, то есть, предназначенный для другой карточки, то её поведение зависит от режима. По умолчанию карточка сотрёт пакет из своей памяти и драйвер о нём ничего не узнает. А в P-mode карточка отправит его драйверу. То есть, в P-mode карточка позволяет драйверу слышать все передачи в эфире, а не только предназначенные для этой карточки.
PM MAIL   Вверх
Temdegon
Дата 22.1.2009, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хм. А разве современные свичи работают так? На сколько я знаю, есть свичи (Коммутаторы) и хабы (Концентратоы). Хаб отсылает пакеты на все активные порты, а сетевая карта уже решает, принимать его или нет по заголовку пакета. И все было бы отлично, если бы на смену хабам не пришли свичи (и уже давно вытеснили их). Свич рассылает пакеты всем без разбора только сразу после включения. Все пакеты он анализирует и все мак-адреса сегмента сети хранит в своей таблице. Когда впоследствии приходит пакет для МАКа, который уже есть в его таблице, пакет шлется ТОЛЬКО на один порт. Это достаточно сильно повышает пропускную способность сети, да и как ни посмотри, отсылать пакет получателю гораздо разумнее чем слать его всем подряд. Я НЕ специалист по сетям, устройству коммутоторов, сетевых карт и написанию драйверов для них. Просто пару раз пробовал пользоваться сниферами, а когда ничего не вышло, попытался почитать и разобраться почему это не работает. 
Другое дело, если сетевая карта не Ethernet, a DVB, которая принимает пакеты не по витой паре от свича, а со спутниковой тарелки. Тут уже все как раз попадает под описание "эфирная сеть", т.к. спутник не может "шпулять" пакеты прямо мне в тарелку и в результате данные летят всем по всей зоне покрытия спутника на заданной частоте. И вот тут уже решение брать или не брать принимает сама карта. Чем последний десяток лет успешно пользуются "рыбаки" - ловят чужой трафик в промышленных масштабах. Я этим делом тоже не брезговал =). Всегда приятно на халяву получить свеженький фильмец или образ с игрой. Провайдеры пытаются боротся, шифруя трафик, но не все и не всегда успешно. И софта для перехвата, отсеивания и сортировки чужого трафика через спутник очень много. Но ничего похожего для Ethernet-сетей пока мне не попадалось. Если я заблуждаюсь, и в современных сетях возможно ловить чужой трафик - ткните меня пожалуйста носом в софт, который это может и в сайт\форум, посвященный этому делу. Буду очень благодарен, и с удовольствием этим займусь.

Это сообщение отредактировал(а) Temdegon - 22.1.2009, 03:01
PM MAIL   Вверх
PashaPash
Дата 22.1.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Temdegon, есть такая замечательная вещь как ARP spoofing, в вики подробно описана. Но очень легко обнаруживается и стучится по ушам smile



--------------------
PM MAIL WWW   Вверх
DenwerD
Дата 22.1.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1) Лог
Мне кажется лучше в таких приложениях использовать буфферизованый вывод строк (BufferedStream) лога в файл. Строка определённого формата в которой сущности разделяются например символом ";"

Сериализация здесь в принципе нафик не нужна ибо что вы будите делать например с 1000 объектами IPHEader, куда их девать? обратно в файл, придётся десериализовать. Вообщем лишняя нагрузка.

Потом этот текстовый файл парсится в форме. 


2) Насчёт трафика непонятно, какой трафик вы хотите отловить? 

1.1 Только с конкретной машины
1.2 Всей локалки.

В случае 1.2 нада инсталировать снифер на сервер который пропускает трафик из интернета в локалку. Тут можно отловить все HTTP, аську и т.д. Так делают файрволы.

В 1.1  непонятно что понимается под словом трафик. Если принимается понятие трафика как количество бит пройденых через сетевую карту в единицу времени, то в режиме RAW на сокет должны валится всё что входит и выходит в/из сетевой карты. А дальше ваша фантазия что делать с эти множеством битов.



 


PM MAIL   Вверх
Flogrimm
Дата 22.1.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо большое! Имелся в виду вариант 1.1, т.е. трафик конкретной машины.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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