chaika2013/wireshark-flake
GitHub: chaika2013/wireshark-flake
wireshark-flake:macOS上非root用户使用Wireshark进行数据包捕获的解决方案。
Stars: 0 | Forks: 0
# Wireshark
一个提供 [nix-darwin](https://github.com/LnL7/nix-darwin) 模块的 Nix flake,该模块在 macOS 上安装 Wireshark 并配置 `ChmodBPF` launchd 守护进程,以便非 root 用户可以在 `/dev/bpf*` 设备上捕获数据包。
## 使用方法
将 flake 作为输入添加到您的 `flake.nix` 中:
```
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nix-darwin = {
url = "github:LnL7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
wireshark = {
url = "github:chaika2013/wireshark-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nix-darwin, wireshark }: {
darwinConfigurations."my-host" = nix-darwin.lib.darwinSystem {
modules = [
wireshark.darwinModules.wireshark
{
wireshark.enable = true;
}
];
};
};
}
```
## 选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `wireshark.enable` | `bool` | `false` | 安装 Wireshark 并应用以下配置。 |
| `wireshark.chmodBPF` | `bool` | `true` | 安装 `org.wireshark.ChmodBPF` launchd 守护进程,在启动时授予 `/dev/bpf*` 的 `group read/write` 访问权限,并将 `config.users.users` 中定义的所有用户添加到 `access_bpf` 组。 |
## 工作原理
macOS 默认将 BPF (Berkeley Packet Filter) 设备 (`/dev/bpf*`) 的访问权限限制为 root,这阻止了 Wireshark 在没有 `sudo` 的情况下捕获数据包。
当 `wireshark.chmodBPF = true`(默认值)时,此模块:
1. 在 `system.activationScripts.postActivation` 中使用 `dseditgroup` **创建 `access_bpf` 组**,并将 `config.users.users` 中声明的每个用户添加到该组。
2. **安装一个 launchd 守护进程**(`org.wireshark.ChmodBPF`),在启动时运行并设置所有 `/dev/bpf*` 设备的 `g+rw` 权限,使 `access_bpf` 组的成员无需提升权限即可访问。
这复制了官方 Wireshark macOS 安装程序的 `ChmodBPF` 辅助程序的行为。
标签:Nix, NixOS, Wireshark, 协议分析, 句柄查看, 启动服务, 权限提升, 权限管理, 模型越狱, 系统分析, 系统模块, 系统组管理, 系统配置, 网络分析, 非root用户