1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lougd-snifferview

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

SnifferView — инструмент для анализа и перехвата пакетов

Код на Gitee: https://gitee.com/lougd/snifferview.git

Код на GitHub: https://github.com/lougd/snifferview.git

Исполняемый файл после компиляции: https://pan.baidu.com/s/1XapqLl7YgjkO5yhrNPqehg

Контакты автора: qq:412776488, mail: lougdhr@126.com.

Если этот инструмент вам полезен, пожалуйста, поставьте звезду. Спасибо!

История разработки:

Этот инструмент был создан в 2015 году. Автор часто использовал Wireshark для перехвата и анализа сетевых пакетов при работе с разными терминалами. Поскольку установка пакета Wireshark была сложной и не поддерживала перехват пакетов с обратной связью в сети, автор решил создать собственный инструмент для анализа пакетов. Так появилась первая версия SnifferView. Затем автор продолжал использовать и улучшать инструмент, и появилась его текущая версия.

Основные функции и особенности:

SnifferView представляет собой стабильный, функциональный и готовый к использованию инструмент для модификации и анализа пакетов. Он может быть полезен для регулярного перехвата, анализа и записи сетевых пакетов.

  1. Поддерживает перехват пакетов со всех сетевых карт на локальном компьютере, включая пакеты с обратным адресом 127.0.0.1.
  2. Поддерживает фильтрацию пакетов, аналогичную Wireshark, что позволяет гибко фильтровать сетевые пакеты.
  3. Поддерживает функцию отслеживания потока TCP, что упрощает отслеживание отдельных потоков данных TCP.
  4. Позволяет отслеживать состояние сети для определённых процессов, что облегчает просмотр состояния сети этих процессов.
  5. Позволяет импортировать и экспортировать уже захваченные данные о сети, обеспечивая удобство в любое время для сохранения захваченных сетевых данных.
  6. Инструмент компактный (менее 1 МБ), зелёный и независимый от других программ, с быстрой скоростью запуска.
  7. Разработан на C++, с использованием Visual Studio 2008 для компиляции и сборки. Для компиляции можно открыть файл проекта SnifferView.sln в корне каталога проекта.

Скриншоты функций инструмента:

Главный экран предоставляет обзор текущего состояния перехвата сетевых пакетов. Здесь можно увидеть информацию о количестве перехваченных пакетов, скорости передачи данных и другую статистику.

Экран отслеживания потока TCP позволяет детально изучить поток данных TCP между двумя хостами. Здесь можно видеть информацию о каждом пакете в потоке, такую как номер последовательности, номер подтверждения и данные.

Экран просмотра состояния сети позволяет просматривать информацию о состоянии сети для определённого процесса. Здесь можно видеть IP-адрес, порт и другие параметры сетевого соединения процесса.

Архитектура программы:

Программа состоит из нескольких подпроектов:

  • ComLib — базовый функционал в виде статической библиотеки, предоставляющий общие компоненты для различных функциональных модулей.
  • SnifferView — основной модуль, реализующий основные функции, такие как перехват и анализ пакетов, фильтрация и обработка данных.
  • Dumper — модуль обработки исключений, который перехватывает и обрабатывает необработанные исключения, генерируя дампы и логи для анализа причин исключений.
  • SyntaxView — компонент для подсветки синтаксиса, основанный на Scintilla, используемый для отображения данных потока TCP.

Использование:

После запуска программа начинает перехват сетевых пакетов без фильтрации. Чтобы фильтровать интересующие пакеты, необходимо ввести соответствующие правила фильтрации в поле правил фильтрации на главном экране. Правила фильтрации аналогичны тем, которые используются в Wireshark.

Правила фильтрации SnifferView включают следующие ключевые слова:

  • Для уровня IP: ip, ip.addr, ip.src, ip.dst, ip.length.
  • Для ICMP: icmp.
  • Для TCP: tcp.port, tcp.src, tcp.dst, tcp.length, tcp.flag.syn|ack|fin|rst|psh|urg, tcp[a:b] (где a — смещение, b — тип данных), tcp contains «aaa» (для пакетов TCP, содержащих строку aaa).
  • Для UDP: аналогично TCP.
  • На прикладном уровне: HTTP, HTTP.get, HTTP.post, HTTP.head, HTTP.options, HTTP.put, HTTP.delete, HTTP.tarce, HTTP.url contains «aaa».

Данные в правилах фильтрации могут быть следующих типов: n8 (8-битное целое число без знака), n16 (16-битное целое число без знака), n32 (32-битное целое число без знака), byte (аналогично n8), bytes (список байтов), char (символ), chars (строка).

Логические операторы для объединения выражений: > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), == (равно), != (не равно), & (побитовое И).

Выражения могут быть объединены с помощью && (И) или || (ИЛИ), а также с использованием скобок. Например, чтобы получить пакеты GET или POST длиной более 128 байт, можно использовать выражение: tcp.length>128 and (tcp[chars]==«GET» or tcp[chars]= =«POST»).

Основные улучшения в SnifferView по сравнению с Wireshark:

В Wireshark фильтрация содержимого пакетов осуществляется с использованием выражения tcp[a:b], где a — смещение от начала пакета, а b — длина совпадения. Это неудобно, так как смещение отсчитывается от заголовка TCP, который может иметь разную длину. В SnifferView смещение начинается с пользовательских данных, и программа автоматически вычисляет длину заголовка TCP. Также поддерживается фильтрация по различным типам данных и автоматическое вычисление длины совпадения. Если в строке есть символы \n\r, они автоматически заменяются на символы возврата каретки и перевода строки.

Например, выражение tcp[4:n16]==0x33ee будет соответствовать 16-разрядному целому числу 0x33ee, начиная с 4-го байта пользовательских данных. Выражение tcp[5:chars]=="aaaa" будет соответствовать строке aaaa, начиная с 5-го байта пользовательских данных.

Конфигурационный интерфейс содержит опции для выбора порядка байтов: хост (данные хранятся в порядке байтов хоста) и сеть (данные хранятся в сетевом порядке байтов). Выбор порядка байтов влияет на способ интерпретации данных в выражениях фильтрации.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/lougd-snifferview.git
git@api.gitlife.ru:oschina-mirror/lougd-snifferview.git
oschina-mirror
lougd-snifferview
lougd-snifferview
master