I. Was ist SnifferFox?
II. Wie SnifferFox funktioniert
III. SnifferFox-Verzeichnisstruktur
IV. SnifferFox-Funktionsbeschreibung.
V. SnifferFox-Funktionen
VI. SnifferFox erweitern
VII. Autor
VIII. Fazit
I. Was ist SnifferFox?
SnifferFox ist ein Sniffer (Sniffer), der auf der Windows-Plattform läuft. Wird verwendet, um alle Datenpakete abzufangen, die über die angegebene Netzwerkkarte des lokalen Computers laufen, und um diese Pakete zu analysieren und Statistiken zu sammeln.
SnifferFox basiert auf Winpcap, einem Open-Source-Projekt. Um die Originaldatenpakete zu erhalten, haben wir es ausgewählt (da Socket auf der IP-Ebene arbeitet und keine ARP- und RARP-Pakete abrufen kann, haben wir es also nicht verwendet). Installieren Sie daher bitte Winpcap, bevor Sie SnifferFox installieren, da Sie sonst die Meldung erhalten, dass die Netzwerkkarte nicht gefunden werden kann.
Wir haben uns für Borland C++Builder entschieden, um diesen Sniffer zu entwickeln. Nach fast zwei Monaten harter Arbeit haben wir fast 6.000 Zeilen Code geschrieben (die Datei docs/codestat.txt enthält detaillierte Statistiken) und die Software wurde im Wesentlichen entwickelt. Jetzt können wir die Alpha-Version veröffentlichen. Es können jedoch noch viele Fehler vorhanden sein, die wir nicht entdeckt haben und die möglicherweise in zukünftigen Versionen korrigiert werden.
SnifferFox ist kostenlos und eine umweltfreundliche Software, die keine Installation oder Registrierung erfordert. Wir versprechen, dass wir die Registrierung Ihres Computers niemals ändern und direkt ausgeführt werden können (zu Ihrer Bequemlichkeit haben wir natürlich ein Installationspaket erstellt).
II. Funktionsprinzip von SnifferFox: Die Software versetzt die Netzwerkkarte zunächst in den Promiscuous-Modus, ruft dann die von der Netzwerkkarte empfangenen Daten ab, analysiert die Datenpakete gemäß dem TCP/IP-Protokoll, filtert einige Pakete entsprechend den Anforderungen des Benutzers heraus und Anschließend werden die verbleibenden Pakete in den Puffer (einen Speicherblock mit einer bestimmten Größe, der entsprechend der Speichergröße des Computers des Benutzers eingestellt werden kann) geschrieben und auf der Benutzeroberfläche angezeigt Wenn der Puffer voll ist, schreibt das System die Daten automatisch in den externen Speicher.
Das Bild unten ist eine einfache Illustration.
SnifferFox ist ein Multithread-System, das grob in drei Threads unterteilt werden kann (nur zwei wurden tatsächlich während der Implementierung verwendet), einen Paketerfassungs-Thread (Sniffer-Thread), einen Protokollanalyse- und Filter-Thread und eine Benutzeroberfläche. Durch die Arbeit auf der Datenverbindungsschicht kann der ursprüngliche Datenrahmen abgerufen werden, sodass SnifferFox zugrunde liegende Protokolle wie ARP und RARP unterstützen kann.
Da die Datenmenge in den von Sniffer abgefangenen Paketen ziemlich groß ist, ist es unrealistisch, alle diese Pakete im Speicher zu speichern. Daher stellen wir hier zwei Konzepte im Betriebssystem vor: Cache und Puffer. Cache ist eine verknüpfte Liste, die Datenpakete vorübergehend speichert. Um den Computer des Benutzers nicht zu stark zu belasten, begrenzen wir die maximale Länge dieser verknüpften Liste auf 5000. Wenn die Länge dieser verknüpften Liste die vom Benutzer festgelegte Obergrenze erreicht, schreibt das System die Daten in der verknüpften Liste automatisch in den Puffer und löscht dann den Cache.
Puffer ist eine Binärdatei, die nacheinander aus Datenpaketen besteht. Wir könnten jedes Paket genauso gut als Datensatz bezeichnen. Seine Länge ist nicht festgelegt, vor allem weil es keine Möglichkeit gibt, die Größe des Datenpakets zu bestimmen.
Es besteht aus 4 Teilen: ID (4 Byte), Segmentoffset (4 Byte), datenrahmenbezogene Informationen (16 Byte) und Daten (die Länge ist variabel, kann jedoch gemäß der Berechnungsformel in der Abbildung berechnet werden). Der Segmentversatz ist die Datensatzlänge, die hauptsächlich zur Bestimmung der Endposition des Datensatzes und der Startposition des nächsten Datensatzes verwendet wird.
III. SnifferFox-Verzeichnisstruktur Hier müssen wir natürlich erklären, dass die Verzeichnisstruktur der Release-Version und der Entwicklungsversion unterschiedlich ist. Es gibt mehr Verzeichnisse in der Entwicklungsversion und ist komplexer, die Verzeichnisse in der Release-Version jedoch Alles in der Release-Version, daher stellen wir hier nur das Verzeichnis der Entwicklungsversion vor, das mit der Release-Version verglichen werden kann (siehe docs/dir.txt).
+Schnüffelfuchs
+Bin Die vom Compiler kompilierte Binärdatei enthält die Dynamic Link Library-Datei
+Config-Konfigurationsdatei
+Bilder Bilder
+Obj-Zwischendatei, die vom Compiler generiert wird
+Docs-Dokumentenverzeichnis
+Projekt-Projektverzeichnis
+Kernkerncode, hauptsächlich selbstdefinierte Datenstrukturen und deren Implementierung
+GUI-Code zur Implementierung der grafischen Oberfläche
+Lang-Unterstützung für mehrere Sprachen
+Cache-Cache-Verzeichnis, das zum Speichern temporärer Dateien verwendet wird
+ Im 3Com-System verwendete Steuerelemente von Drittanbietern
+Benutzerverzeichnis speichern, wird zum Speichern von Benutzerdateien verwendet
IV. SnifferFox-Funktionsbeschreibung
1. Abfangen von Datenpaketen Benutzer können die Netzwerkkarte eines Computers angeben und dann mit SnifferFox alle Datenpakete abfangen, die diese Netzwerkkarte passieren. Nach dem Abfangen dieser Pakete zeigt das System bei Bedarf die zusammenfassenden Informationen des Pakets in Form einer Liste und die spezifischen Informationen des Pakets in Form eines Panels an.
2. Paketfilterung: Nachdem wir die Pakete erhalten haben, die unseren Anforderungen entsprechen, können wir die abgefangenen Pakete entsprechend unterschiedlichen Anforderungen filtern. Wir können zwei verschiedene Filter definieren: Protokollfilter und IP-Adressfilter. Diese beiden Filter funktionieren gleichzeitig. Nur Pakete, die diese beiden Anforderungen erfüllen, werden beibehalten, andere Pakete, die diese Anforderungen nicht erfüllen, werden verworfen.
3. Paketstatistiken Um Benutzern das Verständnis der Verteilung abgefangener Pakete zu erleichtern, bieten wir die Funktion der Datenpaketstatistik an, die den Prozentsatz und die Anzahl der Pakete gemäß verschiedenen Protokollebenen zählt. Zeigen Sie es in Diagrammform an.
4. Protokollanalyse Je nach Pakettyp analysieren wir die Paketdaten und zeigen sie je nach Situation an. SnifferFox unterstützt eine große Anzahl von Protokolltypen, von der Datenverbindungsschicht bis zur Anwendungsschicht.
Die Protokolle unterhalb der Anwendungsschicht wurden detailliert analysiert und jedes Feld im Datenpaket entfernt. Für die Anwendungsschicht wurden bisher nur 112 Protokolle identifiziert. Da es jedoch so viele Protokolle der Anwendungsschicht gibt und jedes Protokoll recht komplex ist, haben wir keine eingehende Analyse durchgeführt.
5. Intelligente Sortierung Um Benutzern das schnelle Auffinden bestimmter Pakete zu erleichtern, bieten wir eine intelligente Sortierfunktion. Wenn der Benutzer aufhört, Datenpakete abzufangen, muss er nur auf eines der Felder in der Liste klicken und das System sortiert automatisch Um die Daten in der Liste in aufsteigender Reihenfolge zu sortieren, klicken Sie erneut, um die Sortiermethode zu ändern.
6. Netzwerkkarteninformationen erkennen Das System kann die Anzahl der Netzwerkkarten im System (einschließlich virtueller Netzwerkkarten) automatisch erkennen und dynamisch in der Menüliste anzeigen. Gleichzeitig kann es die relevanten Informationen der Netzwerkkarte erkennen.
7. Nach dem Testen als Daemon-Prozess zum Abfangen von Paketen kann SnifferFox mehrere Tage lang ohne Absturz auf dem Computer laufen. Daher können wir es als spezialisiertes Programm zum Abfangen von Paketen verwenden und es wie einen Daemon-Prozess ausführen (dies hat natürlich einiges zu bieten). Einschränkungen: Wenn zu viele Pakete abgefangen werden, z. B. mehrere Gigabyte, ist dies etwas schwierig, da wir die Pufferdatei in dieser Version nicht in Blöcke unterteilt haben. Diese Funktion wird möglicherweise in zukünftigen Versionen hinzugefügt.
8. Dynamische Statusanzeige Um die andere Arbeit des Benutzers beim Abfangen des Pakets nicht zu beeinträchtigen, können wir SnifferFox minimieren. Anschließend verschwindet es automatisch in der Taskleiste und zeigt nur ein kleines Taskleistensymbol an. Während es funktioniert, blinkt sein Symbol dynamisch und friert ein, wenn es gestoppt wird. Darüber hinaus haben wir ein kleines schwebendes Fenster zur Anzeige des Systemstatus erstellt, das standardmäßig oben im Fenster platziert ist.
9. Speichern und Laden von Datenpaketen. Benutzer können die abgefangenen Pakete in einer bestimmten Datei (Erweiterung *.sni) speichern und sie dann bei Bedarf über SnifferFox laden Es gibt überhaupt keinen Unterschied, und Sie können auch dynamisch entscheiden, welche Seite angezeigt werden soll (das System verfügt bereits über eine Paging-Funktion und es handelt sich um dynamisches Paging. Wir können die Anzahl der Datensätze auf jeder Seite selbst definieren).
10. Der Inhalt der gespeicherten Benutzeroptionen und Systemoptionen wird in der Datei config/config.ini gespeichert. Sobald die Benutzereinstellungen (z. B. Benutzeroberfläche, Sprache usw.) geändert werden, werden die Änderungen in der Datei gespeichert Datei und wird beim nächsten Start des Systems verwendet. Es reagiert automatisch basierend auf diesen Einstellungen.
V. SnifferFox-Funktionen
1. Einfachheit ist unser Ziel. Obwohl das Design und die Implementierung des Systems relativ komplex sind, bevorzugen wir, dass Benutzer ein einfaches und praktisches System sehen.
2. Schöne Benutzeroberfläche
Zur Schnittstelle von SnifferFox gibt es nichts zu sagen. Das System enthält 5 Sätze von Standardschnittstellen (Winxp, MacOS, Protein, DeepBlue, BlueGrass), und es handelt sich um einen vollständigen Ersatz (Natürlich ist dies unseren Drittanbieter-Kontrollen zu verdanken).
3. Mehrsprachigkeit Wir haben dieses Problem beim Entwurf des Systems berücksichtigt, sodass SnifferFox selbst die Mehrsprachigkeit unterstützt. Wir müssen nur Lang/Englisch in die entsprechende Sprache übersetzen . Das System unterstützt bereits die Sprachen Chinesisch und Englisch, die problemlos umgeschaltet werden können.
4. Es verfügt über eine relativ gute Skalierbarkeit. Wir haben die Skalierbarkeit in Bezug auf Sprache, Schnittstelle und Protokoll vollständig berücksichtigt. Daher ist es relativ einfach, auf Basis dieser Version eine neue Version zu entwickeln. Dadurch lässt sich bestehender Code sehr gut wiederverwenden.
5. Benutzerfreundlichkeit Dies ist ein Thema, das uns sehr am Herzen liegt. Wir tun unser Bestes, um die Bedienungsmethode des Systems an die Gewohnheiten der Menschen anzupassen, damit die Benutzer es bequem und einfach zu verwenden haben.
6. Unterstützt eine relativ große Anzahl von Protokollen. Im Ethernet hat SnifferFox fast alle Protokolle unterhalb der Anwendungsschicht der TCP/IP-Familie analysiert und kann 112 Protokolle der Anwendungsschicht erkennen.
VI. SnifferFox erweitern
SnifferFox zu erweitern ist keine leichte Aufgabe, es sei denn, Sie kennen die Struktur sehr gut. Natürlich ist es schwierig, dies jetzt allein durch das Lesen dieses Dokuments zu tun. Wir können es in drei Aspekten erweitern:
1. Protokollerweiterung
SnifferFox verwendet eine objektorientierte Methode zur Analyse von Design und Implementierung. Um sie zu erweitern, müssen Sie die entsprechende Protokollanalyseklasse schreiben, um das Problem zu lösen, und diese dann im Hauptprogramm verbinden. Dies erfordert ein detailliertes Verständnis der aktuellen Systemstruktur.
2. Die Schnittstellenerweiterung wird durch Ändern der Drittanbietersteuerung SUIPack (3com-Verzeichnis) erreicht. Weitere Informationen finden Sie in den entsprechenden Dokumenten von SUIPack.
3. Spracherweiterung Dies ist der einfachste Teil der Erweiterungsfunktion in SnifferFox. Übersetzen Sie einfach Lang-/Englischdateien direkt.
VII. Autor
FoxBackBone-Team: zhengsh, gourf
VIII. Fazit Obwohl SnifferFox nur eine kleine Software ist, können wir durch dieses Dokument nur einen kleinen Teil davon verstehen. Wenn Sie es also im Detail verstehen möchten, reicht es definitiv nicht aus, es nur durch dieses Dokument zu verstehen. Weitere Lektüre ist nur der Quellcode, da wir nicht viel Zeit haben, das Systemdesign im Detail zu schreiben.
Wenn Sie nach der Verwendung Vorschläge oder Ideen zu SnifferFox haben, sei es Lob, Kritik oder andere Aspekte, geben Sie bitte Feedback an unsere E-Mail-Adresse: shaohui_1983#163.com, gouruifeng_529#sohu.com. Vielen Dank für Ihre Unterstützung.
Darüber hinaus werden im Programm die Suipack-Komponente und WinPcap verwendet. Bitte laden Sie diese von dieser Website herunter