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