I run wireshark and I see that I'm sending it correctly but my router changes the source IP that I spoofed to the public IP address and I can't find anyway to bypass this.
Seu roteador habilitado para NAT está fazendo seu trabalho aqui.
Se o seu roteador tiver um firmware que não seja estoque, como DD-WRT ou OpenWRT, provavelmente é possível com alguns comandos iptables
dizer ao seu roteador não ao NAT seu pacote da LAN, dadas certas condições - especialmente se o hardware do roteador for VLAN. capaz e você passa pelo trabalho de configurá-lo.
Caso contrário:
-
Provavelmente é mais fácil se você conectar seu modem a cabo ou DSL diretamente ao seu computador e tentar isso. NAT não pode atrapalhar nesse caso.
-
Se o seu roteador estiver executando o firmware Linux sem estoque, você poderá instalar as ferramentas que estiver usando para criar os pacotes falsificados no próprio roteador e enviar a partir daí diretamente da interface WAN, ignorando o NAT.
-
Alternativamente, você poderia configurar um PC com duas placas NIC como um roteador baseado em Linux e definitivamente ter qualquer ferramenta que você precisa ali na frente das interfaces WAN ou LAN.
Não tenho certeza de quais mecanismos de segurança os ISPs residenciais podem ter contra datagramas IP falsificados, mas se eles tiverem alguma medida em vigor, você os tropeçará e possivelmente chamará a atenção / colocará problemas. Você deve realmente colocar isso em um laboratório privado e testar lá.