захватывать кадры Beacon с помощью сокетов Linux c - PullRequest
0 голосов
/ 24 октября 2018

Я хотел бы захватить кадры Beacon с моего маршрутизатора с помощью сокетов Linux C.

  1. Каковы определения открытия сокетов?Это уместно?sock_raw = сокет (PF_PACKET, SOCK_RAW, htons (ETH_P_ALL))

  2. Должен ли он находиться в режиме управления или в режиме мониторинга?

Большое спасибо

Tali ps Я не хочу реализовывать это с помощью сторонних библиотек, таких как libpcap.

1 Ответ

0 голосов
/ 14 июня 2019

Вот мой ответ, насколько мне известно:

1) Да.Вы правильно указали int sock_raw = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));

2) Ваше устройство должно быть в режиме мониторинга для захвата кадров маяка.Если на вашем Linux-компьютере установлен пакет aircrack-ng, вы можете использовать airmon-ng start [DEV NAME], чтобы перевести его в режим монитора или если установлены сетевые инструменты и т. Д., Вы можете сделать следующее (например, в качестве устройства, которое я хочу установить, используется «wlan0»)в режим монитора):

ifconfig wlan0 down 
iw wlan0 set type monitor 
ip link set wlan0 name wlan0mon && ifconfig wlan0mon up

Далее, если вы хотите продолжить использовать сокет режима монитора в C, вы можете использовать следующее:

struct ifreq ifr;
struct sockaddr_ll ll;
assert(sizeof(ifr.ifr_name) == IFNAMSIZ);

int sock_raw = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
strncpy(ifr.ifr_name, "wlan0mon", sizeof(ifr._ifr_name)); 
ioctl(sock_raw, SIOCGIFINDEX, &ifr);

ll.sll_ifindex = ifr.ifr_ifindex;
ll.sll_protocol = htons(ETH_P_ALL);
ll.sll_family = PF_PACKET;

bind(sock_raw, (struct sockaddr *)&ll, sizeof(ll));

Этот код C устанавливает необработанныйРазъем для использования в режиме монитора, затем привязывает его к устройству в режиме монитора.Теперь его можно использовать для отправки / записи кадров 802.11 и т. Д. Надеюсь, это поможет:)

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