Contexte :
J'utilise Scapy pour tester un dispositif réseau qui peut reboucler les paquets de manière sélective en intervertissant les MAC source/dest, les adresses IP et les numéros de port de la couche 4. L'échange peut être sélectionné pour layer_2_only
, layers_2_and_3
, layers_2_3_and_4
. Je fais tourner scapy sur un serveur, transmettant des paquets à l'appareil et validant que les paquets renvoyés ont les champs source/dest appropriés permutés en fonction de la configuration.
Problema:
Le scapy srploop()
qui envoie des paquets et reçoit des correspondances, fonctionne bien pour des types de messages tels que PING et ARP. Je constate que si je transmets un paquet UDP et que les ports source/dest ne sont pas inversés par le dispositif de bouclage, alors Scapy ne traite pas le paquet bouclé comme une correspondance. Lorsque les numéros de port sont inversés par le dispositif de bouclage, les paquets sont détectés comme des correspondances.
Questions :
-
Existe-t-il un moyen de surcharger ou d'influencer la logique de correspondance des paquets de scapy ? Par exemple, il serait utile de pouvoir désactiver la correspondance au niveau de la couche 4. J'ai regardé la documentation et je n'ai rien trouvé qui suggère que c'est possible.
-
Existe-t-il un autre moyen d'y parvenir dans Scapy ? J'ai expérimenté l'utilisation de
send()
suivi desniff()
mais je n'ai pas réussi à capturer les réponses en utilisant cette méthode.