Почему не удается привязать сокет к интерфейсу? - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь открыть необработанный сокет и привязать к нему мой беспроводной интерфейс.Это код, который я использую:

//opening socket
if ((sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == -1){
    //if socket fails give error
    perror("socket");
}

//binding socket to interface
if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, "wlp0s19f2u3", 4) < 0)
    perror("SIOCGIFHWBIND");

Но при компиляции и запуске с помощью sudo я получаю "SIOCGIFHWBIND: Нет такого устройства" .
Сначала я подумал, что это потому, что там я пропустил написание имени интерфейса, но мой вывод iwconfig:

wlp0s19f2u3  IEEE 802.11  Mode:Monitor  Frequency:2.462 GHz  Tx-Power=20 dBm 

, и это не проблема с режимом монитора, потому что выполнение кода в то время как мойБеспроводная карта находится в управляемом режиме, выдает тот же вывод, и мне нужно, чтобы интерфейс был в режиме монитора.
Пожалуйста, помогите и хорошего дня!

1 Ответ

0 голосов
/ 03 июня 2018

Спасибо Марк Сетчелл, оказалось, что 4 была из примера кода, где они использовали что-то вроде «eth0», который имеет 4 символа.Так что замена 4 на strlen () вашего интерфейса прекрасно работает.Еще раз спасибо.

...