Os deslocamentos do módulo iptables u32 são referenciados ao pacote menos o wrapper ethernet (menos o MAC de origem e de destino, 6 bytes cada, e o tipo ether, 2 bytes. Portanto, seu offset de 46 precisa ser ajustado por 14 e deve ser 32.
Agora, para uma verificação de integridade, encontre o tipo de byte de serviço, que conhecemos na área do u32 de as páginas man do iptables-extensions estão no offset 9 e também sabemos que é 0x11 (17) para o UDP. É no byte 0x17 (23) da sua imagem do wireshark. Contando a partir daí, também obtemos 32 como o deslocamento que você deve usar.
EDIT 1: Como o protocolo é UDP, você também precisa ajustar essa parte do seu comando iptables. Então:
sudo iptables -A PREROUTING -i eth0 -p udp --dport 443 -m u32 --u32 "32=0x2112A442" -j REDIRECT --to-port 3478
EDIT 2: No seu exemplo de captura de tela wireshark, a porta de destino é 5004, não 443. Portanto, o comando iptables ainda não funcionará para o seu exemplo de pacote específico. Talvez isto:
sudo iptables -A PREROUTING -i eth0 -p udp --dport 5004 -m u32 --u32 "32=0x2112A442" -j REDIRECT --to-port 3478