É verdade que o driver b43 não suporta o BCM4360 (14e4: 43a0).
No entanto, o driver proprietário da Broadcom suporta esse chipset. Está no pacote do driver broadcom-sta-dkms
disponível no repositório não-livre do Debian Wheezy.
Um usuário do Kali tinha sucesso com este pacote para outro chipset BCM. Se funcionar para você, você pode modificar sua imagem ao vivo da Kali para incluí-la.
Caso contrário, ainda é possível usar o aircrack-ng dentro do Kali, se os pacotes de handshake forem capturados primeiro no Mac OS X usando tcpdump
. Aqui está um script de shell que irá capturar um handshake WPA em um MacBook Air, testado no OS X 10.11 (El Capitan):
#!/bin/sh
function usage() {
echo "usage: $(basename $0) <essid>"; exit
}
if [[ ! $(id -u) -eq 0 ]]; then echo "Must be run as root."; exit; fi
if [[ -z "$1" ]]; then usage; fi
echo "Scanning for access point..."
apbin=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
aplist=$($apbin -s)
matchct=$(echo "$aplist" | grep "$1" | wc -l)
if [[ ! "$matchct" -eq 1 ]]; then echo "Bad essid"; usage; fi
echo "Found $bssid."
essid=$(echo "$aplist" | grep "$1" | awk '{print $1;}')
bssid=$(echo "$aplist" | grep "$1" | awk '{print $2;}')
chan=$(echo "$aplist" | grep "$1" | awk '{print $4;}' | cut -d, -f 1)
capfl="$essid.cap"
if [[ -f "$capfl" ]]; then
read -p "'$capfl' exists. Overwrite? [y/N] " ow
case $ow in
[nN][oO]|'')
echo "Canceled"
exit
;;
*)
rm -f "$capfl"
;;
esac
fi
echo "Dissociating airport and tuning to channel $chan..."
$apbin -z -c $chan &>/dev/null
echo "Waiting for handshake packets..."
tcpdump "(type mgt subtype assocreq or ether proto 0x888e) and ether host $bssid" -U -i en0 -I -c 5 -w $capfl &>/dev/null
echo "Exiting."
echo "You may try running:"
echo "aircrack-ng -w $capfl"
(Se você quiser rodar o aircrack-ng no Mac OS X, você pode instalá-lo via Homebrew usando brew install aircrack-ng
.)
Se ainda não é suportado, acho que deveria ser possível corrigir este driver (no Linux e no Mac) para enviar quadros arbitrários e suportar a injeção geral de pacotes.
O binário do driver da Apple é baseado no driver proprietário da Broadcom usado no Linux; ou seja, eles compartilham as mesmas rotinas centrais, incluindo esta, no pseudocódigo simplificado:
wlc_senddeauth(ctx, arg2, arg3, arg4, arg5, arg6) {
int err, len, mi;
int temp_out;
len = wlc_iem_calc_len(*(ctx+0x858), arg2, 0xc0, 0, 0);
mi = wlc_frame_get_mgmt_int(ctx, 0xc0, arg4, arg6, 0, len+2, &temp_out, 0);
if (mi) {
err = wlc_iem_build_frame(*(ctx+0x858, arg2, 0xc0, 0, 0, 2, len);
assert(err == 0);
temp = arg3 ? *(arg3+0x20) : 0;
err = wlc_queue_80211_frag(ctx, mi, *(*(arg2+0x10)+0x18), arg3, temp, 0, 0, 0)
assert(err == 0);
}
}
Acho que você poderia fazer a engenharia reversa dos parâmetros de wlc_queue_80211_frag
usando a árvore de chamada da classe C ++ AirPort_Brcm4360
no binário do driver da Apple, localizado em:
/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4360.kext/Contents/MacOS/AirPortBrcm4360