SelahattinSert/pfg

GitHub: SelahattinSert/pfg

一款基于 Rust 构建的本地隐私元数据审计与清理工具,支持对图像、PDF 和 Office 文档中的隐藏位置信息、设备标识及个人身份数据进行扫描、脱敏和验证。

Stars: 0 | Forks: 0

![Privacy File Guard Banner](https://static.pigsec.cn/wp-content/uploads/repos/cas/8a/8ab710c3eca581f5c54550caccb081944b7139b1090a2ed6dfd0c1be393e3d37.jpg) # Privacy File Guard (PFG) [![Rust](https://img.shields.io/badge/Rust-2021-orange.svg)](https://www.rust-lang.org/) [![Tauri](https://img.shields.io/badge/Tauri-2.0-blue.svg)](https://tauri.app/) [![License](https://img.shields.io/badge/License-MPL--2.0-brightgreen.svg)](LICENSE) [![Security](https://img.shields.io/badge/Unsafe-Forbidden-success.svg)](crates/pfg-core/src/lib.rs) ## 概要总结与架构 Privacy File Guard 有助于在分享或发布文档和图像时防止意外的隐私泄露。它采用模块化的 Rust workspace 架构(`#![forbid(unsafe_code)]`)构建,PFG 完全在您的本地设备上处理文件,无需外部网络连接。 ### 格式支持矩阵 | 格式类别 | 格式 | 扫描与清理的元数据 | | :--- | :--- | :--- | | **位图图像** | `.jpg`, `.jpeg`, `.png`, `.webp` | EXIF, GPS, 相机型号, 镜头序列号, XMP 流, PNG `tEXt`/`iTXt`/`zTXt` 数据块, WebP EXIF/XMP 数据块。 | | **PDF 文档** | `.pdf` | `/Info` 字典 (作者, 创建者, 制作程序, 标题), `/Metadata` XMP 流, `/OpenAction` JavaScript, `/Annots` (在严格模式下)。保留 Catalog 和 Page tree。 | | **Office 文档** | `.docx`, `.xlsx`, `.pptx` | `docProps/core.xml` (作者, 最后修改者, 日期), `docProps/app.xml` (公司, 经理), 自定义属性, 缩略图, VBA 宏 (`vbaProject.bin`) 以及评论。 | ## 配置文件与隐私保障 ### 清理配置文件 - **均衡配置文件 (默认)**:清除 PII、位置数据、相机序列号、作者身份、评论和高风险元数据属性,同时保留基本的渲染属性,例如颜色配置文件 (`iCCP`) 和物理尺寸 (`pHYs`)。 - **严格配置文件**:剥离所有非必要的元数据属性、自定义属性、评论、缩略图和注释,以实现最大程度的隐私保护。 ### 现实的保障承诺 Privacy File Guard 对支持的文件格式执行本地元数据清理和清理后的验证检查。它不对文档中人类可读的文本内容、隐藏的隐写术或无法识别的专有流格式提供绝对保证。 ## 前置条件与构建 ### 前置条件 Privacy File Guard 需要 **Rust** (`rustup`) 和 **Node.js**。 #### Fedora / RHEL Linux: ``` sudo dnf install -y webkit2gtk4.1-devel libsoup3-devel gtk3-devel libappindicator-gtk3-devel librsvg2-devel ``` #### Ubuntu / Debian Linux: ``` sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libsoup-3.0-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev ``` #### Windows / macOS: 标准 Rust 工具链 (`cargo`)。 ### 构建与测试 ``` git clone https://github.com/SelahattinSert/pfg.git cd pfg # 执行完整工作区 unit & integration test suite cargo test --workspace ``` ## 使用指南 ### 1. 桌面图形用户界面 (GUI) 启动桌面应用程序: ``` cargo run -p pfg-desktop ``` - **单文件模式**:拖放任何受支持的图像或文档以检查发现的结果,切换未脱敏的原始值,并执行基于配置文件的清理。 - **批处理目录模式**:选择一个文件夹以运行并行多核审计和就地事务性清理。 ### 2. 命令行界面 (CLI) ``` # 扫描单个文件 cargo run -p pfg-cli -- scan /path/to/document.pdf # 使用 Balanced profile 清理文件(输出 document.pfg.pdf) cargo run -p pfg-cli -- clean /path/to/document.pdf # 使用 Strict profile 清理文件至自定义输出目录 cargo run -p pfg-cli -- clean /path/to/image.jpg --profile strict --output-dir /path/to/output # 验证原始文件与清理后文件之间的清洁状态 cargo run -p pfg-cli -- verify /path/to/original.jpg /path/to/image.pfg.jpg # 多线程批量目录扫描 cargo run -p pfg-cli -- scan /path/to/folder -r -j 8 # 多线程批量原地清理 cargo run -p pfg-cli -- clean /path/to/folder -r --in-place ``` ### CLI 退出码 - `0`:操作完全成功 / 验证通过。 - `1`:达到或超过阈值(使用 `--fail-on` 时)。 - `2`:未找到目标文件或目录 / IO 错误。 - `3`:不支持的文件格式。 - `4`:目标文件已损坏或无法解析。 - `5`:清理操作失败。 - `6`:验证失败。 ## Workspace 架构 ``` privacy-file-guard-source/ ├── docs/ │ └── privacy_file_guard_banner.jpg ├── crates/ │ ├── pfg-model/ # Privacy-safe domain models & finding structures │ ├── pfg-policy/ # Profile policy engine & severity categorization │ ├── pfg-format-image/ # JPEG, PNG, WebP parsers & EXIF orientation engine │ ├── pfg-format-pdf/ # PDF redactors & structural validators │ ├── pfg-format-office/ # DOCX, XLSX, PPTX OOXML ZIP sanitizers │ ├── pfg-core/ # Rayon parallel batch engine & policy verifier │ ├── pfg-cli/ # Command Line Interface (CLI) application │ └── pfg-desktop/ # Tauri 2 + React desktop GUI application └── Cargo.toml ``` ## 安全策略与许可证 - **安全性**:此 workspace 中的每个 crate 都在顶级 crate 根目录强制执行 `#![forbid(unsafe_code)]`。 - **许可证**:在 [Mozilla Public License 2.0 (MPL-2.0)](LICENSE) 下分发。
标签:MITM代理, Rust, Tauri, 元数据清理, 可视化界面, 数据脱敏, 桌面应用, 网络安全, 网络流量审计, 通知系统, 隐私保护