文件混淆器用户手册
文件混淆器将一个文件与图像打包在一起。生成的图像通常仍可正常查看,IoTSploit 则可以从中恢复附加的文件。隐藏和提取操作主要在本机完成,离线版本也提供此工具。
这是一种适用于受控场景的便捷封装格式,不能替代经过安全审查的加密压缩包或文件传输服务。当前实现是在图像末尾附加数据,并不是把数据写入图像像素。文件分析工具能够发现其中的 ZIP 数据。
在 IoTSploit 应用中:
- 打开 Toolkit。
- 选择 File Obfuscation。
- 根据任务打开 Hide Files 或 Extract Files 标签页。

开始前的准备
Section titled “开始前的准备”隐藏文件需要准备:
- 一个待封装的文件;
- 一个能被当前平台图像选择器识别的载体图像;
- 一个可以妥善保存的密码;
- 足够容纳输入文件、载体图像和输出数据的可用内存。
IoTSploit 会把两个输入文件读入内存。设备内存不足时,大文件或大图像可能处理失败。输出文件也会比原载体大,因为其中包含原始图像字节和追加的 ZIP 数据。
提取时必须使用原密码,IoTSploit 不提供密码找回功能。
将文件附加到图像
Section titled “将文件附加到图像”- 打开 Hide Files 标签页。
- 在 Select File to Hide 区域点击 Select File,选择待封装文件。
- 在 Select Carrier Image 区域点击 Select Image,选择载体图像。
- 在 Set Password 区域输入提取时使用的密码。
- 点击 Process Obfuscation。
在 Web 端,浏览器会下载名为 obfuscated_<载体文件名> 的文件。在其他受支持的平台上,IoTSploit 会打开保存对话框,并使用相同的建议文件名。
请始终把结果作为文件传输。任何调整尺寸、优化或重新编码图像的服务,都可能删除追加的数据;即使图像外观没有变化,也可能已经无法提取文件。
可选的服务器上传
Section titled “可选的服务器上传”操作成功后,非离线版本可能会显示 Upload to Server。该操作会把生成的文件发送到应用中配置的服务器,并返回下载地址。
服务器上传与本地混淆是两个独立步骤。上传前,请确认配置的服务器可信,并确保所选内容符合组织的数据管理要求。离线版本不会显示此选项。
- 打开 Extract Files 标签页。
- 在 Select Obfuscated Image 区域点击 Select Image,选择由文件混淆器生成的文件。
- 在 Enter Decryption Password 区域输入原密码。
- 点击 Extract File。
- 按提示保存恢复的文件。
IoTSploit 会从附加的元数据中读取原始文件名,并将其用作建议的输出文件名。
Web 应用会先尝试在浏览器中提取。如果失败,已配置服务器的版本可能继续调用服务器提取接口。非 Web 版本不会使用此服务器回退流程。
文件格式如何工作
Section titled “文件格式如何工作”当前实现执行以下步骤:
- 使用密码、16 字节盐值和 HMAC-SHA-256 派生 32 字节密钥。
- 使用 CBC 模式的 AES 加密所选文件。
- 将加密数据和
metadata.json写入 ZIP。元数据包含原始文件名、盐值和创建时间。 - 在不改动载体图像原始字节的情况下,将 ZIP 数据追加到图像末尾。
提取时,IoTSploit 查找 ZIP 文件头,读取元数据和加密文件,使用密码派生相同的密钥,再解密文件内容。
许多图像解码器会忽略文件末尾的额外字节,因此载体通常仍可正常查看。具体行为取决于图像格式和解码器,不能保证所有图像工具都接受或原样保留输出。
使用前需要了解以下限制:
- 附加数据可以被发现。 文件分析工具能够识别 ZIP 标记和图像末尾的数据。
- 该封装不提供认证。 当前 AES-CBC 实现没有消息认证码,不能可靠判断内容是否遭到恶意修改。
- 密码强化能力有限。 当前密钥派生只执行一次 HMAC-SHA-256,并非 PBKDF2、scrypt 或 Argon2。弱密码更容易被离线猜测。
- 当前实现并未在所有位置使用密码学安全的随机数。 不应把该格式视为经过审查的加密存储系统。
- 元数据没有加密。 ZIP 中的
metadata.json会以明文保存原始文件名和创建时间。 - 图像可以打开不代表文件可以恢复。 追加数据被删除或损坏后,图像仍可能正常显示。
对于敏感资料,应使用持续维护、提供认证加密的存储或传输格式。文件混淆器更适合演示、格式实验,以及参与者充分了解上述限制的受控流程。
传输时避免破坏输出
Section titled “传输时避免破坏输出”接收端必须获得逐字节一致的文件。应使用能把输出作为附件或压缩包原样传输的方式。
删除原输出前:
- 完成文件传输;
- 比较两端的文件大小或密码学哈希;
- 与接收方进行一次提取测试;
- 单独保留原文件备份。
不要把图像粘贴到聊天输入框或图像编辑器中。很多应用会解码后重新保存图像,从而丢弃末尾的 ZIP 数据。以文档形式发送可能保留原始字节,但仍应验证接收到的文件,不能只凭传输方式判断。
“Please select both a file to hide and a carrier image”
Section titled ““Please select both a file to hide and a carrier image””点击 Process Obfuscation 前必须选择待隐藏文件和载体图像。如果表单中不再显示文件名,请重新选择对应输入。
“Please enter a password for encryption”
Section titled ““Please enter a password for encryption””在 Set Password 中输入非空密码。生成输出前请先保存密码,因为应用无法帮助找回。
“No hidden file found in the image”
Section titled ““No hidden file found in the image””所选文件中没有预期的 ZIP 文件头,或者追加的数据已被其他应用删除或修改。
- 选择最初生成的
obfuscated_...文件; - 比较当前文件与 IoTSploit 输出时的文件大小;
- 如果文件被重新编码,请重新执行隐藏操作。
“Metadata file not found”或“Encrypted file not found”
Section titled ““Metadata file not found”或“Encrypted file not found””追加的 ZIP 数据不完整,或者该文件不是 IoTSploit 文件混淆器生成的封装。请使用原始输出,并避免使用会修改文件的工具。
图像正确但提取失败
Section titled “图像正确但提取失败”检查密码的大小写、空格和其他字符是否完全一致。如果密码无误,加密数据可能已被截断或修改。重新生成输出,并在传输前完成一次提取测试。
处理大文件时失败
Section titled “处理大文件时失败”工具会同时在内存中保存所选文件、图像、ZIP 和输出数据。请尝试缩小输入文件或载体图像,关闭其他应用后重试。
即使取消保存对话框,处理过程也可能已经完成。请重新执行操作,并在提示时选择保存位置。
每次生成输出时:
- 使用密码管理器生成并保存唯一密码;
- 创建混淆图像;
- 立即提取一次,完成往返测试;
- 使用能保留原始字节的方式传输;
- 在接收端再次验证提取;
- 按适当的安全要求保留原文件备份。
载体看起来是否像普通图像并不能证明数据完整,往返提取测试才是关键。