Ubuntu 14.04 64, Aicrack-ng одной из последних версий, три адаптера под rt2800usb драйвером. Все работает замечательно, кроме одной вроде простой вещи. Попытался тут попробовать «пропинговать» внешние устройства (как АР так и STA) через связку RTS/CTS — пакеты и обнаружил следующую проблему:
драйвер устройств ни в какую не хочет передавать одиночные RTS, всегда ждет когда их наберется ровно 15 штук и только после этого выкидывает их в эфир всем скопом, соотвественно на другом конце возникают проблемы с обработкой, абоненты слишком частых RTS не любят.
Инъекции любых других пакетов проходят железно. Если логировать выводы самого приложения, то оно передает пакет на дескриптор устройства нормально. Взял код aireplay-ng, закомментил там в функции тестирования соединений все не относящееся к RTS, собрал, запустил, то же самое — wireshark показывает, что пакеты передаются строго по 15 штук. Если запускать передачу в цикле и ставить между write на сокет устройства задержку 10 микросек, то все те же наборы по 15 пакетов с задежкой между сериями около 2.8 секунд.
Проверял на всех 3 адаптерах, запускал даже на Android под Nethunter — везде одно и тоже.
В стандарте про какие-то ограничения ничего не нашел, в гугле тоже.