tcpdump на интерфейсе режима мониторинга – ничего не зафиксировано

Я использовал tcpdump (версия 4.1.1), чтобы попытаться захватить беспроводные кадры из интерфейса режима монитора, настроенного с помощью airmon-ng. Я говорю «попытка», потому что до сих пор ничего не происходило. Это очень странно:

tcpdump -i mon0

Вышеупомянутая команда работает нормально. Я вижу все маяки и запросы зонда и каждый другой кадр, который можно представить на экране. Однако, когда я пытаюсь записать вывод в файл захвата, используя

tcpdump -i mon0 -w captures.cap

абсолютно ничего не захватывается, включая пакеты уровня 3, содержащие фактические данные . Когда я убиваю tcpdump, это дает мне

13507 packets captured
13507 packets received by filter
0 packets dropped by kernel

(13507 – произвольное число в этом случае) и полностью пустой файл захвата.

Однако, когда я выполняю захват с помощью tshark или wirehark на одном и том же интерфейсе, кадры записываются в файлы без каких-либо проблем.

Я бы предпочел использовать tcpdump вместо wirehark, поскольку он не имеет накладных расходов на графический интерфейс и имеет параметр «-z», который позволяет мне взять файл захвата и передать его сценарию оболочки, который копирует его на другой компьютер в моей сети. Подобной функциональности нет с tshark или wirehark, и я очень хотел бы избежать написания программы для проверки существования файла захвата.

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

Кажется, что-то не так. На моем Ubuntu следующее работает хорошо.

 sudo tcpdump -w ./test.cap 

Возможно, вы можете попробовать

 sudo tcpdump -U -w ./test.cap 

JP

Вы пробовали airodump-ng?

Не уверен, использует ли libpcap как библиотеку захвата, но использует формат файла pcap и имеет много вариантов выбора канала, фильтрации bssid и т. Д.