Création et envoi de paquets TCP bruts avec Golang (gopacket)
Pour créer des paquets TCP bruts personnalisés et les transmettre sur des sockets bruts à l'aide de gopacket, suivez ces étapes :
1. Création du paquet TCP brut
- Importez gopacket et net.
- Définissez les adresses IP source et de destination (par exemple, srcIP := net.ParseIP("127.0.0.1" )).
- Créez une couche de paquets IPv4 avec les adresses IP spécifiées et protocole.
- Créez une couche de paquets TCP avec les ports et indicateurs source et destination souhaités (par exemple, SYN : true).
- Définissez la couche réseau pour le calcul de la somme de contrôle de la couche TCP.
- Sérialisez les couches de paquets en utilisant gopacket.SerializeLayers() pour créer un paquet brut tampon.
2. Envoi du paquet brut
- Créez un socket brut à l'aide de net.ListenPacket("ip4:tcp", "0.0.0.0").
- Obtenez les informations sur l'adresse IP de destination en utilisant net.IPAddr{}.
- Écrivez le tampon de paquet brut sur le socket brut en utilisant WriteTo().
Dépannage :
- Assurez-vous que l'adresse IP source spécifiée est valide et non restreinte (par exemple, 127.0.0.1).
- Vérifiez que les en-têtes IP peuvent être inclus dans les paquets sortants en définissant le socket IP_HDRINCL option. Cela peut nécessiter un package tiers ou une configuration spécifique au système d'exploitation.
- Vérifiez si le paquet est correctement sérialisé et contient toutes les informations nécessaires, y compris les sommes de contrôle et les adresses IP correctes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!