|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.08.2019, 18:41 | #1 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Режим "Promiscuous" сетевого адаптера
Всем привет!
Подскажите, на каком уровне включается "неразборчивый режим" сетевой карты, когда она принимает все пакеты, а не только по своему МАС-адресу? Подозреваю, что где-то между уровнями PHY и МАС сетевухи, но где именно и как его можно включить программно? Скачал даташиты на внешнюю RTL8139 и на чипсеты ICH/PCH (если сеть встроенная), но среди регистров LAN-контроллёра не нашёл даже упоминания о "Promiscuous mode". В регистре статуса есть только биты MAR/BAR/PAM - Multicast/Broadcast/Physical Address соответственно. Но статус только информирует (хотя и в нём нету неразборчивого), а задавать режим вроде должен регистр управления "Control", однако в нём тоже нет такого бита. Есть утилита "PCI-Scope", которая отображает значение всех регистров из конфигурационного пространства PCI - тоже инфы по-нулям. Гугл советует установить драйвер WinPcap, который включает этот режим - установил, драйвер висит в памяти и неразборчивый режим судя по-всему включился, т.к. появился сервис NPF. Как отловить процесс включения этого режима драйвером? Дизассемблировать дров толку нет, если не имеешь общего представления картины, поэтому и спрашиваю - может кто в курсе? Заранее благодарю!
Нашедшего выход - затаптывают первым..
|
01.08.2019, 19:20 | #2 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Я думаю что все карты изначально работают в этом режиме.
А Promiscuous mode это всего лишь флажок в драйвере. Либо уровнем ниже. Исключение RTL8139 Смещение 044h-047h Бит 0 AAP А вообще насколько помню драйвер включает все 6 битов с 0 по 5
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 01.08.2019 в 19:23. |
01.08.2019, 19:44 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Для встроенных сетевых карт
https://www.intel.ru/content/www/ru/...ev-manual.html Страница 264 руководства регистр RCTL бит 3 UPE promiscuous Тут по мимо MAC уровня есть ещё и фильтрация по IP так что битов которые надо включить по более чем RTL8139.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 01.08.2019 в 19:52. |
02.08.2019, 07:38 | #4 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Pavia, респект за информацию!!! особенно за ссылку..
Угу.. в даташите на 8139 есть такие, но софт "PCIScope" почему-то говорит, что они в резерве. Получается, что к её регистрам доступ через порты I/O чтоли? Что-то я совсем запутался.. У меня две сетевухи: встроенная RTL8101e, у которой регистры точно в MMIO, т.к. софт отображает её корректно. А вот вторая - внешняя RTL8139 и (судя по свойствам) её дров вообще урезанный. Вот их функционал: rtl8139.png Если собрать всё в кучу, то я пришёл к выводу, что на уровне регистров LAN-контроллёра, драйвер карты изначально настраивает её на неразборчивый режим "Promiscuous", а дальше зависит от параметров сокета. Чтобы включить этот режим, нужно создать сырой RAW-сокет c атрибутом "SIO_RCVALL", который и будет прослушивать все поступающие пакеты, не отбрасывая чужие. Фильтрация пакетов идёт на MAC-уровне сетевой карты, а точнее в его клиенте LLC (после PHY). На уровне IOCTL-запросов к сокету, код будет таким: Код:
Нашедшего выход - затаптывают первым..
Последний раз редактировалось R71MT; 02.08.2019 в 07:42. |
02.08.2019, 08:07 | #5 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
RTL8139 - имеет хитрое устройство. Она может работать и в MMIO режиме. Это определяется настройкой BAR регистра. БИОС настраивает на порты I/O а драйвер винды если захочет может перевести на MMIO. Насколько помню она этого неделает, а продолжает использовать порты.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
02.08.2019, 09:39 | #6 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..спасибо, я так и понял.
а как в винде работают с конфиг/пространством PCI ? например, могу я из юзера просто считать значения (без записи), или только драйвером через порты 0CF8-0CFC ?
Нашедшего выход - затаптывают первым..
|
05.08.2019, 17:28 | #7 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..так и не удалось мне включить программно "Promiscuous".
версия WinSock-2.0, система XP/SP3, bing отрабатывает нормально, а здесь получаю ошибку: Код:
Нашедшего выход - затаптывают первым..
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") | ZIRASS | PHP | 4 | 15.06.2016 14:23 |
Вывести количество дней "К" и суммарный пробег "S" С++ Builder XE4 (визуальный режим) | программирование | Помощь студентам | 1 | 24.01.2014 09:00 |
Вывести в порядке возрастания все целые числа которые находятся между "А" и "В" С++ (визуальный режим) | программирование | Помощь студентам | 5 | 23.01.2014 02:14 |
Вывести количество дней "К" и суммарный пробег "S" С++ Builder XE4 (визуальный режим) | программирование | Помощь студентам | 0 | 23.01.2014 02:04 |
Как отключать режим во вкладке "Реценцирование" - "Исправления в изм-ном документе"? | ipdima | Microsoft Office Word | 2 | 24.08.2012 14:29 |