
Correctif pour le mode moniteur et l'injection de paquets (Raw TX) sur Realtek RTL8852AE / rtw89 pour Linux / Kali Linux
English | Русская документация | Architecture Reference
Extension côté hôte du pilote Linux mac80211 et ensemble de correctifs de bogues pour le pilote sans fil rtw89 du noyau principal (Realtek RTL8852AE PCIe [10ec:8852], avec compatibilité architecturale pour RTL8852BE et RTL8852CE).
Active la capture complète de paquets Radiotap IEEE 802.11 en NL80211_IFTYPE_MONITOR pour Wireshark / tcpdump, la compatibilité complète avec airmon-ng / airodump-ng, ainsi que la transmission de trames brutes et l'injection de paquets conformes aux standards (IEEE80211_TX_CTL_INJECTED / aireplay-ng).
Fonctionne à 100 % côté pilote du noyau hôte en utilisant des images de firmware rtw89 non modifiées et signées cryptographiquement, issues du paquet officiel de distribution linux-firmware. Aucun rétro-correctif ni modification binaire du firmware n'est nécessaire.
[!TIP] 100 % fonctionnel sous Kali Linux : les captures d'écran ci-dessous montrent une exécution réelle sur un système en production sous Kali Linux (noyau 7.1.5+kali-amd64) avec un adaptateur sans fil PCIe Realtek RTL8852AE (
[10ec:8852]).
Capture de paquets 802.11 en direct montrant la réception promiscuous complète des trames de gestion (Beacons, Probe Requests/Responses), de contrôle (ACK, Block Ack, RTS, CTS) et de données à travers les BSSID, avec les métadonnées complètes de RSSI par antenne (-18 dBm, -24 dBm) et de fréquence de canal (2462 MHz / CH 11) :

aireplay-ng -9)Test d'injection de paquets de diagnostic IEEE 802.11 réussi montrant 100 % de livraison des trames (30/30 probe requests acquittées avec des temps de ping inférieurs à 2 ms) contre des AP actifs, confirmé par verify_monitor_diag.py et aireplay-ng :

Des milliers d'utilisateurs de Linux et de Kali Linux signalent que les ordinateurs portables Wi-Fi 6 modernes équipés d'adaptateurs Realtek RTL8852AE échouent lors de l'exécution de airmon-ng ou de tentatives d'injection de paquets. Problèmes amont courants dans lwfinger/rtw89 et les noyaux Linux principaux :
Grâce à une rétro-ingénierie détaillée des registres matériels et à l'analyse du protocole de communication du firmware RISC-V rtw89, ce projet résout les quatre causes racines entièrement dans le pilote du noyau hôte :
reg.h / mac.c)
ADDR_CAM matériel. Le déchargement du scan matériel peut également laisser le filtre de paquets RX de la bande 0 en pause (R_AX_PKT_CTRL_B0_PAUSE).rtw89_mon_program_mac_rx_tx_regs() reconfigure R_AX_RX_FLTR_OPT (0xCE20), R_AX_CTRL_FLTR (0xCE24), R_AX_MGNT_FLTR (0xCE28) et R_AX_DATA_FLTR (0xCE2C) avec le masque promiscuité 0x55555555, respecte FIF_FCSFAIL et rétablit automatiquement l'état du filtre lors des changements de canal (rtw89_set_channel()).vif NULL lors de l'émission en mode moniteur (mac80211.c & core.c)
rtw89_ops_tx() et rtw89_core_tx_write(), la macro vif_to_rtwvif(vif) était évaluée inconditionnellement dans les déclarations de variables locales avant de vérifier si info->control.vif est NULL (comportement standard pour l'injection Radiotap de mac80211).rtw89_mon_resolve_tx_vif() résout le VIF moniteur actif avant le déréférencement, évitant ainsi les plantages du noyau.TXWD_INFO manquant dans rtw89_core_tx_update_injection() (core.c)
mac80211 transmet s8 rates[0].idx = -1 (signé). Le code amont le convertissait en u8 (255), écrivant un indice de débit matériel invalide, et omettait desc_info->en_wd_info sur les trames non de gestion.rtw89_mon_fixup_tx_desc() sélectionne un débit matériel valide (par défaut RTW89_HW_RATE_OFDM6 / 6,0 Mbps), force en_wd_info / use_rate / dis_data_fb et limite les retransmissions matérielles (tx_cnt_lmt = 1) lorsque IEEE80211_TX_CTL_NO_ACK est défini.mac_id moniteur non initialisé et verrou de veille (fw.h)
IEEE80211_HW_WANT_MONITOR_VIF) allouent un mac_id et un port matériel, mais ne configurent jamais les tables CMAC/DMAC et n'enregistrent pas le lien auprès du planificateur du firmware. Le firmware maintient la file d'émission en pause.rtw89_mon_add_vif_post() programme h2c_default_cmac_tbl / h2c_default_dmac_tbl, enregistre le rôle via rtw89_fw_h2c_join_info() en utilisant RTW89_SELF_ROLE_AP avec RTW89_NET_TYPE_NO_LINK (contournant les vérifications de délai d'expiration des balises du rôle client tout en laissant l'émission de balises désactivée), réactive le MACID via rtw89_fw_h2c_macid_pause() et efface R_AX_MACID_SLEEP_0 (0xC2C0).Le patcheur conscient de l'AST et des accolades (scripts/patch_rtw89.py) inspecte core.h et mac80211.c au moment de la compilation et s'adapte automatiquement aux deux générations du pilote amont :
| Génération d'API | Versions du noyau | Architecture de verrouillage et de VIF | Exemples de distributions |
|---|---|---|---|
| API Gen 1 | Linux 6.1 – 6.10 | struct rtw89_vif, rtwdev->mutex | Debian 12 (Bookworm), Ubuntu 22.04 LTS (HWE) |
| API Gen 2 | Linux 6.11 – 7.x+ & lwfinger/rtw89 | MLO struct rtw89_vif_link, pure_monitor_mode_vif, wiphy_lock | Kali Linux 2024+, Ubuntu 24.04+, Arch Linux, Fedora |