
ترقيع وضع المراقبة وحقن الحزم (Raw TX) لـ Realtek RTL8852AE / rtw89 على Linux / Kali Linux
English | Русская документация | Architecture Reference
امتداد لبرنامج تشغيل mac80211 على جانب المضيف في Linux ومجموعة تصحيحات لإصلاح الأخطاء لبرنامج التشغيل اللاسلكي rtw89 في النواة الرئيسية (Realtek RTL8852AE PCIe [10ec:8852]، مع توافق معماري مع RTL8852BE و RTL8852CE).
يُمكّن التقاط حزم Radiotap الكامل لوضع NL80211_IFTYPE_MONITOR في IEEE 802.11 لـ Wireshark / tcpdump، والتوافق الكامل مع airmon-ng / airodump-ng، وإرسال الإطارات الخام / حقن الحزم المتوافق مع المعايير (IEEE80211_TX_CTL_INJECTED / aireplay-ng).
يعمل بنسبة 100% على جانب برنامج تشغيل نواة المضيف باستخدام صور firmware rtw89 غير المعدّلة والموقّعة تشفيرياً من حزمة linux-firmware الرسمية للتوزيع. لا حاجة إلى إعادة تصحيح الـ firmware أو تعديل الملفات الثنائية.
[!TIP] يعمل بكامل وظائفه في Kali Linux: تُظهر لقطات الشاشة أدناه التنفيذ الفعلي على نظام حي يعمل بـ Kali Linux (Kernel 7.1.5+kali-amd64) مع محول لاسلكي Realtek RTL8852AE PCIe (
[10ec:8852]).
التقاط حزم 802.11 مباشر يُظهر استقبالاً كاملاً في الوضع المختلط لإطارات الإدارة (Beacons، Probe Requests/Responses)، والتحكم (ACK، Block Ack، RTS، CTS)، وإطارات البيانات عبر BSSIDs، مع بيانات وصفية كاملة لـ RSSI لكل هوائي (-18 dBm، -24 dBm) وتردد القناة (2462 MHz / CH 11):

aireplay-ng -9)اختبار تشخيصي ناجح لحقن حزم IEEE 802.11 يُظهر تسليم إطارات بنسبة 100% (30/30 من طلبات probe تم الإقرار بها بأزمنة ping أقل من 2ms) ضد نقاط وصول نشطة، مؤكداً بواسطة verify_monitor_diag.py و aireplay-ng:

يُبلغ آلاف مستخدمي Linux و Kali Linux عن فشل حواسيب Wi-Fi 6 المحمولة الحديثة المزودة بمحولات Realtek RTL8852AE عند تشغيل airmon-ng أو محاولة حقن الحزم. المشكلات الشائعة في الإصدارات الأصلية في lwfinger/rtw89 ونواة Linux الرئيسية:
من خلال الهندسة العكسية التفصيلية لسجلات العتاد وتحليل بروتوكول اتصال firmware rtw89 الخاص بـ RISC-V، يحل هذا المشروع الأسباب الجذرية الأربعة بالكامل في برنامج تشغيل نواة المضيف:
reg.h / mac.c)
ADDR_CAM في العتاد. كما يمكن أن يترك تفريغ مسح العتاد مرشّح حزم الاستقبال للنطاق 0 موقوفًا (R_AX_PKT_CTRL_B0_PAUSE).rtw89_mon_program_mac_rx_tx_regs() تهيئة R_AX_RX_FLTR_OPT (0xCE20)، وR_AX_CTRL_FLTR (0xCE24)، وR_AX_MGNT_FLTR (0xCE28)، وR_AX_DATA_FLTR (0xCE2C) بقناع الوضع المختلط 0x55555555، وتحترم FIF_FCSFAIL، وتعيد تأكيد حالة المرشّح تلقائيًا عبر تبديلات القنوات (rtw89_set_channel()).vif بقيمة NULL عند إرسال وضع المراقبة (mac80211.c وcore.c)
rtw89_ops_tx() وrtw89_core_tx_write()، كان الماكرو vif_to_rtwvif(vif) يُقيَّم دون شرط في تعريفات المتغيرات المحلية قبل التحقق مما إذا كان info->control.vif يساوي NULL (وهو السلوك القياسي لحقن Radiotap في mac80211).rtw89_mon_resolve_tx_vif() واجهة المراقبة النشطة VIF قبل إلغاء الإشارة، مما يمنع انهيارات النواة.TXWD_INFO في rtw89_core_tx_update_injection() (core.c)
mac80211 القيمة الموقّعة s8 rates[0].idx = -1. حوّلها الكود الأصلي إلى u8 (255)، مما كتب فهرس معدل عتاد غير صالح، وأغفل desc_info->en_wd_info في الإطارات غير الإدارية.rtw89_mon_fixup_tx_desc() معدل عتاد صالحًا (بافتراض RTW89_HW_RATE_OFDM6 / 6.0 Mbps افتراضيًا)، وتؤكد en_wd_info / use_rate / dis_data_fb، وتحدّ من إعادة محاولات العتاد (tx_cnt_lmt = 1) عند ضبط IEEE80211_TX_CTL_NO_ACK.mac_id غير مهيأ لوضع المراقبة وقفل السكون (fw.h)
IEEE80211_HW_WANT_MONITOR_VIF) mac_id ومنفذ عتاد، لكنها لا تهيئ أبدًا جداول CMAC/DMAC ولا تسجّل الرابط لدى مجدول البرنامج الثابت. يُبقي البرنامج الثابت قائمة انتظار الإرسال TX موقوفة.rtw89_mon_add_vif_post() كلاً من h2c_default_cmac_tbl / h2c_default_dmac_tbl، وتسجّل الدور عبر rtw89_fw_h2c_join_info() باستخدام RTW89_SELF_ROLE_AP مع RTW89_NET_TYPE_NO_LINK (متجاوزةً فحوصات مهلة إشارة الدور العميل مع إبقاء إرسال الإشارة معطّلًا)، وتلغي إيقاف MACID عبر rtw89_fw_h2c_macid_pause()، وتمسح R_AX_MACID_SLEEP_0 (0xC2C0).يفحص الراقع الواعي بـ AST والأقواس (scripts/patch_rtw89.py) الملفين core.h وmac80211.c وقت البناء ويتكيّف تلقائيًا مع كلا جيلي برنامج التشغيل الأصليين:
| جيل واجهة البرمجة | إصدارات النواة | بنية القفل وVIF | أمثلة التوزيعات |
|---|---|---|---|
| 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 |
rtw89-monitor-injection/
├── src/
│ ├── rtw89_mon.h # Extension API declarations & autoconf bridge
│ └── rtw89_mon.c # MAC RX filter, H2C monitor context & TX descriptor fixups
├── scripts/
│ ├── patch_rtw89.py # AST/brace-aware source integrator (--detect-only, --apply, --revert)
│ ├── build_module.sh # Kbuild build, live reload, /lib/modules/.../updates installer
│ └── verify_monitor_diag.py # IEEE 802.11 Radiotap RX & single Null-Data diagnostic verifier
├── patches/
│ └── linux-7.1-rtw89-monitor.diff # Reference unified diff for Linux 6.11 - 7.x+
├── tests/
│ └── test_patch_rtw89.py # Automated Gen 1 / Gen 2 patch & revert unit tests
├── docs/
│ ├── ARCHITECTURE.md # Register, H2C, and mac80211 flow documentation
│ └── README.ru.md # Russian documentation
├── README.md # English documentation
└── README_RU.md # Russian documentation (root link)