I. Qu'est-ce que SnifferFox.
II. Comment fonctionne SnifferFox
III. Structure du répertoire SnifferFox
IV. Description de la fonction SnifferFox.
V. Fonctionnalités de SnifferFox
VI. Étendre SnifferFox
VII. Auteur
VIII.Conclusion
I. Qu'est-ce que SnifferFox
SnifferFox est un renifleur (Sniffer) fonctionnant sur la plateforme Windows. Utilisé pour intercepter tous les paquets de données transitant par la carte réseau spécifiée de l'ordinateur local, ainsi qu'analyser et collecter des statistiques sur ces paquets.
SnifferFox est développé sur la base de Winpcap, qui est un projet open source, afin d'obtenir les paquets de données originaux, nous l'avons choisi (car Socket fonctionne au niveau de la couche IP et ne peut pas obtenir les paquets ARP et RARP, nous ne l'avons donc pas utilisé). Par conséquent, veuillez installer Winpcap avant d'installer SnifferFox, sinon vous serez invité à indiquer que la carte réseau est introuvable.
Nous avons choisi Borland C++Builder pour développer ce Sniffer. Après près de 2 mois de travail acharné, nous avons écrit près de 6 000 lignes de code (le fichier docs/codestat.txt contient des statistiques détaillées), et le logiciel a finalement été essentiellement développé. nous pouvons maintenant publier sa version Alpha. Cependant, il peut encore y avoir de nombreuses erreurs que nous n'avons pas découvertes et qui pourront être corrigées dans les versions futures.
SnifferFox est un logiciel gratuit et écologique qui ne nécessite ni installation ni enregistrement. Nous promettons que nous ne modifierons jamais le registre de votre ordinateur et que nous pouvons l'exécuter directement (bien sûr, pour votre commodité, nous avons créé un package d'installation).
II. Principe de fonctionnement de SnifferFox Le logiciel configure d'abord la carte réseau en mode promiscuité, puis obtient les données reçues par la carte réseau, analyse les paquets de données selon le protocole TCP/IP, filtre certains paquets en fonction des besoins de l'utilisateur et filtre ensuite les paquets restants. Le paquet de données est écrit dans le tampon (un bloc de mémoire d'une taille spécifiée, qui peut être définie manuellement en fonction de la taille de la mémoire de l'ordinateur de l'utilisateur) et est affiché sur l'interface utilisateur. Le tampon est plein, le système écrira automatiquement les données dans le tampon Accédez au stockage externe.
L'image ci-dessous est une illustration simple.
SnifferFox est un système multithread, qui peut être grossièrement divisé en 3 threads (seuls 2 ont été réellement utilisés lors de la mise en œuvre), un thread de capture de paquets (Sniffer Thread), un thread d'analyse et de filtrage de protocole et une interface utilisateur. Travaillant au niveau de la couche liaison de données, il peut obtenir la trame de données d'origine, de sorte que SnifferFox peut prendre en charge les protocoles sous-jacents tels que ARP et RARP.
Étant donné que la quantité de données dans les paquets interceptés par Sniffer est assez importante, il n'est pas réaliste de stocker tous ces paquets en mémoire, nous introduisons donc ici deux concepts dans le système d'exploitation, Cache et Buffer. Le cache est une liste chaînée qui stocke temporairement les paquets de données. Afin de ne pas surcharger l'ordinateur de l'utilisateur, nous limitons la longueur maximale de cette liste chaînée à 5000. Lorsque la longueur de cette liste chaînée atteint la limite supérieure définie par l'utilisateur, le système écrira automatiquement les données de la liste chaînée dans le tampon, puis videra le cache.
Buffer est un fichier binaire composé de paquets de données un par un. Autant appeler chaque paquet un disque. Sa longueur n’est pas fixe, principalement parce qu’il n’existe aucun moyen de déterminer la taille du paquet de données.
Il se compose de 4 parties, ID (4 octets), décalage de segment (4 octets), informations relatives à la trame de données (16 octets), données (la longueur est variable, mais elle peut être calculée selon la formule de calcul de la figure). Le décalage de segment est la longueur de l'enregistrement, qui est principalement utilisée pour déterminer la position de fin de l'enregistrement et la position de début de l'enregistrement suivant.
III. Structure des répertoires de SnifferFox Bien sûr, ce que nous devons expliquer ici, c'est que la structure des répertoires de la version publiée et de la version de développement est différente. Il y a plus de répertoires dans la version de développement et sont plus complexes, mais les répertoires de la version publiée le sont. le tout dans la version release, nous présentons donc ici uniquement le répertoire de la version de développement, qui peut être comparé à la version release (voir docs/dir.txt).
+RenardRenifleur
+Bin Le fichier binaire compilé par le compilateur contient le fichier de bibliothèque de liens dynamiques
+Fichier de configuration
+Images photos
+Fichier intermédiaire Obj généré par le compilateur
+Répertoire de documents Docs
+Répertoire des projets du projet
+Code de base, principalement des structures de données auto-définies et leur implémentation
+Code GUI pour implémenter l'interface graphique
+ Prise en charge multilingue de Lang
+Répertoire de cache cache, utilisé pour stocker les fichiers temporaires
+Contrôles tiers utilisés dans le système 3Com
+Enregistrer le répertoire utilisateur, utilisé pour enregistrer les fichiers utilisateur
IV. Description de la fonction SnifferFox
1. Interception de paquets de données Les utilisateurs peuvent spécifier la carte réseau d'un ordinateur, puis utiliser SnifferFox pour intercepter tous les paquets de données transitant par cette carte réseau. Après avoir intercepté ces colis, le système affichera les informations récapitulatives du colis sous forme de liste et les informations spécifiques du colis sous forme de panneau selon les besoins.
2. Filtrage des paquets : Après avoir obtenu les paquets qui répondent à nos exigences, nous pouvons filtrer les paquets interceptés. Selon différentes exigences, nous pouvons définir 2 filtres différents : le filtre de protocole et le filtre d'adresse IP. Ces deux filtres fonctionnent en même temps. Seuls les paquets qui répondent à ces deux exigences seront conservés, et les autres paquets qui ne répondent pas aux exigences seront rejetés.
3. Statistiques de paquets Afin de permettre aux utilisateurs de comprendre la distribution des paquets interceptés, nous proposons la fonction de statistiques de paquets de données, qui compte le pourcentage et le nombre de paquets selon différents niveaux de protocole. Affichez-le sous forme de diagramme.
4. Analyse du protocole Selon le type de paquet, nous analyserons et afficherons les données du paquet en fonction de différentes situations. SnifferFox prend en charge un grand nombre de types de protocoles, de la couche liaison de données à la couche application.
Les protocoles situés sous la couche application ont été analysés en détail et chaque champ du paquet de données a été supprimé. Quant à la couche application, seuls 112 protocoles ont été identifiés pour l'instant. Cependant, en raison du grand nombre de protocoles de couche application et de la complexité de chaque protocole, nous n'avons pas procédé à une analyse approfondie.
5. Tri intelligent Afin de permettre aux utilisateurs de trouver rapidement les packages spécifiés, nous proposons une fonction de tri intelligent Lorsque l'utilisateur cesse d'intercepter les paquets de données, il lui suffit de cliquer sur l'un des champs de la liste et le système triera automatiquement. les données de la liste. Pour trier par ordre croissant, cliquez à nouveau pour changer de méthode de tri.
6. Détecter les informations de la carte réseau Le système peut détecter automatiquement le nombre de cartes réseau dans le système (y compris les cartes réseau virtuelles) et l'afficher dynamiquement dans la liste des menus. En même temps, il peut détecter les informations pertinentes de la carte réseau.
7. Après avoir été testé en tant que processus démon pour intercepter des paquets, SnifferFox peut fonctionner sur l'ordinateur pendant plusieurs jours sans planter. Par conséquent, nous pouvons l'utiliser comme programme spécialisé d'interception de paquets et l'exécuter comme un processus démon (bien sûr, cela a certaines caractéristiques). limitations. Quand Lorsqu'il y a trop de paquets interceptés, par exemple plusieurs gigaoctets, c'est un peu difficile, car dans cette version, nous n'avons pas divisé le fichier Buffer en morceaux. Cette fonctionnalité pourra être ajoutée dans les versions futures).
8. Affichage dynamique de l'état Afin de ne pas affecter le reste du travail de l'utilisateur lors de l'interception du package, nous pouvons minimiser SnifferFox, puis il disparaîtra automatiquement de la barre des tâches et n'affichera qu'une petite icône dans la barre d'état système. Pendant son fonctionnement, son icône clignotera. dynamiquement et se fige à l'arrêt. De plus, nous avons également créé une petite fenêtre flottante pour afficher l'état du système, qui est placée par défaut en haut de la fenêtre.
9. Sauvegarde et chargement des paquets de données Les utilisateurs peuvent enregistrer les paquets interceptés dans un fichier spécifié (extension *.sni), puis les charger via SnifferFox si nécessaire. De cette manière, les paquets de données et les paquets interceptés peuvent y être visualisés. Il n'y a aucune différence, et vous pouvez également décider dynamiquement quelle page afficher (le système a déjà une fonction de pagination, et il s'agit d'une pagination dynamique. Nous pouvons définir nous-mêmes le nombre d'enregistrements sur chaque page).
10. Le contenu des options utilisateur et des options système stockées est enregistré dans config/config.ini, qui est un fichier in. Une fois les paramètres utilisateur (tels que l'interface, la langue, etc.) modifiés, les modifications seront enregistrées dans le fichier. et sera utilisé lors de la prochaine exécution du système. Il répondra automatiquement en fonction de ces paramètres.
V. Fonctionnalités de SnifferFox
1. Simple et pratique. La simplicité est notre objectif. Bien que la conception et la mise en œuvre du système soient relativement complexes, nous préférons que les utilisateurs voient un système simple et pratique.
2. Belle interface
Il n'y a rien à dire sur l'interface de SnifferFox. Le système contient 5 ensembles d'interfaces standards (Winxp, MacOS, Protein, DeepBlue, BlueGrass). L'interface système peut être remplacée à temps sans redémarrer le système, et c'est un remplacement complet. (Bien sûr, c'est grâce à nos contrôles tiers).
3. Prise en charge multilingue Nous avons pris ce problème en considération lors de la conception du système, donc SnifferFox lui-même prend en charge le multilingue. Nous pouvons facilement l'étendre. Il nous suffit de traduire le langage/anglais dans la langue correspondante. Aucune modification du programme n'est nécessaire. . Le système prend déjà en charge les langues chinoise et anglaise, qui peuvent être facilement commutées.
4. Il a une évolutivité relativement bonne. Nous avons pleinement pris en compte son évolutivité en termes de langage, d’interface et de protocole. Il est donc relativement simple de développer une nouvelle version basée sur cette version. Cela vous permet de très bien réutiliser le code existant.
5. Commodité de fonctionnement C'est une question à laquelle nous accordons beaucoup d'importance. Nous faisons de notre mieux pour rendre la méthode de fonctionnement du système cohérente avec les habitudes des gens, afin que les utilisateurs le trouvent pratique et facile à utiliser.
6. Prend en charge un nombre relativement important de protocoles. Dans Ethernet, SnifferFox a analysé presque tous les protocoles situés sous la couche application de la famille TCP/IP et peut reconnaître 112 protocoles de couche application.
VI. Étendre SnifferFox
Étendre SnifferFox n'est pas une tâche facile à moins de bien connaître sa structure. Bien sûr, il est difficile de le faire simplement en lisant ce document maintenant. Nous pouvons l’étendre sous 3 aspects :
1. Extension du protocole
SnifferFox utilise une méthode orientée objet pour analyser la conception et la mise en œuvre, donc pour l'étendre, vous devez écrire la classe d'analyse de protocole correspondante pour résoudre le problème, puis les connecter dans le programme principal. Cela nécessite une compréhension détaillée de la structure actuelle du système.
2. L'extension de l'interface est obtenue en modifiant le contrôle tiers SUIPack (répertoire 3com). Pour plus de détails, veuillez vous référer aux documents pertinents de SUIPack.
3. Expansion linguistique Il s'agit de la partie la plus simple de la fonction d'expansion de SnifferFox. Il suffit de traduire directement les fichiers Lang/anglais.
VII. Auteur
Équipe FoxBackBone : zhengsh, gourf
VIII. Conclusion Bien que SnifferFox ne soit qu'un petit logiciel, nous ne pouvons en comprendre qu'une petite partie à travers ce document, donc si vous voulez le comprendre en détail, ce n'est certainement pas suffisant. Les lectures complémentaires concernent uniquement le code source, car nous n'avons pas beaucoup de temps pour rédiger en détail la conception du système.
Si vous avez des suggestions ou des idées sur SnifferFox après l'avoir utilisé, qu'il s'agisse d'éloges, de critiques ou d'autres aspects, veuillez faire part de vos commentaires à notre e-mail : shaohui_1983#163.com, gouruifeng_529#sohu.com, merci pour votre soutien.
De plus, le composant Suipack et WinPcap sont utilisés dans le programme, veuillez les télécharger depuis ce site