This image suggests the header length of a WLAN packet is 20 bytes.
Não, isso sugere que o cabeçalho WLAN tem 30 bytes de comprimento. Mais precisamente, é até 30 bytes de comprimento, embora nem todos os pacotes tenham todos os quatro campos de endereço MAC, portanto o cabeçalho pode ser mais curto. (Ele também pode ser mais longo, com campos de Controle de QoS e 802.11n e mais tarde, mas esses vêm após os endereços MAC.)
Assim, como Spiff indica, você precisa capturar pelo menos 30 bytes para ter certeza de que obterá todos os endereços MAC.
However, there appears to be a preamble and a PLCP header.
Aqueles não aparecem na captura.
Viewing captured packets with Wireshark reveals that there's a Radiotap header (34 or 37 bytes long in my file),
Sim, se seus pacotes tiverem um cabeçalho Radiotap, você terá que capturar isso além do cabeçalho 802.11, e o tamanho do cabeçalho do Radiotap será, como notas do Spiff, dependentes do hardware, do driver e do modo como o o pacote é recebido ou transmitido.
Então, SE é possível fazer isso, você deve capturar apenas com o cabeçalho 802.11. Isso pode ou não ser possível, dependendo de qual sistema operacional você está usando (o * BSD e o OS X devem permitir a captura apenas com cabeçalhos 802.11, o Linux pode apenas permitir que você obtenha os cabeçalhos do Radiotap).
and a MAC header of more than 20 bytes.
Sim, conforme indicado, o diagrama em questão não não sugere que o cabeçalho tenha (no máximo) 20 bytes de comprimento.