Je cherche à écrire une application utilisateur qui peut accrocher dans une pile de réseau d'OS, renifler les paquets volants passé et modifier ceux qui le souhaitent.Réécriture paquets réseau à la volée en utilisant libnetfilter_queue
Après beaucoup de recherche sur Google, il apparaît pour moi que la méthode la plus simple (mais raisonnablement robuste) de le faire (sur n'importe quelle plate-forme) est le projet libnetfilter_queue
de Linux. Cependant, j'ai du mal à trouver une documentation raisonnable pour le projet, en dehors de la documentation limitée official. Ses principales caractéristiques (comme indiqué par le premier lien sont)
- réception de paquets en attente du sous-système nfnetlink_queue noyau
- émission verdicts et/ou réinjection paquets modifiés au sous-système nfnetlink_queue noyau
L'emphase est la mienne. Comment est-ce que je voulais dire exactement? J'ai essayé de modifier le code sample fourni, mais peut-être que je suis mal compris quelque chose. Le code fonctionne en mode NFQNL_COPY_PACKET
, donc suis en recevant le paquet entier - mais mes modifications semblent être limitées à ma propre application - comme on pouvait s'y attendre, étant donné la sémantique "copie". Mon sentiment est que je suis censé faire usage de NF_QUEUE
en quelque sorte, mais je ne l'ai pas tout à fait grokked. Des pointeurs?
(! S'il y a un mécanisme plus simple pour ce faire, qui est aussi multi-plateforme, j'aimerais entendre parler)
Sedate, avez-vous l'expérience de l'utilisation de Java (JNI)? Je suis curieux de savoir si cela diminue la performance. –
@TinaJasmin Malheureusement, je n'ai aucune expérience avec JNI, donc je ne suis pas sûr de la quantité de performance qui serait touchée. Désolé, je ne peux pas être plus utile. –