From 88c8fcfecedf5547b68f113398f1c412fa1ee573 Mon Sep 17 00:00:00 2001
From: Sophie Brun <sophie@offensive-security.com>
Date: Thu, 12 May 2022 10:59:03 +0200
Subject: [PATCH] New upstream version 5.3.9~git20220319.0958f29

---
 Makefile                |  4 ----
 README.md               | 27 +++++++++++++++++++++++++--
 core/rtw_br_ext.c       |  8 ++++++++
 core/rtw_mlme_ext.c     |  2 ++
 os_dep/linux/usb_intf.c |  3 ++-
 5 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index 2ac334b..d977ac9 100755
--- a/Makefile
+++ b/Makefile
@@ -10,10 +10,6 @@ EXTRA_CFLAGS += -Wno-unused
 EXTRA_CFLAGS += -Wno-vla
 EXTRA_CFLAGS += -Wno-date-time
 
-REDHAT_VER := $(shell cut -f4 -d" " /etc/redhat-release |cut -d"." -f1,2 )
-ifeq ($(REDHAT_VER), 7.9)
-EXTRA_CFLAGS += -DRHEL79
-endif
 
 GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
 ifeq ($(GCC_VER_49),1)
diff --git a/README.md b/README.md
index 0742ceb..2226130 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,24 @@
+If you are are taking "Learn Ethical Hacking From Scratch | Udemy" by Zaid Sabih and using Kali 2022 x64 Customized by zSecurity 1.0.7 and TP-Link TL-WN722N v2/v3 [Realtek RTL8188EUS], you might find this helpful. In the begining, I am able to enter monitor mode. However after a few days, I found out it doesn't allow to enter monitor mode. I think  TP-Link TL-WN722N v2/v3 have automatically updated its driver. Then, I find a video from David Bombal (https://www.youtube.com/watch?v=tYnjMiTTdms) but still can't perfectly solve the issue. However, I find below steps work fine for me.
+
+1. sudo apt update
+2. sudo apt upgrade 
+3. sudo apt-get dist-upgrade
+4. reboot
+5. sudo apt-get install linux-headers-$(uname -r)
+6. sudo apt install bc 
+7. sudo apt-get install build-essential
+8. sudo apt-get install libelf-dev
+10. sudo apt install dkms
+11. sudo rmmod r8188eu.ko 
+12. git https://github.com/drygdryg/rtl8188eus (This works for me 😂)
+13. cd rtl8188eus
+14. sudo -i
+15. echo 'blacklist r8188eu'|sudo tee -a '/etc/modprobe.d/realtek.conf'
+16. reboot
+17. cd rtl8188eus 
+18. sudo make && make install
+19. reboot 
+
 Like https://github.com/cccooo/rtl8812au-centos-7.6, forked from aircrack-ng/rtl8188eus and modified for CentOS 7.9
 as CentOS Kernel 3.10 contains many code from 4.x
 
@@ -27,8 +48,10 @@ as CentOS Kernel 3.10 contains many code from 4.x
 # Howto build/install
 1. You will need to blacklist another driver in order to use this one.
 2. `echo 'blacklist r8188eu'|sudo tee -a '/etc/modprobe.d/realtek.conf'`
-3. `make && sudo make install`
-4. Reboot in order to blacklist and load the new driver/module.
+3. Reboot
+4. cd rtl8188eus
+5. `make && sudo make install`
+6. Reboot in order to blacklist and load the new driver/module.
 
 # MONITOR MODE howto
 Use these steps to enter monitor mode.
diff --git a/core/rtw_br_ext.c b/core/rtw_br_ext.c
index 6509df3..532d6b3 100644
--- a/core/rtw_br_ext.c
+++ b/core/rtw_br_ext.c
@@ -15,9 +15,12 @@
 #define _RTW_BR_EXT_C_
 
 #ifdef __KERNEL__
+    #include <linux/version.h>
 	#include <linux/if_arp.h>
 	#include <net/ip.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
 	#include <net/ipx.h>
+#endif
 	#include <linux/atalk.h>
 	#include <linux/udp.h>
 	#include <linux/if_pppox.h>
@@ -948,6 +951,7 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
 			}
 		}
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
 		/*   IPX  */
 		if (ipx != NULL) {
 			switch (method) {
@@ -1016,8 +1020,12 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
 			}
 		}
 
+
 		/*   AARP  */
 		else if (ea != NULL) {
+#else
+		if (ea != NULL) {
+#endif
 			/* Sanity check fields. */
 			if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) {
 				DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n");
diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c
index da471c1..0c7273b 100644
--- a/core/rtw_mlme_ext.c
+++ b/core/rtw_mlme_ext.c
@@ -1831,11 +1831,13 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame)
 			ptable->func = &OnAuth;
 		else
 			ptable->func = &OnAuthClient;
+		_mgt_dispatcher(padapter, ptable, precv_frame);
 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
 	__attribute__ ((fallthrough));
 #else
 			__attribute__ ((__fallthrough__));
 #endif
+        break;
 	case WIFI_ASSOCREQ:
 	case WIFI_REASSOCREQ:
 		_mgt_dispatcher(padapter, ptable, precv_frame);
diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c
index 31e527a..24cf03b 100644
--- a/os_dep/linux/usb_intf.c
+++ b/os_dep/linux/usb_intf.c
@@ -159,7 +159,8 @@ static struct usb_device_id rtw_usb_id_tbl[] = {
 	{USB_DEVICE(0x2001, 0x3310), .driver_info = RTL8188E}, /* Dlink DWA-123 REV D1 */ 
 	{USB_DEVICE(0x2001, 0x3311), .driver_info = RTL8188E}, /* DLink GO-USB-N150 REV B1 */ 
 	{USB_DEVICE(0x2001, 0x331B), .driver_info = RTL8188E}, /* DLink DWA-121 REV B1 */ 
-	{USB_DEVICE(0x056E, 0x4008), .driver_info = RTL8188E}, /* Elecom WDC-150SU2M */ 	
+	{USB_DEVICE(0x056E, 0x4008), .driver_info = RTL8188E}, /* Elecom WDC-150SU2M */ 
+	{USB_DEVICE(0x7392, 0xB811), .driver_info = RTL8188E}, /* Edimax EW-7811UN v2 */
 #endif
 
 #ifdef CONFIG_RTL8812A