Eu descobri que os cabeçalhos RadioTab não fazem parte de nenhum protocolo Dot11, mas são apenas adicionados pela interface de rede. E o motivo pelo qual obtive os cabeçalhos do RadioTab em pacotes de amostra do Wireshark.org e não da minha captura ao vivo do wireshark é porque alguns adaptadores de rede não adicionam RadioTap enquanto outros o fazem e o adaptador de rede do meu laptop não adiciona cabeçalhos RadioTab. Eu verifiquei isso com um novo adaptador WiFi externo e ele adicionou os cabeçalhos do RadioTap.
Se o adaptador não injetar informações adicionais à medida que captura quadros, nenhum cabeçalho de radiotap será adicionado.
Então, para a minha pergunta principal, como obter / definir a frequência de um pacote. Eu esperava que o Scapy tivesse essa opção, mas não, e não deveria. O motivo é que a frequência depende do que está definido no adaptador de rede. Então, o que eu fiz foi definir a frequência / canal do meu adaptador WiFi para outro. Meu adaptador WiFi externo pode funcionar em vários canais, então mudei cada um e confirmei com o cabeçalho RadioTap. Existem comandos / ferramentas simples do linux que me ajudaram a verificar os canais suportados da minha interface WiFi e mudar para um canal específico.
Para capturar / enviar pacotes em uma determinada frequência ou canal, você precisa alterar o canal de trabalho da sua interface e definir a interface sniffer / remetente em scapy para essa interface.
EDIT - Outros problemas que enfrentei e soluções:
Se você estiver no linux e quiser alterar o canal de trabalho da sua interface, precisará desativar o gerenciador de rede para essa interface e fazer isso Primeiro Adicione o seguinte trecho a /etc/network/interfaces
auto $iface
iface $iface inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
substitua $iface
pelo seu nome de interface. Isso permitirá que você controle a interface sozinho. E adicione as seguintes linhas a/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="Your_AP_SSID"
psk="Your_Passphrase"
freq_list=2412 2437 2462
}
Observe que 2412 2437 2462
são as frequências (canal 1, 6, 11 neste caso) para a sua interface escolher. Você pode editá-los na frequência desejada. Fonte . Mas primeiro você precisa verificar se sua interface suporta essas frequências. Para verificar isso
iwlist channel
Finalmente, depois que tudo estiver pronto.
sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="wlp3s0")
Isso enviará pacotes na frequência wlp3s0
definida.