Sharppcap
Pustaka Cross Platform (Windows, Mac, Linux).
Repositori SharppCap resmi.
Daftar isi
- Fitur
- Contoh
- Perangkat daftar
- Menangkap paket
- Membaca dari file penangkapan
- Menulis ke file penangkapan
- Dukungan CI
- Pelepasan
- Catatan spesifik platform
- Migrasi dari 5.x ke 6.0
Fitur
Untuk diseksi dan pembuatan paket, lihat Packet.net.
Di Linux, dukungan untuk libpcap
Di Windows, dukungan untuk:
- Ekstensi NPCAP (sebelumnya WinPCAP), lihat Panduan API NPCAP
- Windivert (https://www.reqrypt.org/windivert.html)
Di semua platform:
- Daftar Perangkat Langsung
- Statistik
- Paket Membaca dari Perangkat Langsung (Perangkat Jaringan Aktual) dan Perangkat Offline (Capture Files)
- Dukungan untuk filter paket Berkeley
- Membuang paket ke file PCAP.
- Format PCAP dan PCAP-NG (saat menggunakan libpcap> = 1.1.0 atau NPCAP)
- Readonlyspan <> digunakan untuk menghindari alokasi memori dan menyalin di dalam sharppcap dan memberikan kinerja terbaik.
- Metode helper disediakan untuk mengonversi ke instance objek jika diinginkan untuk mempertahankan paket yang ditangkap dalam memori.
Dukungan NativeLibrary
- Capture Library Resolution beroperasi dengan lancar di Linux, OSX, dan Windows
- Memuat libpcap dengan bersih di linux apakah distro memiliki symlink ke libpcap.so atau tidak.
.NET Core 3 dan .NET Framework Support
Contoh
Lihat Folder Contoh untuk berbagai proyek contoh lengkap menggunakan showppcap
Perangkat daftar
var devices = CaptureDeviceList . Instance ;
foreach ( var dev in devices )
Console . WriteLine ( "{0} n " , dev . ToString ( ) ) ; Menangkap paket
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 ( ) ; Membaca dari file penangkapan
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 ( ) ; Menulis ke file penangkapan
using var device = new CaptureFileWriterDevice ( "somefilename.pcap" , System . IO . FileMode . Open ) ;
var bytes = new byte [ ] { 1 , 2 , 3 , 4 } ;
device . Write ( bytes ) ; Dukungan CI
Kami memiliki dukungan untuk sejumlah sistem CI karena beberapa alasan:
- Keragaman sistem CI jika salah satu dari mereka dimatikan
- Contohnya jika Anda ingin menyesuaikan SharppCap dan memanfaatkan salah satu sistem CI ini untuk build internal. Perhatikan bahwa kami menganggap Anda mengikuti lisensi untuk perpustakaan.
Pelepasan
Sharppcap dirilis melalui Nuget
Catatan spesifik platform
- OSX (setidaknya pada 11.1) tidak memiliki libpcap dengan pcap_open
Terima kasih
SharppCap adalah tempatnya saat ini karena sejumlah pengembang yang telah memberikan perbaikan dan perbaikan dan pengguna yang telah memberikan umpan balik yang bermanfaat melalui masalah dan permintaan fitur.
Kami sangat menghargai sejumlah proyek yang kami bangun (karena SharppCap adalah pembungkus C#):
- libpcap - terima kasih banyak telah merilis 1.10
- NPCAP - Untuk dukungan pengambilan paket yang berkelanjutan di Windows
Migrasi dari 5.x ke 6.0
Kami berharap Anda akan menemukan API 6.X lebih bersih dan lebih mudah digunakan.
6.0 membawa sejumlah pembersihan yang mengakibatkan kerusakan API untuk pengguna 5.x.
Untuk membantu dengan migrasi dari 5.x ke 6.0 berikut adalah daftar beberapa perubahan yang harus Anda lakukan untuk penggunaan sharppcap Anda.
Contohnya juga merupakan sumber yang bagus karena mereka menunjukkan contoh kerja menggunakan API terbaru.
- Data paket dikembalikan melalui PacketCapture yang memanfaatkan readonlyspan <>.
- Konversi dari ReadonLySpan <> ke RawCapture dilakukan oleh PacketCapture.getPacket ().
- Ini menghindari alokasi memori selama penangkapan paket.
- Dengan menghindari alokasi memori dan penyalinan memori, kinerja penangkapan mentah mungkin hingga 30% lebih cepat.
- SPAN sangat ideal untuk penggunaan kasus di mana paket sedang dibuang ke disk untuk pemrosesan selanjutnya.
- NativeLibrary digunakan untuk meningkatkan resolusi perpustakaan penangkapan
- Meningkatkan situasi resolusi perpustakaan pada distro linux di mana ada libpcap.so.xy symlink tapi tidak ada libpcap.so symlink
- Dukungan untuk mono DLLMAP telah dihapus sebagai mono mendukung nativeLibrary. Lihat https://www.mono-project.com/news/2020/08/24/native-loader-net5/
- Perangkat adalah idisposable
- Hapus panggilan ke tutup ()
- Sakelar 'var device = xxx;' ke 'menggunakan perangkat = xxx;'
- Ganti nama OpenFlags -> Devicemodes
- Metode terbuka () telah runtuh menjadi metode yang lebih sedikit dengan variabel default.
- Devicemode telah digantikan oleh Devicemodes karena Devicemode tidak dapat mencakup semua kombinasi cara Anda dapat membuka perangkat.
- Npcapdevice -> libpcapLivedEvice
- Jika Anda menggunakan npcapdevice, Anda harus mempertimbangkan untuk menggunakan libpcapLivedEvice. Versi terbaru dari NPCAP hadir dengan versi LibpCap yang lebih baru yang menyediakan hampir semua fungsionalitas API asli NPCAP.
- Kesenjangan saat ini di sini adalah mode statistik, saat ini hanya didukung oleh NPCAP.
- Telah ada pembicaraan tentang pembungkus mode statistik yang akan memberikan fungsionalitas yang serupa, meskipun tanpa tingkat efisiensi yang sama seolah -olah dilakukan di kernel atau driver seperti pada windows, untuk sistem libpcap.
- Winpcap telah sudah usang
- Kami merekomendasikan untuk beralih ke libpcapLivedEvice
- Otentikasi jarak jauh
- Jika Anda menggunakan RemoteAuthentication, beberapa fungsi telah dilipat ke dalam kelas ini dan API diubah untuk menghapus penggunaan ICREDENSI dan NetworkCredentials.