I. Что такое SnifferFox.
II. Как работает SnifferFox.
III. Структура каталогов SnifferFox.
IV. Описание функции SnifferFox.
V. Особенности SnifferFox
VI. Расширьте SnifferFox.
VII. Автор.
Заключение.
I. Что такое SnifferFox
SnifferFox — это сниффер (Sniffer), работающий на платформе Windows. Используется для перехвата всех пакетов данных, проходящих через указанную сетевую карту локального компьютера, а также анализа и сбора статистики по этим пакетам.
SnifferFox разработан на основе Winpcap, проекта с открытым исходным кодом. Для получения исходных пакетов данных мы выбрали его (поскольку Socket работает на уровне IP и не может получать пакеты ARP и RARP, поэтому мы его не использовали). Поэтому, пожалуйста, установите Winpcap перед установкой SnifferFox, в противном случае вам будет предложено, что сетевая карта не может быть найдена.
Для разработки этого сниффера мы выбрали Borland C++Builder. Спустя почти 2 месяца напряженной работы мы написали около 6000 строк кода (в файле docs/codestat.txt есть подробная статистика), и программное обеспечение наконец было готово. теперь мы можем выпустить его альфа-версию. Однако еще может быть много ошибок, которые мы не обнаружили, и они могут быть исправлены в будущих версиях.
SnifferFox — это бесплатное экологически чистое программное обеспечение, не требующее установки или регистрации. Мы обещаем, что никогда не будем изменять реестр вашего компьютера и его можно будет запускать напрямую (конечно, для вашего удобства мы создали установочный пакет).
II Принцип работы SnifferFox Программное обеспечение сначала устанавливает сетевую карту в беспорядочный режим, затем получает данные, полученные сетевой картой, анализирует пакеты данных в соответствии с протоколом TCP/IP, отфильтровывает некоторые пакеты в соответствии с требованиями пользователя и. затем отфильтровывает оставшиеся пакеты. Пакет данных записывается в буфер (блок памяти заданного размера, который можно установить вручную в соответствии с размером памяти компьютера пользователя) и отображается в пользовательском интерфейсе. буфер заполнен, система автоматически запишет данные в буфер. Перейдите на внешнее хранилище.
На рисунке ниже представлена простая иллюстрация.
SnifferFox — это многопоточная система, которую можно условно разделить на 3 потока (реально при реализации использовались только 2), поток перехвата пакетов (Sniffer Thread), поток анализа и фильтрации протоколов и пользовательский интерфейс. Работая на уровне канала передачи данных, он может получить исходный кадр данных, поэтому SnifferFox может поддерживать базовые протоколы, такие как ARP и RARP.
Поскольку объем данных в перехваченных Сниффером пакетах достаточно велик, хранить все эти пакеты в памяти нереально, поэтому здесь мы вводим два понятия в операционной системе, Кэш и Буфер. Кэш — это связанный список, в котором временно хранятся пакеты данных. Чтобы не нагружать компьютер пользователя слишком большой нагрузкой, мы ограничиваем максимальную длину этого связанного списка до 5000. Когда длина этого связанного списка достигнет верхнего предела, установленного пользователем, система автоматически запишет данные из связанного списка в буфер, а затем очистит кэш.
Буфер — это двоичный файл, который состоит из пакетов данных один за другим. С таким же успехом мы могли бы назвать каждый пакет записью. Его длина не фиксирована, главным образом потому, что невозможно определить размер пакета данных.
Он состоит из 4 частей, идентификатора (4 байта), смещения сегмента (4 байта), информации, связанной с кадром данных (16 байт), данных (длина является переменной, но ее можно рассчитать по формуле расчета, представленной на рисунке). Смещение сегмента — это длина записи, которая в основном используется для определения конечной позиции записи и начальной позиции следующей записи.
III. Структура каталогов SnifferFox Конечно, здесь мы должны объяснить, что структура каталогов релизной версии и версии для разработки различна. В версии для разработки больше каталогов, и они более сложны, но в релизной версии каталоги разные. все в релизной версии, поэтому здесь мы вводим только каталог разрабатываемой версии, который можно сравнить с релизной версией (см. docs/dir.txt).
+Нюхач
+Bin Бинарный файл, скомпилированный компилятором, содержит файл динамической библиотеки.
+Конфигурационный файл конфигурации
+Изображения картинки
+Obj промежуточный файл, созданный компилятором
+Каталог документов Docs
+Каталог проекта проекта
+Основной основной код, в основном самоопределяемые структуры данных и их реализация.
+Gui-код для реализации графического интерфейса
+ Многоязычная поддержка
+Каталог кэша кэша, используемый для хранения временных файлов.
+ элементы управления сторонних производителей, используемые в системе 3Com
+Сохранить каталог пользователя, используемый для сохранения пользовательских файлов
IV. Описание функции SnifferFox.
1. Перехват пакетов данных. Пользователи могут указать сетевую карту компьютера, а затем использовать SnifferFox для перехвата всех пакетов данных, проходящих через эту сетевую карту. После перехвата этих пакетов система будет отображать сводную информацию о пакете в виде списка и конкретную информацию о пакете в виде панели по мере необходимости.
2. Фильтрация пакетов. После того, как мы получим пакеты, соответствующие нашим требованиям, мы можем фильтровать перехваченные пакеты в соответствии с различными требованиями, мы можем определить 2 разных фильтра: фильтр протокола и фильтр IP-адреса. Эти два фильтра работают одновременно. Только пакеты, соответствующие этим двум требованиям, будут сохранены, а остальные пакеты, не соответствующие этим требованиям, будут отброшены.
3. Статистика пакетов Чтобы облегчить пользователям понимание распределения перехваченных пакетов, мы предоставляем функцию статистики пакетов данных, которая подсчитывает процент и количество пакетов в соответствии с различными уровнями протокола. Отобразите это в виде диаграммы.
4. Анализ протокола В зависимости от типа пакета мы будем анализировать и отображать данные пакета в зависимости от различных ситуаций. SnifferFox поддерживает большое количество типов протоколов, от уровня канала передачи данных до уровня приложений.
Протоколы ниже прикладного уровня были подробно проанализированы, и каждое поле пакета данных было удалено. Что касается прикладного уровня, на данный момент идентифицировано только 112 протоколов. Однако, поскольку протоколов прикладного уровня очень много и каждый протокол довольно сложен, мы не проводили углубленного анализа.
5. Умная сортировка Чтобы облегчить пользователям быстрый поиск заданных пакетов, мы предоставляем функцию умной сортировки. Когда пользователь перестает перехватывать пакеты данных, ему достаточно нажать на одно из полей в списке, и система автоматически произведет сортировку. данные в списке. Чтобы отсортировать данные в порядке возрастания, щелкните еще раз, чтобы переключить метод сортировки.
6. Обнаружение информации о сетевой карте. Система может автоматически определять количество сетевых карт в системе (включая виртуальные сетевые карты) и динамически отображать ее в списке меню. В то же время он может обнаружить соответствующую информацию о сетевой карте.
7. После тестирования в качестве процесса-демона для перехвата пакетов SnifferFox может работать на компьютере несколько дней без сбоев. Поэтому мы можем использовать его как специализированную программу перехвата пакетов и запускать как процесс-демон (конечно, это имеет определенные последствия). ограничения. Когда перехваченных пакетов слишком много, например несколько гигабайт, это немного сложно, поскольку в этой версии мы не разделили файл буфера на куски. Эта функция может быть добавлена в будущих версиях).
8. Динамическое отображение статуса Чтобы не влиять на остальную работу пользователя при перехвате пакета, мы можем свернуть SnifferFox, и тогда он автоматически исчезнет на панели задач и будет отображаться только небольшой значок в трее. Пока он работает, его значок будет мигать. динамически и замирать при остановке. Кроме того, мы также создали небольшое плавающее окно для отображения состояния системы, которое по умолчанию размещается в верхней части окна.
9. Сохранение и загрузка пакетов данных. Пользователи могут сохранять перехваченные пакеты в указанный файл (расширение *.sni), а затем при необходимости загружать их через SnifferFox. Таким образом, пакеты данных и перехваченные пакеты можно просмотреть там. никакой разницы нет, и вы также можете динамически решать, какую страницу просматривать (в системе уже есть функция пейджинга, и это динамическое пейджинг. Мы можем сами определить количество записей на каждой странице).
10. Содержимое сохраненных пользовательских и системных параметров сохраняется в файле config/config.ini. После изменения пользовательских настроек (таких как интерфейс, язык и т. д.) изменения будут записаны в файл. файл и будет использоваться при следующем запуске системы. Он автоматически ответит на основе этих настроек.
V. Особенности SnifferFox
1. Простота и практичность. Наша цель — простота. Хотя конструкция и реализация системы относительно сложны, мы предпочитаем, чтобы пользователи видели простую и практичную систему.
2. Красивый интерфейс
Про интерфейс SnifferFox и говорить нечего. Система содержит 5 наборов стандартных интерфейсов (Winxp, MacOS, Protein, DeepBlue, BlueGrass). Интерфейс системы можно вовремя заменить без перезагрузки системы, причем это полная замена. (Конечно, это благодаря нашим сторонним средствам управления).
3. Многоязычная поддержка. Мы учли этот вопрос при проектировании системы, поэтому SnifferFox сам поддерживает многоязычность. Мы можем легко расширить ее. Нам нужно только перевести Lang/English на соответствующий язык. Не нужно вносить какие-либо изменения в программу. . В системе уже предусмотрена поддержка китайского и английского языков, которые можно легко переключать.
4. Он имеет относительно хорошую масштабируемость. Мы полностью рассмотрели его масштабируемость с точки зрения языка, интерфейса и протокола. Поэтому относительно легко разработать новую версию на основе этой версии. Это позволяет вам очень хорошо повторно использовать существующий код.
5. Удобство работы Это вопрос, который мы много рассматриваем. Мы делаем все возможное, чтобы метод работы системы соответствовал привычкам людей, чтобы пользователи находили ее удобной и простой в использовании.
6. Поддерживает относительно большое количество протоколов. В Ethernet SnifferFox проанализировал почти все протоколы ниже прикладного уровня семейства TCP/IP и может распознавать 112 протоколов прикладного уровня.
VI. Расширьте SnifferFox.
Расширение SnifferFox — непростая задача, если вы не очень хорошо знаете его структуру. Конечно, сложно сделать это, просто прочитав этот документ сейчас. Мы можем расширить его в 3 аспектах:
1. Расширение протокола
SnifferFox использует объектно-ориентированный метод для анализа проектирования и реализации, поэтому для его расширения необходимо написать соответствующий класс анализа протокола для решения проблемы, а затем соединить их в основной программе. Это требует детального понимания нынешней структуры системы.
2. Расширение интерфейса достигается за счет замены стороннего управления SUIPack (каталог 3com). Подробности смотрите в соответствующих документах SUIPack.
3. Расширение языка. Это самая простая часть функции расширения в SnifferFox. Просто переведите файлы на язык/английский напрямую.
VII. Автор.
Команда FoxBackBone: Чжэнш, Гурф
VIII. Заключение Хотя SnifferFox — это всего лишь небольшое программное обеспечение, с помощью этого документа мы можем понять лишь небольшую его часть, поэтому, если вы хотите понять его подробно, одного только этого документа определенно недостаточно. Дальнейшее чтение — это только исходный код, потому что у нас не так много времени, чтобы подробно расписывать конструкцию системы.
Если у вас есть какие-либо предложения или идеи относительно SnifferFox после его использования, будь то похвала, критика или другие аспекты, оставьте отзыв на нашу электронную почту: shaohui_1983#163.com, gouruifeng_529#sohu.com, спасибо за вашу поддержку.
Кроме того, в программе используется компонент Suipack и WinPcap, скачайте их с этого сайта.