I was playing a little bit with my old Raspberry Pi and recently bought an USB Wi-fi adapter: the Alfa AWUS1900 (the one with four antennas). So, I decided to set up my Pi for this Wi-fi adapter. I know that on Kali Linux we just have to run # apt-get install realtek-rtl88xxau-dkms
, but for the Raspberry Pi is not that straight forward because we need to compile the drivers for the ARM chip. I must say that the last Raspbian Stretch Lite works really good and better with the Re4son-Kernel. Some interesting Re4son “current stable” Kernel highlights are:
- Raspberry Pi 3 B+ support
- Supports armel (Pi 1, Zero, Zero W) and armhf (Pi 2, 3)
- Linux kernel 4.14.50
- Includes wifi injection patch, use mon0up to start monitor, mon0down to stop
- RTL8188EU driver (TL-WN722N v2) with monitor mode support
- RTL8812AU & RTL8811 & RTL8814AU with monitor & injection support
You can see more about Re4son Kernel here and if you want to install Kali just watch this video from NullByte
Let’s begin!
System base: Raspbian Stretch Lite
Like I said before, I’m using Raspbian Stretch Lite. For some time I’ve noticed that I never use the Desktop Environment anymore, so now I’m running the Lite version of Raspbian Stretch. If you want to download this version just click here and follow the Installation Guide.
Re4son Kernel
My first attempt was to compile the driver over a fresh installation but, although I did compile the drivers and the device was recognized, I was not able to get authenticated into any Access Point. If you are also at this point, Re4son Kernel is the solution. Installing this kernel is easy:
$ sudo su
# cd /usr/local/src
# wget -O re4son-kernel_current.tar.xz https://re4son-kernel.com/download/re4son-kernel-current/
# tar -xJf re4son-kernel_current.tar.xz
# rm re4son-kernel_current.tar.xz &&cd re4son-kernel_4*
# ./install.sh
# reboot
Let’s confirm:
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.14.50-Re4son-v7+ #4 SMP Thu Jul 19 11:07:19 AEST 2018 armv7l GNU/Linux
RTL8814AU
Now we need install the drivers. This repository from the aircrack-ng team works pretty good, and the installation is also really easy:
$ sudo apt install raspberrypi-kernel-headers bc
$ git clone https://github.com/aircrack-ng/rtl8812au
$ cd rtl8812au
$ make RTL8814=1 ARCH=arm
$ sudo make install RTL8814=1 ARCH=arm
$ sudo reboot
Adding RTL8814=1 ARCH=arm
is crucial because without it the make
command will not be able to find the linux headers for the armv7l
and it won’t compile.
Bonus: Connecting to WPA/WP2 network from the terminal
Because with a fresh installation of Raspbian Stretch Lite we don’t have a Desktop Enviroment I created a small bash script to connect to an Access Point, but first we need to generate the configuration and save it to a file:
$ mkdir conf
$ wpa_passphrase <ssid> [passphrase] > ./conf/[FILE].conf
Also, I want to see the logs:
$ mkdir logs
Now, save this script whereever you want as wifi_connect_SSID.sh
:
#!/bin/bash
if [ -z "$1" ]
then
echo "No arguments supplied."
exit 1
fi
INTERFACE=$1
sudo killall wpa_supplicant > /dev/null 2>&1 &
sudo ifconfig $INTERFACE up
sudo wpa_supplicant -i $INTERFACE -D nl80211 -c /home/pi/conf/[FILE].conf > /home/pi/logs/wifi.logs.txt 2>&1 &
Note: I have a configuration file for each SSID.
$ chmod a+x wifi_connect_SSID.sh
And finally, run the script as follow:
$ ./wifi_connect_SSID.sh wlan1
Change wlan1
for your interface.
If we do this right then we should have an IP address:
pi@raspberrypi:~ $ ifconfig wlan1
wlan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.5 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::2280:ace0:2f01:a299 prefixlen 64 scopeid 0x20<link>
ether 00:c0:ca:96:77:c4 txqueuelen 1000 (Ethernet)
RX packets 587 bytes 73762 (72.0 KiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 428 bytes 68216 (66.6 KiB)
TX errors 0 dropped 13 overruns 0 carrier 0 collisions 0
pi@raspberrypi:~ $ ping -c4 bing.com
PING bing.com (204.79.197.200) 56(84) bytes of data.
64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=1 ttl=113 time=72.3 ms
64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=2 ttl=113 time=69.7 ms
64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=3 ttl=113 time=74.4 ms
64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=4 ttl=113 time=72.4 ms
--- bing.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 69.723/72.239/74.433/1.705 ms
pi@raspberrypi:~ $
That’s all, too easy, right?