Нюхать в с ++ - PullRequest
       3

Нюхать в с ++

0 голосов
/ 14 марта 2020

Я пытаюсь перехватить пакеты в CPP с помощью Winsock, но есть проблема. Когда я создаю сокет, он должен быть «сырым сокетом», чтобы его можно было перевести в «режим прослушивания»: sniffer = socket(AF_INET, SOCK_RAW, IPPROTO_IP);, но когда я создаю этот сокет, программа должна находиться в режиме администратора.

Я хотел знать, есть ли способ обойти это, или есть другой способ перехватить пакеты в CPP без необходимости в режиме администратора. Спасибо!

1 Ответ

1 голос
/ 14 марта 2020

Операция привилегированная, а на некоторых платформах она вообще недоступна. На платформе POSIX может потребоваться, чтобы пользователь был в определенной группе, а не обязательно root, на Linux вы можете запустить ls -l для соответствующего узла устройства, представляющего сетевой интерфейс, чтобы выяснить правильную группу пользователей (это может быть root).

Как правило, вам нужна библиотека захвата пакетов, которая поставляется с драйвером \ модулем пространства ядра, чтобы фактически обойти ее. Примером такой библиотеки является всемогущий libpcap, используемый Wireshark. Есть порты для других систем, включая Windows, которые называются WinPCap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...