Je voudrais écrire un sniffer de paquets et un éditeur pour Windows. Je veux pouvoir voir le contenu de tous les paquets entrant et sortant de mon système et éventuellement les modifier. Toutes les langues sont correctes, mais j'aimerais qu'elles soient assez rapides pour ne pas surcharger le système. J'ai lu un peu à propos de WinPcap mais la documentation prétend que vous ne pouvez pas utiliser WinPcap pour créer un pare-feu car il ne peut pas supprimer les paquets. Quels outils m'aideront à écrire ce logiciel?Comment connecter la pile TCP dans Windows pour renifler et modifier des paquets?
Répondre
Je suis sûr que vous auriez besoin d'écrire un pilote de filtre. http://en.wikipedia.org/wiki/Filter_driver Je ne sais pas beaucoup plus que ça :). Ce serait certainement une application C/C++ Win32 et vous feriez probablement du travail côté noyau. Commencez par télécharger le DDK et trouver quelques exemples de pilotes de filtre.
Si vous souhaitez simplement surveiller ce qui entre et sort d'IIS, envisagez un filtre ISAPI. Toujours C/C++ dans Win32, mais relativement plus facile que d'écrire un pilote de périphérique.
code C# pour le faire est il y a here
En fait, je l'ai fait, plusieurs années. Je suis brouillé sur les détails à ce stade, mais j'ai dû développer un pilote filtre/pass-thru/intermédiaire en utilisant le Windows DDK. J'ai eu beaucoup de bonnes informations de pcausa. Voici une URL qui pointe vers leur produit qui fait ceci: http://www.pcausa.com/pcasim/Default.htm
Si vous faites cela pour des raisons pratiques, et pas seulement pour le plaisir, alors vous devriez jeter un oeil à Microsoft Network Monitor. La page d'accueil parle de la version bêta de la version 3.3, mais vous pouvez télécharger la version 3.2 depuis la page des téléchargements. Il existe également un SDK pour NM, et la possibilité d'écrire des analyseurs pour vos propres protocoles réseau.
Été là, fait cela :-) En 2000, mon premier programme Windows a été un filter hook driver. Ce que j'ai fait était implémenter le pilote de crochet de filtre et écrire une application d'espace utilisateur qui a préparé une table de filtre sur quoi autoriser et quoi interdire. Lorsque vous contournez votre jeu initial d'écrans bleus (voir ci-dessous pour mon astuce de débogage en mode noyau) le pilote en mode filtre est assez facile à utiliser ... il donne à chaque paquet une fonction que vous avez écrite et en fonction du code retour ou laisse passer. Les paquets Unfortunatley à ce niveau sont QUITE brut, les fragments ne sont pas réassemblés et ressemble plus à la fin de la "carte réseau" (mais plus d'en-têtes Ethernet). Vous aurez donc du mal à décoder les paquets à filtrer avec cette solution.
Il y a également le pilote de crochet de pare-feu, comme indiqué dans ce codeproject article. Si vous êtes sur Vista ou Server 2008, préférez le WFP (Windows Filtering Platform), qui semble être l'API mandatée pour écrire des pare-feux. Je ne sais rien d'autre que google turing il ya quelques minutes quand je googlé pour le pilote de crochet de filtre.
Mise à jour: Vous avez oublié la pointe de débogage:
Sysinternals DbgView affiche une sortie DbgPrint en mode noyau, et le plus important - il peut aussi les lire à partir du fichier de vidage de votre dernier écran bleu produit. Alors saupoudrez votre code avec dbgprint et s'il bluescreens chargez simplement le vidage dans dbgview pour voir ce qui s'est passé avant sa mort ... TRÈS utile. En utilisant ceci j'ai réussi sans avoir de débogueur de noyau.
Les pilotes de crochet de filtre ne sont pas un bon choix, car vous ne pouvez en installer qu'un seul à la fois. Si vous essayez d'installer sur un système qui a déjà quelqu'un d'autre, vous êtes bourré. –
D'accord. Je pense que le pilote de hook de pare-feu est la voie à suivre, même si elle est obsolète dans WinXP et au-delà pour courir trop haut dans la pile réseau. NDIS est recommandé pour WinXP. NDIS semble être plus de travail, cependant. – Eyal
Vous devez poser une question que vous ne savez pas vous poser; Voulez-vous savoir à quelles applications appartiennent les sockets? ou êtes-vous heureux d'être limité à l'adresse IP: port quad pour une connexion? Si vous voulez connaître les applications, vous devez écrire un pilote de filtre TDI, mais cela rend pratiquement impossible la gestion de la réception, car vous ne pouvez pas bloquer sur le chemin de réception.
Si vous êtes satisfait de IP: port, allez au niveau NDIS, et je crois que vous pouvez bloquer sur le contenu de recevoir votre cœur.
Un mot d'avertissement; Si vous n'avez aucune expérience préalable du noyau, écrire l'un ou l'autre de ces pilotes (bien que le TDI soit beaucoup plus difficile) prendra environ deux ans, à temps plein.
ceci:
TdiFw est un simple TDI-Based Open Source Personal Firewall pour Windows NT4/2000/XP/2003
peut vous aider à
Si c'est ce que je pense, c'est nul! le code source n'est PAS bien écrit ou compréhensible. Je l'ai regardé quand j'écrivais mon propre filtre TDI et ça ne m'a pas aidé du tout. –
- 1. Quelle bibliothèque/encapsuleur .NET recommandez-vous pour renifler des paquets?
- 2. C# - une pile TCP utilisateur dans Windows XP SP III
- 3. Gestion des paquets TCP abandonnés en C#
- 4. Comment renifler un port USB sous Windows?
- 5. Redirection de paquets vers l'espace utilisateur Pile TCP sans modification de l'application
- 6. Quelle est la meilleure façon d'effectuer l'usurpation et l'injection de paquets TCP et UDP?
- 7. Java TCP Socket reniflage
- 8. tcp déconnecter la création sous windows et linux
- 9. Filtre de paquets Berkley pour Windows
- 10. Comment connecter une caméra TCP/IP au PC?
- 11. Comment modifier l'utilisateur "se connecter en tant que" dans un service Windows .Net
- 12. Probabilité de trouver des paquets TCP avec la même charge utile?
- 13. Comment détecter la perte de paquets sur Windows Server 2003?
- 14. Qu'est-ce qui peut faire que TCP/IP abandonne les paquets sans abandonner la connexion?
- 15. Création de paquets bruts pour usurper des paquets UDP
- 16. Aide Python - Analyse des paquets de paquets
- 17. Delphi: limitation des connexions TCP
- 18. Comment obtenir la pile de pile dans un appareil mobile?
- 19. Comment la pile TCP/IP d'un système différencie-t-elle plusieurs programmes se connectant à la même adresse et au même port?
- 20. Comment faire pour vérifier la pile d'appel
- 21. Sockets Java et tuning TCP
- 22. Héritage de cadre et fichiers en double dans des paquets
- 23. Comment afficher les tailles des files d'attente d'envoi et de réception TCP sous Windows?
- 24. Chemins nommés versus TCP pour JDBC-MySQL sous Windows
- 25. Je veux connecter la réception de l'email et des applications
- 26. JavaScript et une pile
- 27. Recherche de perte de paquets et de trace dans .NET
- 28. Puis-je réinitialiser la pile TCP/IP de Microchip sans réinitialiser la carte?
- 29. Modifier la commande Vim pour travailler dans MS-Windows? Utilisez make pour vérifier la syntaxe python.
- 30. Comment modifier la propriété showInPanes dans XtraCharts
Depuis sa prise première à base de , il ne sera pas en mesure de renifler les paquets TCP entrants sur Windows 7. (Microsoft a paralysé les sockets bruts sur les versions non-serveur de Windows) – CodesInChaos
J'ai besoin d'une solution/exemple de WFP, malheureusement. – ChopperCharles