Sharppcap
Полностью управляемая библиотека по кросс -платформе (Windows, Mac, Linux) для захвата пакетов с живых и файловых устройств
Официальный репозиторий SharppCap.
Оглавление
- Функции
- Примеры
- Устройства листинга
- Захват пакетов
- Чтение из файла захвата
- Написание в файл захвата
- CI поддержка
- Выпуски
- Платформа конкретные примечания
- Миграция с 5.x до 6,0
Функции
Для рассечения и создания пакетов см. Packet.net.
Примеры
См. Папку «Примеры» для ряда полных примеров проектов с использованием SharpPCAP
Устройства листинга
var devices = CaptureDeviceList . Instance ;
foreach ( var dev in devices )
Console . WriteLine ( "{0} n " , dev . ToString ( ) ) ; Захват пакетов
void Device_OnPacketArrival ( object s , PacketCapture e )
{
Console . WriteLine ( e . GetPacket ( ) ) ;
}
using var device = LibPcapLiveDeviceList . Instance [ 0 ] ;
device . Open ( ) ;
device . OnPacketArrival += Device_OnPacketArrival ;
device . StartCapture ( ) ; Чтение из файла захвата
void Device_OnPacketArrival ( object s , PacketCapture e )
{
Console . WriteLine ( e . GetPacket ( ) ) ;
}
using var device = new CaptureFileReaderDevice ( "filename.pcap" ) ;
device . Open ( ) ;
device . OnPacketArrival += Device_OnPacketArrival ;
device . Capture ( ) ; Написание в файл захвата
using var device = new CaptureFileWriterDevice ( "somefilename.pcap" , System . IO . FileMode . Open ) ;
var bytes = new byte [ ] { 1 , 2 , 3 , 4 } ;
device . Write ( bytes ) ; CI поддержка
У нас есть поддержка ряда систем CI по нескольким причинам:
- Разнообразие систем CI на случай, если один из них отключится
- Примеры, если вы хотите настроить SharpPCAP и использовать одну из этих систем CI для внутренних сборков. Обратите внимание, что мы предполагаем, что вы следуете лицензии на библиотеку.
Выпуски
SharppCap выпущен через Nuget
Платформа конкретные примечания
- OSX (по крайней мере, на 11,1) не хватает libpcap с pcap_open
Спасибо
Sharppcap - это то, где он находится сегодня из -за ряда разработчиков, которые обеспечили улучшения и исправления, и пользователей, которые предоставили полезные отзывы через проблемы и запросы функций.
Мы особенно ценим ряд проектов, на которых мы строим (как Sharppcap - это обертка C#):
- Libpcap - Большое спасибо за то, что выпустили 1.10
- NPCAP - для продолжения поддержки захвата пакетов в Windows
Миграция с 5.x до 6,0
Мы надеемся, что вы найдете API 6.x быть более чистым и проще в использовании.
6.0 приносит ряд очистков, которые привели к разрыву API для пользователей 5.x.
Чтобы помочь с миграцией с 5.x до 6.0, вот список некоторых изменений, которые вам придется внести в использование SharppCap.
Примеры также являются отличным ресурсом, поскольку они показывают рабочие примеры, используя последний API.
- Данные пакета возвращаются через PacketCapture, в которой используется READONLYSPAN <>.
- Преобразование из readonlyspan <> в Rawcapture выполняется PacketCapture.getPacket ().
- Это избегает распределения памяти во время захвата пакетов.
- Избегая распределения памяти и копирования памяти, необработанная производительность захвата может быть на 30% быстрее.
- SPAN идеально подходят для вариантов использования, когда пакеты сбрасываются на диск для последующей обработки.
- NativeLibrary используется для улучшения разрешения библиотеки захвата
- Улучшает ситуацию с разрешением библиотеки на Linux Distros, где существует символика Symlink.so.xy, но нет Libpcap.so Symlink
- Поддержка Mono DLLMAP была удалена, поскольку Mono поддерживает NativeLibrary. См. Https://www.mono-project.com/news/2020/08/24/native-loader-net5/
- Устройства идентифицируются
- Удалить вызовы, чтобы закрыть ()
- Switch 'var device = xxx;' to 'с помощью device = xxx;'
- Переименовать OpenFlags -> DeviceModes
- Методы Open () были развернуты в меньшем количестве методов с переменными по умолчанию.
- DeviceMode был заменен DeviceModes, так как DeviceMode не смог покрыть все комбинации способов, которые вы могли бы открыть устройство.
- Npcapdevice -> libpcaplivedevice
- Если вы используете npcapdevice, вам следует рассмотреть возможность использования libpcaplivedevice. Последние версии NPCAP поставляются с более новыми версиями LibPCAP, которые обеспечивают практически всю функциональность нативных API NPCAP.
- Текущий разрыв здесь является режим статистики, в настоящее время поддерживается только NPCAP.
- Были разговоры о обертке статистического режима, которая обеспечивала бы аналогичную функциональность, хотя и без того же уровня эффективности, что и в ядре или драйвере, как в Windows, для систем LibPCAP.
- Winpcap был устарел
- Мы рекомендуем переключиться на LibpcapliveVice
- Отдаленная аутентификация
- Если вы используете remoteAuthentication, некоторые функциональные возможности были сложены в этот класс, и API изменился, чтобы удалить использование ICRedentials и NetworkCredentials.