跳转到内容

文件混淆器用户手册

文件混淆器将一个文件与图像打包在一起。生成的图像通常仍可正常查看,IoTSploit 则可以从中恢复附加的文件。隐藏和提取操作主要在本机完成,离线版本也提供此工具。

这是一种适用于受控场景的便捷封装格式,不能替代经过安全审查的加密压缩包或文件传输服务。当前实现是在图像末尾附加数据,并不是把数据写入图像像素。文件分析工具能够发现其中的 ZIP 数据。

在 IoTSploit 应用中:

  1. 打开 Toolkit
  2. 选择 File Obfuscation
  3. 根据任务打开 Hide FilesExtract Files 标签页。

文件混淆界面,包括待隐藏文件、载体图像和密码三个步骤

隐藏文件需要准备:

  • 一个待封装的文件;
  • 一个能被当前平台图像选择器识别的载体图像;
  • 一个可以妥善保存的密码;
  • 足够容纳输入文件、载体图像和输出数据的可用内存。

IoTSploit 会把两个输入文件读入内存。设备内存不足时,大文件或大图像可能处理失败。输出文件也会比原载体大,因为其中包含原始图像字节和追加的 ZIP 数据。

提取时必须使用原密码,IoTSploit 不提供密码找回功能。

  1. 打开 Hide Files 标签页。
  2. Select File to Hide 区域点击 Select File,选择待封装文件。
  3. Select Carrier Image 区域点击 Select Image,选择载体图像。
  4. Set Password 区域输入提取时使用的密码。
  5. 点击 Process Obfuscation

在 Web 端,浏览器会下载名为 obfuscated_<载体文件名> 的文件。在其他受支持的平台上,IoTSploit 会打开保存对话框,并使用相同的建议文件名。

请始终把结果作为文件传输。任何调整尺寸、优化或重新编码图像的服务,都可能删除追加的数据;即使图像外观没有变化,也可能已经无法提取文件。

操作成功后,非离线版本可能会显示 Upload to Server。该操作会把生成的文件发送到应用中配置的服务器,并返回下载地址。

服务器上传与本地混淆是两个独立步骤。上传前,请确认配置的服务器可信,并确保所选内容符合组织的数据管理要求。离线版本不会显示此选项。

  1. 打开 Extract Files 标签页。
  2. Select Obfuscated Image 区域点击 Select Image,选择由文件混淆器生成的文件。
  3. Enter Decryption Password 区域输入原密码。
  4. 点击 Extract File
  5. 按提示保存恢复的文件。

IoTSploit 会从附加的元数据中读取原始文件名,并将其用作建议的输出文件名。

Web 应用会先尝试在浏览器中提取。如果失败,已配置服务器的版本可能继续调用服务器提取接口。非 Web 版本不会使用此服务器回退流程。

当前实现执行以下步骤:

  1. 使用密码、16 字节盐值和 HMAC-SHA-256 派生 32 字节密钥。
  2. 使用 CBC 模式的 AES 加密所选文件。
  3. 将加密数据和 metadata.json 写入 ZIP。元数据包含原始文件名、盐值和创建时间。
  4. 在不改动载体图像原始字节的情况下,将 ZIP 数据追加到图像末尾。

提取时,IoTSploit 查找 ZIP 文件头,读取元数据和加密文件,使用密码派生相同的密钥,再解密文件内容。

许多图像解码器会忽略文件末尾的额外字节,因此载体通常仍可正常查看。具体行为取决于图像格式和解码器,不能保证所有图像工具都接受或原样保留输出。

使用前需要了解以下限制:

  • 附加数据可以被发现。 文件分析工具能够识别 ZIP 标记和图像末尾的数据。
  • 该封装不提供认证。 当前 AES-CBC 实现没有消息认证码,不能可靠判断内容是否遭到恶意修改。
  • 密码强化能力有限。 当前密钥派生只执行一次 HMAC-SHA-256,并非 PBKDF2、scrypt 或 Argon2。弱密码更容易被离线猜测。
  • 当前实现并未在所有位置使用密码学安全的随机数。 不应把该格式视为经过审查的加密存储系统。
  • 元数据没有加密。 ZIP 中的 metadata.json 会以明文保存原始文件名和创建时间。
  • 图像可以打开不代表文件可以恢复。 追加数据被删除或损坏后,图像仍可能正常显示。

对于敏感资料,应使用持续维护、提供认证加密的存储或传输格式。文件混淆器更适合演示、格式实验,以及参与者充分了解上述限制的受控流程。

接收端必须获得逐字节一致的文件。应使用能把输出作为附件或压缩包原样传输的方式。

删除原输出前:

  1. 完成文件传输;
  2. 比较两端的文件大小或密码学哈希;
  3. 与接收方进行一次提取测试;
  4. 单独保留原文件备份。

不要把图像粘贴到聊天输入框或图像编辑器中。很多应用会解码后重新保存图像,从而丢弃末尾的 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 中输入非空密码。生成输出前请先保存密码,因为应用无法帮助找回。

所选文件中没有预期的 ZIP 文件头,或者追加的数据已被其他应用删除或修改。

  • 选择最初生成的 obfuscated_... 文件;
  • 比较当前文件与 IoTSploit 输出时的文件大小;
  • 如果文件被重新编码,请重新执行隐藏操作。

“Metadata file not found”或“Encrypted file not found”

Section titled ““Metadata file not found”或“Encrypted file not found””

追加的 ZIP 数据不完整,或者该文件不是 IoTSploit 文件混淆器生成的封装。请使用原始输出,并避免使用会修改文件的工具。

检查密码的大小写、空格和其他字符是否完全一致。如果密码无误,加密数据可能已被截断或修改。重新生成输出,并在传输前完成一次提取测试。

工具会同时在内存中保存所选文件、图像、ZIP 和输出数据。请尝试缩小输入文件或载体图像,关闭其他应用后重试。

即使取消保存对话框,处理过程也可能已经完成。请重新执行操作,并在提示时选择保存位置。

每次生成输出时:

  1. 使用密码管理器生成并保存唯一密码;
  2. 创建混淆图像;
  3. 立即提取一次,完成往返测试;
  4. 使用能保留原始字节的方式传输;
  5. 在接收端再次验证提取;
  6. 按适当的安全要求保留原文件备份。

载体看起来是否像普通图像并不能证明数据完整,往返提取测试才是关键。