Вопрос или проблема
Как я могу это сделать? Я вижу сообщения о том, как включить это с помощью Apple802.11.framework
, но ничего о том, как это отключить. Я запустил wash и теперь застрял в режиме мониторинга. Пожалуйста, помогите!
sudo ifconfig en0 -promisc
Возвращает «неправильное значение», возможно, я использую неверную команду? Каков синтаксис и команда для режима мониторинга? Мне нужно делать это через фреймворк вместо этого?
Он остается в режиме мониторинга или промискуитета только тогда, когда работающий процесс удерживает его в этом режиме. Инструмент, который вы использовали, вероятно, все еще работает, или запустил фоновый процесс, который все еще выполняется.
Определите и остановите этот процесс, и все вернется к нормальному режиму.
Он остается в режиме мониторинга или промискуитета только тогда, когда работающий процесс удерживает его в этом режиме.
Хотя это верно в большинстве случаев, когда мы запускаем (на El Capitan):
# sudo tcpdump -p -I -i enX -y IEEE802_11
Интерфейс может застрять в режиме мониторинга после выхода tcpdump (где X
– беспроводная сетевая карта, поддерживающая режим мониторинга). Обратите внимание, что я говорю “может”. Это не ошибка. Несколько раз он возвращался в нормальный режим. Большинство раз – нет.
После этого выполнение этой команды исправило это (что является моим ответом на ваш вопрос):
# sudo tcpdump -I -i enX -p
Это привело нас к выводу, что что-то не так с tcpdump или Mac OS X и их интерфейсом друг с другом (проблема может также быть в libpcap, который находится между ними).
Мы продолжили читать исходный код libpcap и обнаружили множество ценных аспектов режима мониторинга на Mac OS X, которые, в свою очередь, указали нам на то, что выбор определенного DLT-режима (с использованием флага -y на tcpdump) мог привести к тому, что Mac OS X переводит интерфейс в режим мониторинга (без дополнительной работы libpcap). Кроме того, в отличие от других систем, на Mac OS X не происходит специального очистки состояния режима мониторинга в libpcap.
В нашем случае крайне важно, чтобы мы могли получать управляющие кадры 802.11 (запросы на зондирование) и при этом поддерживать ассоциацию и подключение к базовой станции.
В конце концов мы разработали программу, которая напрямую взаимодействует с libpcap и просто запрашивает режим мониторинга pcap_set_rfmon(pcap, 1)
(без выбора DLT-режима) перед активацией захвата на интерфейсе. При выходе из программы просто закрывается дескриптор захвата и все возвращается в нормальный режим (глаз Саурона исчезает), а сетевая карта остается подключенной к сети. Доступ в Интернет работает на протяжении всего выполнения.
Ответ или решение
Когда вы работаете с сетевыми адаптерами на macOS, поддержка поддержки режимов мониторинга и промискуитетного режима может вызвать некоторые сложности, особенно если вы столкнулись с необходимостью отключить их и вернуть адаптер в нормальный режим. Рассмотрим, как это сделать на примере операционной системы OS X Yosemite.
Проблема
Ваша сеть застревает в режиме мониторинга после запуска таких утилит, как wash
или tcpdump
, и вы не можете вернуть её в нормальное состояние. Попытка использовать команду sudo ifconfig en0 -promisc
приводит к ошибке "bad value".
Решение
-
Проверка запущенных процессов: Обычно сетевой интерфейс остается в режиме мониторинга, если какой-либо процесс удерживает его в этом состоянии. Проверьте запущенные процессы, которые могут использовать ваш сетевой адаптер. Вы можете сделать это, используя следующую команду:
ps aux | grep tcpdump
или
lsof | grep Apple802.11
Определите и завершите эти процессы с помощью команды
kill
. -
Использование
tcpdump
для восстановления: Иногдаtcpdump
не корректно завершает работу и оставляет сетевой интерфейс в режиме мониторинга. Попробуйте запустить следующую команду, чтобы вернуть адаптер в нормальное состояние:sudo tcpdump -I -i enX -p
Эта команда заставляет
tcpdump
деактивировать режим мониторинга, который он может устанавливать по умолчанию. -
Интерфейс с libpcap: Если вышеперечисленные шаги не помогают, попробуйте непосредственно взаимодействовать с libpcap. Напишите небольшую программу, которая использует
pcap_set_rfmon
для сброса режима мониторинга. Убедитесь, что при завершении программы выполняется закрытие захвата, чтобы интерфейс возвращался в нормальный режим.
Важные замечания
- Режимы DLT (Data Link Type): В некоторых случаях выбор определенного DLT (например, через ключ
-y
вtcpdump
) может автоматически активировать режим мониторинга. Избегайте этого, если вам это не требуется. - Актуальность инструментов: Убедитесь, что вы используете последние версии утилит и библиотек, таких как
libpcap
, так как обновления могут содержать исправления известных проблем.
Заключение
Работа с режимами сетевого интерфейса на macOS может потребовать дополнительных манипуляций, особенно если требуется переключение между режимами. Используя команды и методы, описанные выше, вы сможете успешно управлять режимами вашего сетевого адаптера и решать возникающие проблемы. Всегда следите за процессами, которые могут удерживать адаптер в нежелательном состоянии, и при необходимости применяйте специализированные инструменты для корректировки этих настроек.