# secscn **Repository Path**: redalxgit/secscn ## Basic Information - **Project Name**: secscn - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-30 - **Last Updated**: 2026-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SecScan 敏感词扫描工具 一个基于 Go + Wails 的桌面应用,扫描文件系统及压缩包内文档/文本/图片中的敏感词,提供图形界面与命令行两种使用方式。 ## ✨ 功能特性 - **多格式支持**: - 📄 Office 文档:`.docx/.xlsx/.pptx`(纯Go)、`.doc/.xls/.ppt` 及 WPS `.wps/.et/.dps`(office_oxide/Rust 引擎) - 📄 PDF:文本型 PDF 直接提取 - 📝 文本类:`.txt/.md/.json/.html/.xml/.csv/.log/.yaml/.ini` 及各类源代码 - 🖼️ 图片:`.png/.jpg/.bmp/.gif/.webp/.tiff`(OCR 识别中英文) - 📦 压缩包:`.zip/.tar/.gz/.rar/.7z`(递归解压扫描,含嵌套) - **智能匹配**: - AC 自动机多模式高性能匹配 - 文本规范化抗干扰(去零宽字符、全角转半角、折叠空白) - 子串包含匹配、大小写可配置 - 命中上下文片段展示 - **易用 GUI**: - 配置面板(敏感词编辑、参数调整、保存配置) - 实时进度条与统计 - 结果表格(敏感词高亮、来源标记、可过滤、双击打开文件位置) - 一键导出报告(HTML/JSON/CSV) ## 📦 获取与运行 ### 直接使用(免安装) `secscan.exe` 是单文件可执行程序,**无需安装**,双击即可运行。 > 运行依赖:Windows 10/11(自带 WebView2 运行时)。 > 如需图片 OCR,将 `third_party/RapidOCR-json/` 放在 exe 同目录(可选)。 ### 界面操作 1. **选择扫描目标**:点击 📁 选择目录,或 📄 选择单个文件 2. **配置敏感词**:在文本框输入(每行一个),或点击「从文件加载」导入词库 3. **调整参数**(可选):Worker 数、上下文长度、匹配选项 4. **开始扫描**:点击「▶ 开始扫描」,进度实时显示 5. **查看结果**:结果表格实时填充,可用搜索框过滤,双击行在资源管理器定位文件 6. **导出报告**:点击「📁 查看报告」打开报告目录(HTML 报告可直接浏览器查看) ## 🔧 配置说明 `config.json` 与 exe 同目录,支持以下配置: ```json { "sensitive_words": ["张三", "李四"], "sensitive_words_file": "words.txt", "file_types": { "documents": [".docx", ".doc", ".xlsx", ".xls", ".pptx", ".ppt", ".pdf"], "text": [".txt", ".md", ".json", ".html", ".xml", ".csv", ".log"], "images": [".png", ".jpg", ".jpeg", ".bmp", ".gif"], "archives": [".zip", ".tar", ".gz", ".rar", ".7z"] }, "match": { "case_sensitive": false, "substring_match": true, "normalize": true, "context_length": 30 }, "scan": { "worker_count": 4, "max_file_size_mb": 200, "max_archive_depth": 5, "max_extracted_size_mb": 1000 }, "ocr": { "enabled": true, "binary_path": "./third_party/RapidOCR-json/RapidOCR-json.exe", "min_confidence": 0.6 }, "output": { "report_dir": "./reports", "formats": ["json", "csv", "html"] } } ``` GUI 中修改的配置会自动保存到此文件。 ## 💻 命令行使用 也提供 CLI 版本(`secscan-cli.exe`): ```bash # 扫描目录 secscan-cli.exe -dir "D:\docs" -config config.json # 扫描单个文件 secscan-cli.exe -file "report.pdf" # 生成默认配置模板 secscan-cli.exe -initconfig # 详细日志 secscan-cli.exe -dir . -v ``` ## 🏗️ 从源码构建 ### 环境要求 - Go 1.21+ - Node.js 15+(仅 Wails 前端构建用) - Wails CLI v2:`go install github.com/wailsapp/wails/v2/cmd/wails@latest` - (旧版 Office 解析)Rust 工具链 + gcc,见下方说明 ### 构建 GUI 版本(默认) ```bash wails build -webview2 embed # 产物:build/bin/secscan.exe(单文件,免安装) ``` ### 构建 CLI 版本 ```bash go build -tags cli -o secscan-cli.exe . ``` ### office_oxide(旧版 Office 解析,可选) 旧版 `.doc/.xls/.ppt` 解析依赖 [office_oxide](https://github.com/yfedoseev/office_oxide)(Rust + CGO): ```bash # 安装 Rust + gcc 后,在 office_oxide 仓库执行 cargo build --release --lib # 生成 target/release/liboffice_oxide.a # 构建 secscan 时指定 export CGO_ENABLED=1 export CGO_CFLAGS="-I/path/to/office_oxide/include/office_oxide_c" export CGO_LDFLAGS="-L/path/to/office_oxide/target/release -loffice_oxide -lws2_32 -lntdll -luserenv" wails build -tags office_oxide_dev -webview2 embed ``` 未启用 office_oxide 时,旧版格式会回退到 LibreOffice 转换(需安装 LibreOffice)。 ## 📂 项目结构 ``` secscan/ ├── main.go # Wails GUI 入口 ├── main_cli.go # CLI 入口(-tags cli) ├── app.go # GUI 后端绑定 ├── scanner.go # 扫描调度(并行 worker) ├── matcher.go # AC 自动机 + 文本规范化 ├── extract.go # 文档→文本 提取分派 ├── parsers.go # OOXML/PDF/HTML/XML 解析 ├── archive.go # 压缩包递归解压 ├── ocr.go # RapidOCR 封装 ├── office_oxide.go # office_oxide (CGO) 封装 ├── libreoffice.go # LibreOffice 转换(回退) ├── report.go # HTML/JSON/CSV 报告 ├── config.go # 配置加载 ├── config.json # 配置文件 ├── words_example.txt # 示例词库 ├── frontend/dist/ # 前端资源(HTML/CSS/JS) └── third_party/ └── RapidOCR-json/ # OCR 引擎(可选) ``` ## 📄 许可 本工具代码遵循 MIT 协议。第三方组件(office_oxide、RapidOCR 等)遵循各自许可。