Project Icon

sharppcap

跨平台高性能网络数据包捕获与分析库

SharpPcap是一款跨平台的.NET网络数据包捕获库,支持Linux、Windows和Mac系统。它提供实时设备和文件设备的数据包捕获、设备列表、统计信息、数据包读写等功能。通过使用ReadOnlySpan<>优化内存管理,并支持Berkeley数据包过滤器,SharpPcap为网络分析和安全研究提供了高效的工具支持。该库完全托管,易于集成,是网络开发者的理想选择。

.NET Core

sharppcap

一个完全托管的、跨平台(Windows、Mac、Linux)的 .NET 库,用于从实时和基于文件的设备捕获数据包

SharpPcap 的官方仓库。

目录

  1. 功能特性
  2. 示例
  3. CI 支持
  4. 发布
  5. 平台特定说明
  6. 从 5.x 迁移到 6.0

功能特性

关于数据包解析和创建,请参见 Packet.Net

  • 在 Linux 上,支持 libpcap

  • 在 Windows 上,支持:

  • 在所有平台上:

    • 实时设备列表
    • 统计信息
    • 从实时设备(实际网络设备)和离线设备(捕获文件)读取数据包
    • 支持 Berkeley 数据包过滤器
    • 将数据包转储到 Pcap 文件
    • Pcap 和 pcap-ng 格式(当使用 libpcap >=1.1.0 或 npcap 时)
    • 使用 ReadOnlySpan<> 以避免 SharpPcap 内部的内存分配和复制,提供最佳性能
      • 提供辅助方法,用于将数据转换为对象实例,如果需要在内存中持久化捕获的数据包
  • NativeLibrary 支持

    • 捕获库解析在 Linux、OSX 和 Windows 上运行顺畅
    • 在 Linux 上干净地加载 libpcap,无论发行版是否有指向 libpcap.so 的符号链接
  • 支持 .NET Core 3 和 .NET Framework

示例

查看 Examples 文件夹,了解使用 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 版本)缺少带有 pcap_open 的 libpcap

致谢

SharpPcap 能够发展到今天的水平,要归功于许多提供改进和修复的开发者,以及通过问题和功能请求提供有用反馈的用户。

我们特别感谢一些我们所依赖的项目(因为 SharpPcap 是一个 C# 封装):

  • libpcap - 非常感谢发布 1.10 版本
  • npcap - 为 Windows 上继续提供数据包捕获支持

从 5.x 版本迁移到 6.0 版本

我们希望您会发现 6.x 的 API 更加简洁易用。

6.0 版本带来了许多清理工作,这导致了与 5.x 用户的 API 不兼容。

为了帮助从 5.x 迁移到 6.0,以下是您需要对 SharpPcap 使用进行的一些更改列表。

这些示例也是很好的资源,因为它们展示了使用最新 API 的工作示例。

  • 数据包数据通过 PacketCapture 返回,它使用 ReadOnlySpan<>。
    • 从 ReadOnlySpan<> 到 RawCapture 的转换由 PacketCapture.GetPacket() 执行。
    • 这避免了在数据包捕获过程中分配内存。
    • 通过避免内存分配和内存复制,原始捕获性能可能会提高高达 30%。
    • Span 非常适合将数据包转储到磁盘以供后续处理的用例。
  • 使用 NativeLibrary 以改进捕获库的解析
  • 设备实现 IDisposable 接口
    • 移除对 Close() 的调用
    • 将 'var device = xxx;' 改为 'using device = xxx;'
  • 将 OpenFlags 重命名为 DeviceModes
  • Open() 方法已合并为更少的方法,并带有默认变量。
  • DeviceMode 已被 DeviceModes 替代,因为 DeviceMode 无法涵盖打开设备的所有组合方式。
  • NpcapDevice 改为 LibPcapLiveDevice
    • 如果您正在使用 NpcapDevice,应考虑使用 LibPcapLiveDevice。最新版本的 Npcap 附带了较新版本的 libpcap,提供了几乎所有 Npcap 原生 API 的功能。
    • 当前的差距在于统计模式,目前仅由 Npcap 支持。
    • 有人提出过统计模式包装器的想法,可以提供类似的功能,尽管效率可能不如在 Windows 上在内核或驱动程序中实现的那样高,但可用于 libpcap 系统。
  • WinPcap 已被废弃
    • 我们建议切换到 LibPcapLiveDevice
  • 远程认证
    • 如果您正在使用 RemoteAuthentication,一些功能已被整合到这个类中,并且 API 已更改,不再使用 ICredentials 和 NetworkCredentials。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号