土豆不吐皮 发表于 2026-1-13 19:24:12

一、开发初衷核心使命
政企级敏感信息清理神器的开发,旨在为政府部门、企事业单位以及所有涉及个人信息处理的工作场景,提供一套高效、可靠的解决方案,帮助用户全面清理和管理电脑中的个人敏感信息,从根源上防范信息泄露风险,切实保障公民个人信息安全。
背景与需求
在数字化转型加速的今天,政府部门和企事业单位的日常办公中积累了大量包含公民个人敏感信息的电子文件。这些信息涵盖身份证号、手机号、银行卡号、邮箱地址等核心隐私数据,一旦因误操作、设备丢失或网络攻击导致泄露,将给公民带来不可估量的隐私侵犯和财产损失,同时也会使相关单位面临严峻的法律责任和声誉危机。
传统的手动清理方式存在诸多弊端:
因此,我们开发了这款敏感文件扫描工具2.0,通过自动化、智能化的技术手段,解决上述痛点,为用户提供全方位的敏感信息保护。
设计理念二、项目架构与核心功能项目结构
  1. 敏感文件扫描工具2.0/
  2. ├── config/              # 配置管理模块
  3. ├── core/                # 核心功能模块
  4. ├── ui/                  # 界面模块
  5. ├── utils/               # 工具模块
  6. ├── main.py              # 主程序入口
  7. ├── README.md            # 项目说明文档
  8. ├── requirements.txt     # 依赖包列表
  9. ├── build_exe.spec       # 64位打包配置文件
  10. ├── build_exe_32bit.spec  # 32位打包配置文件
  11. ├── 打包说明.md           # 打包详细说明
  12. └── 快速打包指南.md        # 打包简化指南
复制代码

核心模块解析1. 配置管理模块(config/)2. 核心功能模块(core/)扫描核心(scanner.py)文件处理(file_processor.py)敏感信息检测(regex_patterns.py)3. 界面模块(ui/)4. 工具模块(utils/)技术栈三、功能特性1. 全面的文件格式支持2. 丰富的敏感信息检测3. 高效的扫描机制4. 直观的结果展示5. 完善的文件管理功能6. 安全的加密解密功能7. 完整的扫描历史记录8. 灵活的配置选项四、使用指南安装方式安装与运行基本使用流程高级功能使用1. 自定义扫描规则2. 管理扫描历史3. 敏感文件加密解密4. 优化配置参数打包指南
如果需要自行打包生成可执行文件,可参考项目中的打包相关文档:
五、适用场景六、技术亮点七、版本信息 640 (1).png
640 (2).png
640 (3).png
640.png
核心代码:
main.py
核心扫描代码:scaner.py
[Python]
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 敏感文件扫描核心模块
  5. """

  6. import os
  7. import re
  8. import time
  9. import json
  10. from typing import List, Dict, Callable, Optional
  11. from pathlib import Path

  12. from PyQt5.QtCore import QThread, pyqtSignal

  13. from config.config_manager import ConfigManager
  14. from core.regex_patterns import RegexPatterns
  15. from core.file_processor import FileProcessor


  16. class ScanWorker(QThread):
  17.     """
  18.     扫描工作线程类
  19.     """
  20.     # 定义信号
  21.     results_updated = pyqtSignal(list)
  22.     progress_updated = pyqtSignal(int, float, float)
  23.     scan_completed = pyqtSignal(dict)
  24.      
  25.     def __init__(self, path: str, recursive: bool = True):
  26.         """
  27.         初始化扫描工作线程
  28.          
  29.         Args:
  30.             path: 扫描路径
  31.             recursive: 是否包含内部文件夹
  32.         """
  33.         super().__init__()
  34.         self.path = path
  35.         self.recursive = recursive
  36.         self.is_scanning = False
  37.          
  38.         self.config_manager = ConfigManager()
  39.         self.regex_patterns = RegexPatterns()
  40.         self.file_processor = FileProcessor()
  41.          
  42.         self.scan_results = []
  43.         self.scan_start_time = 0
  44.         self.total_files = 0
  45.         self.scanned_files = 0
  46.      
  47.     def _scan_file(self, file_path: str) -> List[Dict]:
  48.         """
  49.         扫描单个文件
  50.          
  51.         Args:
  52.             file_path: 文件路径
  53.             
  54.         Returns:
  55.             敏感信息匹配结果列表
  56.         """
  57.         results = []
  58.         # 确保文件路径是绝对路径
  59.         abs_file_path = os.path.abspath(file_path)
  60.         file_ext = os.path.splitext(abs_file_path)[1].lower()
  61.          
  62.         try:
  63.             # 读取文件内容
  64.             content = self.file_processor.read_file(abs_file_path)
  65.             
  66.             if content:
  67.                 # 匹配所有正则表达式
  68.                 for pattern_name, pattern in self.regex_patterns.get_all_patterns().items():
  69.                     matches = pattern.findall(content)
  70.                     if matches:
  71.                         # 去重
  72.                         unique_matches = list(set(matches))
  73.                         results.append({
  74.                             'file_path': abs_file_path,
  75.                             'pattern_name': pattern_name,
  76.                             'matches': unique_matches,
  77.                             'match_count': len(unique_matches)
  78.                         })
  79.         except Exception as e:
  80.             pass
  81.          
  82.         return results
  83.      
  84.     def _scan_directory(self, directory: str, recursive: bool = True) -> List[Dict]:
  85.         """
  86.         扫描目录
  87.          
  88.         Args:
  89.             directory: 目录路径
  90.             recursive: 是否包含内部文件夹
  91.             
  92.         Returns:
  93.             敏感信息匹配结果列表
  94.         """
  95.         results = []
  96.         file_list = []
  97.          
  98.         # 确保目录路径是绝对路径
  99.         abs_directory = os.path.abspath(directory)
  100.          
  101.         # 获取所有文件
  102.         if recursive:
  103.             for root, _, files in os.walk(abs_directory):
  104.                 for file in files:
  105.                     # 拼接绝对路径
  106.                     file_path = os.path.join(root, file)
  107.                     file_list.append(file_path)
  108.         else:
  109.             for file in os.listdir(abs_directory):
  110.                 # 拼接绝对路径
  111.                 file_path = os.path.join(abs_directory, file)
  112.                 if os.path.isfile(file_path):
  113.                     file_list.append(file_path)
  114.          
  115.         self.total_files = len(file_list)
  116.         self.scanned_files = 0
  117.          
  118.         # 开始扫描
  119.         for file_path in file_list:
  120.             if not self.is_scanning:
  121.                 break
  122.             
  123.             file_results = self._scan_file(file_path)
  124.             if file_results:
  125.                 results.extend(file_results)
  126.                 # 发送结果更新信号
  127.                 self.results_updated.emit(file_results)
复制代码

下载链接:

本主题需向作者支付 6 阁豆 才能浏览 购买主题
页: [1]
查看完整版本: 政企级敏感信息清理神器!支持 Office/PDF/ 多格式文件批量扫描