O ARP estático é completamente desnecessário
Você conseguiu a primeira parte correta. Para obter o pacote WOL na rede, encaminhe o pacote vindo de uma porta específica para o endereço de broadcast da rede local (255.255.255.255) ou qualquer que seja o intervalo de sub-rede que você deseja que o acesso WOL seja ativado.
O endereço MAC de destino do pacote deve ser definido como transmissão via Ethernet ou FF: FF: FF: FF: FF: FF. O tipo de ethernet do pacote deve ser 0x0842 (Wake On Lan).
Então, para onde vai o MAC do computador que está sendo acordado?
No pacote mágico em si. Os pacotes WOL só foram realmente destinados a serem enviados através de uma rede local. Eles são cegos para qualquer protocolo acima da camada de link. Para contornar essa limitação, eles transmitem (transmissão ethernet não transmissão IP) para todos os computadores na rede e cada computador lê o pacote mágico para ver se ele está sendo chamado.
O conteúdo do pacote mágico contém 16 cópias do endereço MAC do computador que está sendo despertado.
A estrutura do quadro é a seguinte:
DA -> SA -> Type -> Magic Packet
Onde:
DA = FF:FF:FF:FF:FF:FF
SA = [whatever the source MAC is]
Type = 0x0842
Magic = [The actual destination MAC repeated 16x]
Se você quiser testar se os pacotes estão no formato certo, use o seguinte filtro no Wireshark:
ether dst FF:FF:FF:FF:FF:FF and ether proto 0x0842
Basicamente, o aplicativo WOL precisa ser capaz de criar um pacote que imita o endereço Ethernet Destination. Existem ferramentas on-line que podem fazer uma coisa dessas, mas eu não estou familiarizado com elas.
Observação: O motivo pelo qual eu sei muito sobre isso é porque sou o autor do analisador de WOL para SharpPcap (invólucro pcap em c #). Se houver demanda suficiente, eu poderia estender meu aplicativo de console para incluir o envio de pacotes (atualmente apenas sniffs) e torná-lo disponível como um projeto OSS.
Atualização: @ Anderson Anderson fez um bom ponto que eu esqueci de mencionar. Transmitir pacotes recebidos em uma LAN geralmente é uma má ideia. Esta solução funcionará, mas é apenas um truque para contornar as limitações do protocolo Wake On Lan.
A técnica que descrevi funcionará para qualquer computador na rede local como a WOL foi projetada, mas poderia potencialmente abrir sua rede para ser usada como um amplificador de ataque (Smurf / Fraggle / Papasmurf) se alguém para enviar um pacote especialmente criado para a porta WOL.
A abordagem de Evan Anderson é tecnicamente mais segura, mas é limitada a unicast.