MoonBit抓包模块pcap,查看电脑的每一次联网通信

发布时间:2026/8/2 3:20:46
MoonBit抓包模块pcap,查看电脑的每一次联网通信 你的电脑每天都在联网看视频、刷网页、发消息、后台更新。这些联网动作本质上都是你的电脑在跟远处的服务器互相传递数据。传递的数据在网络上叫数据包就像公路上跑的一辆辆车。抓包就是站在路边把这些车一辆辆记下来什么时候经过的、多大、装的什么。chensuiyi/pcap是 MoonBit 语言的一个抓包模块专门负责这件事。它主要解决三个问题电脑上的软件都在跟谁通信通信量有多大通信发生在什么时候抓包需要什么条件Windows 系统本身不能直接抓包需要先装一个叫 Npcap 的驱动。它是 Windows 的官方抓包驱动相当于给系统装上了一个数据包收费站所有经过网卡的数据都要从它这里过。装好 Npcap 之后程序就能通过它拿到原始数据。chensuiyi/pcap模块做的事情就是帮 MoonBit 程序跟 Npcap 对接。它采用运行时动态加载的方式程序启动后自己去系统里找wpcap.dll文件。使用这个模块的人只需要安装 Npcap 本体不需要安装任何开发包。如何下载安装MoonBit 是一门新的编程语言语法风格类似 Rust 但更简洁编译成 WebAssembly 后体积小、速度快主要面向云原生场景。语言文档https://docs.moonbitlang.comMoonBit 工具链在 Windows 上用 PowerShell 一条命令安装Set-ExecutionPolicy RemoteSigned -Scope CurrentUser; irm https://cli.moonbitlang.com/install/powershell.ps1 | iex安装完成后验证一下moon --version能输出版本号就说明装好了。然后新建一个项目引入抓包模块moon new my-sniffer cd my-sniffer moon add chensuiyi/pcap一个完整示例整个抓包流程只有四步加载、查网卡、打开、收包。先写一个查看网卡列表的小程序fn main { match pcap.load() { Err(msg) { println(加载失败: \{msg}) return } Ok(_) () } let devs pcap.devices() for d in devs { println(\{d.name} —— \{d.description}) } }运行它moon run能看到本机所有网卡的名称和描述。再进一步打开第一个真实网卡循环收包把每个包的到达时间和大小打印出来fn main { match pcap.load() { Err(msg) { println(加载失败: \{msg}) return } Ok(_) () } let devs pcap.devices() match pcap.open(devs[0].name, 65535, true, 1000) { Err(msg) println(打开失败: \{msg}) Ok(pc) { while true { match pcap.next(pc) { Some(pkt) println(时间:\{pkt.ts_sec}.\{pkt.ts_usec} 长度:\{pkt.len} 字节) None () // 这一秒没有数据继续等 } } } } }运行后只要电脑上有网络活动屏幕上就会不断打印新抓到的数据包信息。每收到一个数据包你能拿到这些信息信息说明时间戳这个包是什么时候经过的捕获长度实际记录下来的数据大小原始长度这个包本来有多大原始数据包里的全部字节内容能做到什么效果网络卡顿时可以用它确认是否有软件在后台偷偷上传数据。写一个小程序抓包就能看到哪个软件、在什么时间、传了多少数据。网络程序调试遇到问题时可以用它确认数据是否真的发出、对方是否回应。持续运行一段时间抓包把数据存下来还能分析出电脑的主要通信对象。使用这个模块需要注意什么操作系统要求 Windows 10 或 11。必须安装 Npcap官网地址https://npcap.com部分系统需要管理员权限运行。