ОС Contiki: установите режим Promiscuous и получите все пакеты UDP - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь сделать следующее:

a) Установите Contiki в беспорядочном режиме.

b) Затем извлекаются все пакеты UDP и RPL, отправленные не только текущему узлу, но и между двумя другими узлами в пределах дальности связи.

У меня есть следующий код:

NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, 0);   
simple_udp_register(&unicast_connection, 3001,
                  NULL, 3000, receiver);

, где получатель является соответствующей функцией обратного вызова. Я могу собирать пакеты UDP, отправленные текущему узлу, но все еще не могу получать пакеты, отправленные между другими узлами в моем диапазоне связи.

1 Ответ

0 голосов
/ 27 апреля 2018

Установка RADIO_PARAM_RX_MODE только контролирует, какие пакеты отфильтровывает драйвер радиосвязи. В сетевом стеке ОС имеется несколько уровней, из которых драйвер радиосвязи является только первым. Следующими являются RDC и MAC, которые по-прежнему отфильтровывают пакеты, адресованные другим узлам, и нет API, чтобы отключить это.

Решение состоит в том, чтобы либо изменить MAC, чтобы отключить сброс пакетов, не адресованных в локальный режим, либо написать свой собственный простой MAC. Последнее - то, что делает Sensniff (анализатор пакетов Contiki) - см. Его README и исходный код . Кстати, если вы просто хотите регистрировать все полученные пакеты, просто используйте Sensniff!

...