From a253ec4c6cf7ecf01cd3f4e6162ccc617f05492b Mon Sep 17 00:00:00 2001 From: j4munoz Date: Sun, 25 Oct 2020 17:53:48 +0100 Subject: [PATCH] Add injection support Added injection support based on rtl8188eus driver modification for aircrack-ng from rofl0r: aircrack-ng/rtl8188eus@e48f669 Changes to be committed: modified: core/rtw_xmit.c modified: include/drv_conf.h --- core/rtw_xmit.c | 25 +++++++++++++++++++++---- include/drv_conf.h | 2 +- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index d51f2a3..7469ad6 100644 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -4882,9 +4882,11 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) unsigned char *pframe; u8 dummybuf[32]; int len = skb->len, rtap_len; - - - rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); +#ifdef CONFIG_MONITOR_MODE_XMIT + int consume; +#endif /* CONFIG_MONITOR_MODE_XMIT */ + if (likely(skb)) + rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); #ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) @@ -4899,13 +4901,25 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) if (unlikely(skb->len < rtap_len)) goto fail; +#ifdef CONFIG_MONITOR_MODE_XMIT + len -= sizeof(struct ieee80211_radiotap_header); + rtap_len -= sizeof(struct ieee80211_radiotap_header); + + while(rtap_len) { + consume = rtap_len > sizeof(dummybuf) ? sizeof(dummybuf) : rtap_len; + _rtw_pktfile_read(&pktfile, dummybuf, consume); + rtap_len -= consume; + len -= consume; + } +#else /* CONFIG_MONITOR_MODE_XMIT */ if (rtap_len != 12) { RTW_INFO("radiotap len (should be 14): %d\n", rtap_len); goto fail; } _rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header)); len = len - rtap_len; -#endif +#endif /* CONFIG_MONITOR_MODE_XMIT */ +#endif /* CONFIG_CUSTOMER_ALIBABA_GENERAL */ pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) { rtw_udelay_os(500); @@ -4945,6 +4959,9 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) dump_mgntframe(padapter, pmgntframe); fail: +#ifdef CONFIG_MONITOR_MODE_XMIT + rtw_endofpktfile(&pktfile); +#endif /* CONFIG_MONITOR_MODE_XMIT */ rtw_skb_free(skb); return 0; } diff --git a/include/drv_conf.h b/include/drv_conf.h index d7cbeaf..d53c1be 100644 --- a/include/drv_conf.h +++ b/include/drv_conf.h @@ -193,7 +193,7 @@ #endif #ifdef CONFIG_WIFI_MONITOR - /* #define CONFIG_MONITOR_MODE_XMIT */ + #define CONFIG_MONITOR_MODE_XMIT #endif #ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL