2025-04-07 20:52:40 +08:00

4.1 KiB
Raw Blame History

文件名/目录名混淆与恢复工具 (Filename/Directory Obfuscation & Restoration Tool)

概述

这是一个 Python 脚本,用于对指定目录下的文件名和子目录名进行“混淆”处理,将它们替换为随机生成的 UUID (Universally Unique Identifier),同时保留原始的文件扩展名。脚本会生成一个 mapping.json 文件,记录原始名称与混淆后名称的对应关系。之后,可以使用这个 mapping.json 文件将文件名和目录名恢复到原始状态。

这对于需要隐藏原始文件结构或名称,但又希望能够恢复的场景非常有用(例如,临时分享文件,或对大量媒体文件进行初步匿名化处理)。

功能特性

  • 混淆 (Obfuscate):
    • 递归遍历指定目录下的所有文件和子目录。
    • 将每个文件(保留扩展名)和目录重命名为唯一的 UUID V4 字符串。
    • 在目标目录的根目录下创建一个 mapping.json 文件,存储 { "混淆后的相对路径": "原始相对路径" } 的映射关系。
    • 优先处理深层路径,确保目录在其内容被重命名后才被重命名。
    • 执行前会有确认提示,防止误操作。
    • 如果混淆过程中发生错误,会尝试根据已执行的操作进行回滚。
  • 恢复 (Restore):
    • 读取目标目录根目录下的 mapping.json 文件。
    • 根据映射关系,将混淆后的 UUID 名称恢复为原始的文件名和目录名。
    • 能够处理嵌套目录的恢复。
    • 执行前会有确认提示。
    • 处理过程中会检查路径是否存在,并报告错误。

依赖

  • Python 3.x
  • 标准库: os, json, uuid, argparse, sys, pathlib (无需安装额外的第三方库)

使用方法

通过命令行运行脚本。

python <脚本文件名>.py <模式> <目标目录路径>

参数说明:

  • <脚本文件名>.py: 你保存此脚本的文件名 (例如 obfuscator.py)。
  • <模式>:
    • obfuscate: 执行混淆操作。
    • restore: 执行恢复操作。
  • <目标目录路径>: 需要进行操作的文件夹的路径。

示例:

  1. 混淆目录 /data/my_videos 下的所有文件和子目录:

    python obfuscator.py obfuscate /data/my_videos
    

    执行前会要求确认。成功后,/data/my_videos 下的文件和目录名会被替换为 UUID并在 /data/my_videos 目录下生成 mapping.json

  2. 恢复目录 /data/my_videos 下的原始名称:

    python obfuscator.py restore /data/my_videos
    

    执行前会要求确认。脚本会查找 /data/my_videos/mapping.json 文件,并根据其内容恢复原始名称。

重要提示与警告

  1. 备份数据: 强烈建议在运行此脚本(尤其是 obfuscate 模式)之前备份您的重要数据! 脚本会直接重命名文件和目录,虽然有恢复机制,但意外情况(如 mapping.json 丢失或损坏)可能导致数据难以恢复。
  2. mapping.json 文件: 这个文件是 恢复原始名称的关键。请务必妥善保管。如果丢失或损坏此文件,将 无法 通过此脚本恢复原始名称。
  3. mapping.json 的位置: 混淆操作会在目标目录的 根目录 下创建 mapping.json。恢复操作也需要在此目录下找到该文件才能工作。
  4. 重复混淆: 如果目标目录下已经存在 mapping.json 文件,再次执行 obfuscate 操作将会失败,并提示用户移除或重命名该文件。这是为了防止意外覆盖重要的映射信息。
  5. 恢复前提: restore 操作假定当前目录中的文件名和结构是上次 obfuscate 操作产生的结果,并且与 mapping.json 文件中的记录相符。如果手动修改了混淆后的名称或结构,恢复可能会失败或产生不正确的结果。
  6. 错误处理: 脚本包含基本的错误处理(如文件/目录不存在、权限问题),但可能无法覆盖所有边缘情况。如果在操作过程中遇到错误,请检查控制台输出信息。恢复操作在出错时不会删除 mapping.json 文件。