![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Flogrimm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 0 Всего: 11 |
По умолчанию сетевая карта слышит только те пакеты, которые адресованы именно ей. Чтобы она слышала все пакеты, нужно перевести её в promiscuous mode. Это должна быть какая-то низкоуровневая команда или настройка драйвера сетевой карты. Не знаю, насколько она стандартизована.
|
|||
|
||||
| Flogrimm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.1.2009 Репутация: нет Всего: нет |
Не совсем понял... как же я смогу словить пакеты, которые ей не адресованы? или вы имеете в виду пакеты проходящие через мою карту в другую точку назначения?
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Flogrimm, так ethernet устроен. все пакеты получают все карты в рамках одного домена коллизий (т.е. соединенные концентраторами - хабами). те пакеты, которые не предназначены карте, она просто отбрасывает. promiscuous mode позволяет получить все эти пакеты.
перевести карту в этот режим можно при помощи соотв. ioctl, что-то вроде
|
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 0 Всего: 11 |
Значит, я неправильно понял вопроса. Я думал, что говоря, что не удаётся словить "весь" трафик Вы как раз имели в виду чужие пакеты. Ethernet -- это "эфирная сеть", то есть, внутри сетевого провода существует как бы радиоэфир, а все сетевые карточки -- это радиостанции. Эти радиостанции либо "кричат" в эфир, либо слушают его. Когда карточка слушает эфир, она может принять передачу ("словить пакет") и проверить его MAC адрес назначения. Если этот адрес её, то она передаст пакет наверх, драйверу. А если пакет чужой, то есть, предназначенный для другой карточки, то её поведение зависит от режима. По умолчанию карточка сотрёт пакет из своей памяти и драйвер о нём ничего не узнает. А в P-mode карточка отправит его драйверу. То есть, в P-mode карточка позволяет драйверу слышать все передачи в эфире, а не только предназначенные для этой карточки. |
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
Хм. А разве современные свичи работают так? На сколько я знаю, есть свичи (Коммутаторы) и хабы (Концентратоы). Хаб отсылает пакеты на все активные порты, а сетевая карта уже решает, принимать его или нет по заголовку пакета. И все было бы отлично, если бы на смену хабам не пришли свичи (и уже давно вытеснили их). Свич рассылает пакеты всем без разбора только сразу после включения. Все пакеты он анализирует и все мак-адреса сегмента сети хранит в своей таблице. Когда впоследствии приходит пакет для МАКа, который уже есть в его таблице, пакет шлется ТОЛЬКО на один порт. Это достаточно сильно повышает пропускную способность сети, да и как ни посмотри, отсылать пакет получателю гораздо разумнее чем слать его всем подряд. Я НЕ специалист по сетям, устройству коммутоторов, сетевых карт и написанию драйверов для них. Просто пару раз пробовал пользоваться сниферами, а когда ничего не вышло, попытался почитать и разобраться почему это не работает.
Другое дело, если сетевая карта не Ethernet, a DVB, которая принимает пакеты не по витой паре от свича, а со спутниковой тарелки. Тут уже все как раз попадает под описание "эфирная сеть", т.к. спутник не может "шпулять" пакеты прямо мне в тарелку и в результате данные летят всем по всей зоне покрытия спутника на заданной частоте. И вот тут уже решение брать или не брать принимает сама карта. Чем последний десяток лет успешно пользуются "рыбаки" - ловят чужой трафик в промышленных масштабах. Я этим делом тоже не брезговал =). Всегда приятно на халяву получить свеженький фильмец или образ с игрой. Провайдеры пытаются боротся, шифруя трафик, но не все и не всегда успешно. И софта для перехвата, отсеивания и сортировки чужого трафика через спутник очень много. Но ничего похожего для Ethernet-сетей пока мне не попадалось. Если я заблуждаюсь, и в современных сетях возможно ловить чужой трафик - ткните меня пожалуйста носом в софт, который это может и в сайт\форум, посвященный этому делу. Буду очень благодарен, и с удовольствием этим займусь. Это сообщение отредактировал(а) Temdegon - 22.1.2009, 03:01 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Temdegon, есть такая замечательная вещь как ARP spoofing, в вики подробно описана. Но очень легко обнаруживается и стучится по ушам
|
|||
|
||||
| DenwerD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.3.2008 Репутация: нет Всего: нет |
1) Лог
Мне кажется лучше в таких приложениях использовать буфферизованый вывод строк (BufferedStream) лога в файл. Строка определённого формата в которой сущности разделяются например символом ";" Сериализация здесь в принципе нафик не нужна ибо что вы будите делать например с 1000 объектами IPHEader, куда их девать? обратно в файл, придётся десериализовать. Вообщем лишняя нагрузка. Потом этот текстовый файл парсится в форме. 2) Насчёт трафика непонятно, какой трафик вы хотите отловить? 1.1 Только с конкретной машины 1.2 Всей локалки. В случае 1.2 нада инсталировать снифер на сервер который пропускает трафик из интернета в локалку. Тут можно отловить все HTTP, аську и т.д. Так делают файрволы. В 1.1 непонятно что понимается под словом трафик. Если принимается понятие трафика как количество бит пройденых через сетевую карту в единицу времени, то в режиме RAW на сокет должны валится всё что входит и выходит в/из сетевой карты. А дальше ваша фантазия что делать с эти множеством битов. |
|||
|
||||
| Flogrimm |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.1.2009 Репутация: нет Всего: нет |
Спасибо большое! Имелся в виду вариант 1.1, т.е. трафик конкретной машины.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |