Hello all,
I am having trouble capturing data frames on 40 & 80 Mhz wide channels. My situation and efforts are described below.
WLAN cards used: Alfa AWUS036ACH, Alfa AWUS051NH (everything below was done with the AWUS051NH)
OS: Kali 2017.1, updated as of 9/5/17
Characteristics of the test WLAN:
- Apple 802.11n Time Capsule ( version 7.6.8 )
- Primary channel: 36
- Channel width: 20 & 40 MHz supported
wlan.ht.capabilities.short20 == 1
wlan.ht.capabilities.short40 == 1
- Secondary channel is above the primary channel
wlan.ht.info.secchanoffset == 0x1
- Non-greenfield STAs are present on the network
wlan.ht.info.greenfield == 1
When I connect the system to the WLAN as a regular client (Alfa AWUS051NH) it connects without issue and utilizes the 40Mhz channel. The output of iw dev when connected as a client is:
# iw dev
phy#0
Interface wlan0
ifindex 3
wdev 0x1
addr 00:c0:ca:32:be:73
type managed
channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
txpower 20.00 dBm
On a fresh reboot I place the adapter in monitor mode and capture packets using airodump-ng. I am able to capture to capture control frames (RTS, CTS, Block Ack) and management frames (Probe Request, Response, etc.) and I capture EAPOL frames (4-way handshake) without issue. I can also capture some data frames. When decrypted they include ARP, QoS Nulls, IPv6 Neighbor Solicitations, MDNS, and IPv6 Multicast Listener Reports. What I am missing are all the data frames. The unencrypted capture contains mostly RTS, CTS and Block ACKs (my explanation of why is explained below).
In an effort to capture data frames on the 40MHz channel I have done the following steps:
airmon-ng check kill
airmon-ng start wlan0
airodump-ng --bssid 5C:96:9D:68:12:34 --channel 36 wlan0mon -w testcap
When I run iw dev after these steps I get:
# iw dev
phy#0
Interface wlan0mon
ifindex 4
wdev 0x2
addr 00:c0:ca:32:be:73
type monitor
channel 36 (5180 MHz), width: 20 MHz (no HT), center1: 5180 MHz
txpower 20.00 dBm
So I tried to manually set the channel on both the device and the interface:
ifconfig wlan0mon down
iw wlan0mon set channel 36 HT40+
iw phy phy0 set channel 36 HT40+
ifconfig wlan0mon up
# iw dev
phy#0
Interface wlan0mon
ifindex 4
wdev 0x2
addr 00:c0:ca:32:be:73
type monitor
channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
txpower 20.00 dBm
# iw wlan0mon info
Interface wlan0mon
ifindex 4
wdev 0x2
addr 00:c0:ca:32:be:73
type monitor
wiphy 0
channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
txpower 20.00 dBm
After doing that I restart the capture:
airodump-ng --bssid 5C:96:9D:68:12:34 --channel 36 -w testcap wlan0mon
And, to my disappointment, everything is back to 20Mhz widths:
#iw wlan0mon info
Interface wlan0mon
ifindex 4
wdev 0x2
addr 00:c0:ca:32:be:73
type monitor
wiphy 0
channel 36 (5180 MHz), width: 20 MHz (no HT), center1: 5180 MHz
txpower 20.00 dBm
# iw dev
phy#0
Interface wlan0mon
ifindex 4
wdev 0x2
addr 00:c0:ca:32:be:73
type monitor
channel 36 (5180 MHz), width: 20 MHz (no HT), center1: 5180 MHz
txpower 20.00 dBm
I believe I know why I am getting the results I am getting: all of the captured frames are transmitted on the 20Mhz primary channel. When the transmitting node is sending data packets (HTTP, SMB, etc.) it is using the 40MHz channel and, with protection enabled, it is using RTS/CTS to do so. Airodump-ng is not seeing the data being transmitted because it is only monitoring the 20Mhz primary channel (and not the 40Mhz).
Neither the adapter nor the driver appear to be an issue as I can connect to and make use of the 40Mhz channel as a regular client. It is only when capturing in monitor mode that I run into an issue. So, I'm here, feeling a bit defeated, asking for some guidance. I searched through the aircrack-ng and Kali forums but didn't find an answer. I also Googled for a long while but came up equally empty-handed. If my Google skills are weak, please flame me and provide me a link.
Two questions:
1. Why am I unable to capture on the 40Mhz channel?
2. Is there anything I can do to get my adapter to capture on the 40Mhz channel rather then just the 20Mhz? I would like to be able to capture the data frames.
Side note: I am able to capture just fine (as expected) when channels are only 20Mhz wide. 80Mhz-wide 802.11ac channels exhibit the same problems as above when capturing with either of the Alfa adapters.