Recommended Adapters
March 19, 2014 ยท View on GitHub
airpcap-nl
airpcap-nl is an implementation of core parts of the Airpcap Windows library for nl80211 drivers in Linux. It provides a convenience abstraction for creating and using monitor interfaces for wireless packet captures on 802.11abgn devices.
Recommended Adapters
Any adapter with good mac80211/cfg80211 support will work with this library. No wext-only drivers will work! You should convert your application to use lorcon for that purpose.
The adapters I have had most success with have chipsets supported by ath9k(_htc) and iwlagn. I have had limited success with rt2x00 adapters, but that is mostly due to recent adapters being relatively unsupported.
Implementation status
Supported calls (with some caveats):
-
AirpcapGetVersion
-
AirpcapGetLastError
-
AirpcapGetDeviceList
-
AirpcapFreeDeviceList
-
AirpcapOpen
-
AirpcapClose
-
AirpcapGetDeviceCapabilities
-
AirpcapGetLinkType
- Always returns AIRPCAP_LT_802_11_PLUS_RADIO.
-
AirpcapGetDeviceMacFlags
- Always returns AIRPCAP_MF_MONITOR_MODE_ON set, AIRPCAP_MF_ACK_FRAMES_ON cleared.
-
AirpcapGetFcsPresence
- Always returns TRUE.
-
AirpcapSetFcsValidation
- Does not support AIRPCAP_VT_ACCEPT_CORRUPT_FRAMES.
-
AirpcapGetFcsValidation
-
AirpcapGetDecryptionState
- Always returns AIRPCAP_DECRYPTION_OFF.
-
AirpcapSetDeviceChannel
-
AirpcapGetDeviceChannel
-
AirpcapSetDeviceChannelEx
-
AirpcapGetDeviceChannelEx
-
AirpcapGetDeviceSupportedChannels
-
AirpcapConvertFrequencyToChannel
-
AirpcapConvertChannelToFrequency
-
AirpcapGetMacAddress
-
AirpcapSetTxPower
-
AirpcapGetTxPower
Stubbed calls:
-
AirpcapSetLinkType
- mac80211 does not support anything but AIRPCAP_LT_802_11_PLUS_RADIO
-
AirpcapSetDeviceMacFlags
- mac80211 does not support frame acknowledgement in monitor mode AFAIK. It may be possible to support this with an additional managed interface.
-
AirpcapSetFcsPresence
- mac80211 cannot configure the driver either way. Most drivers do always return frames with FCS.
-
AirpcapSetDeviceKeys
-
AirpcapGetDeviceKeys
-
AirpcapSetDriverKeys
-
AirpcapGetDriverKeys
-
AirpcapSetDecryptionState
- We do not support hardware decryption.
-
AirpcapSetKernelBuffer
-
AirpcapGetKernelBufferSize
-
AirpcapSetMinToCopy
-
AirpcapGetReadEvent
- These calls don't make sense outside of the Airpcap driver model.
-
AirpcapSetFilter
-
AirpcapRead
-
AirpcapGetStats
- These calls are all available in libpcap. Without having access to all
capture handles open for this device, there's no way to implement
these. Equivalent:
- AirpcapSetFilter: pcap_compile/pcap_setfilter
- AirpcapRead: pcap_next, pcap_next_ex
- AirpcapGetStats: pcap_stats
- These calls are all available in libpcap. Without having access to all
capture handles open for this device, there's no way to implement
these. Equivalent:
-
AirpcapGetLedsNumber
-
AirpcapTurnLedOn
-
AirpcapTurnLedOff
- We don't have any access to the LEDs in a consistent way, AFAIK. Some mac80211 drivers may support toggling the LEDs, but it's too much hassle for a capture interface. We simply return 0 for AirpcapGetLedsNumber.
Stubbed, but will eventually be supported:
-
AirpcapSetMacAddress
- Easily implemented.
-
AirpcapWrite
- For now, this can be replaced in application code via pcap_inject.
Stubbed, but may eventually get supported:
-
AirpcapGetDeviceTimestamp
- This would be incredibly useful, but I have no idea how to get the current adapter TSFT from mac80211. Many drivers support it and it is used for radiotap, but there is no exposure in nl80211.
-
AirpcapStoreCurConfigAsAdapterDefault
- This could be stored on the filesystem and restored on AirpcapOpen.