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用户