Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
File-Injector — File Injector 是一个脚本,允许您使用隐写术将任何文件存储在图像中。 | Kitploit
工具/GitHubGitHub/carlospuenteg/file-injector
加密/解密工具数据泄露隐写术密码学
GitHubcarlospuenteg/file-injector

File-Injector

File Injector 是一个脚本,允许您使用隐写术将任何文件存储在图像中。

查看仓库
4432973年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

File Injector

如果你想使用需要原始图像才能提取文件的旧版本(1.0.2或更低),可以点击此处下载。

目录

  • 1. 描述
  • 2. 开始使用
    • 安装依赖
    • 运行脚本
    • 选择输入
      • 选择基础图像/音频
      • 选择输入文件
      • 选择/生成加密密钥
  • 3. 结果
  • 4. 使用示例
    • 注入
    • 提取
  • 5. 配置
  • 6. 工作原理
  • 7. 实现细节
    • 选项
    • inject_file_func
    • extract_file_func
    • get_fernet
    • decrypt_content
    • inject_file
    • extract_file

1. 描述

File Injector 是一个脚本,允许你将任何文件(.zip、.png、.txt、.gba...)及其文件名以噪声的形式存储在图像/音频中,使用的是隐写术。

你还可以选择在存储之前对输入文件进行加密。

然后,要提取修改后图像/音频中的文件,你不需要原始图像/音频,只需要加密密钥(如果文件已加密)。

2. 开始使用

安装依赖

root@kitploit:~
python3 -m pip install -r requirements.txt

如果上述方法无效,可以尝试:

root@kitploit:~
py -m pip install -r requirements.txt

运行脚本

root@kitploit:~
python3 main.py

选择输入

选择基础图像/音频

从 files/base 文件夹中选择一个用于存储文件的基础图像/音频。

你也可以将自己的图像/音频添加到此文件夹中。

  • 图像可以是 .png 或(.jpg/.jpeg),但脚本运行时它们会被转换为 .png。
  • 音频必须是 .mp3 或 .wav,但脚本运行时它们会被转换为 .mp3。

选择输入文件

从 files/input 文件夹中选择要存储在图像/音频中的文件。

你可以将自己的文件添加到此文件夹中。它们可以是任何类型的文件。

选择修改后的图像/音频

从 files/modified 文件夹中选择一个用于提取文件的修改后图像/音频。

你也可以将自己的修改后图像/音频添加到此文件夹中。

选择/生成加密密钥

你可以从 files/$encryption-keys 文件夹中选择一个密钥,也可以在那里生成一个。

密钥文件必须具有 .key 扩展名。

解密文件时不需要选择特定的密钥,它会自动从该文件夹中选取。

3. 结果

这张1710万像素的图像包含一个加密的 9MB .zip 文件及其文件名,以噪声形式存储。

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/main/readme-assets/17"1MP_mod.png" width=500>

这张170万像素的图像包含一个加密的 0.93MB .zip 文件及其文件名,以噪声形式存储。

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/main/readme-assets/1"7MP_mod.png" width=500>

这个42MB的音频文件包含一个加密的 9MB .zip 文件及其文件名,以噪声形式存储。

https://user-images.githubusercontent.com/65092569/202014519-24514110-4bd2-4c2b-9307-237964df0c2b.mp4

4. 使用示例

注入

root@kitploit:~
... File-Injector % python3 main.py
[0] 退出
[1] 注入文件
[2] 提取文件

选项: 1
要存储的文件: images.zip
基础图像的文件名: 2'2MP
是否加密文件?(y/n): y

你要使用现有密钥还是生成新密钥?
[0] 现有密钥
[1] 新密钥

选项: 1
新密钥文件的文件名(默认为空):
密钥已生成并保存到 files/$encryption-keys/key9.key

准备中...

每个通道修改的比特数: 2
图像修改比例: 1.56%

✅ 存储中... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [100.0%]

生成随机值...

存储随机值...

重塑...

修改后的图像已保存到 files/modified-images/2'2MP_mod.png

耗时 7.5892 秒

提取

root@kitploit:~
... File-Injector % python3 main.py
[0] 退出
[1] 注入文件
[2] 提取文件

选项: 2
修改后图像的文件名: 2'2MP_mod

准备中...

获取文件名...

获取输入文件...
使用 "files/$encryption-keys/key2.key" 解密

输出文件已保存到 files/output-files/images.zip

耗时 1.4083 秒

5. 配置

你可以在 config.py 文件中更改配置。

6. 工作原理

注入是通过将文件存储在图像/音频数组展平后每个元素的 X 个最低有效位中实现的。

  • 每个元素有 8 位(如果基础文件是图像)或 16 位(如果基础文件是音频)。
  • 该脚本会根据要存储的文件相对于基础图像/音频的大小,改变每个元素从 1 位到全部位。
  • 如果存储的文件较大或基础图像/音频较小,则改变的位数更多,变化更明显。
  • 如果存储的文件较小或基础图像/音频较大,则改变的位数较少,变化不那么明显。
  • 如果基础图像/音频太小而无法存储该文件,脚本将停止并警告你。
  • 如果选择加密文件,其大小将增加约 1/3。

7. 实现细节

选项

选项描述
[0] 退出退出脚本
[1] 注入文件调用 inject_file_func()
[2] 提取文件调用 extract_file_func()

inject_file_func()

  1. 如果 TEST_MODE == True,则使用预定义的基础图像/音频和输入文件。否则,询问基础图像/音频和输入文件。
  2. 读取文件(字节形式)
  3. 读取图像/音频并存储为 numpy 数组
  4. 读取文件名(字节形式)
  5. 如果用户想加密文件:
    1. 通过 get_fernet() 获取密钥
    2. 加密文件和文件名
  6. 尝试通过 inject_file() 将文件和文件名注入图像/音频。
    1. 如果图像/音频太小无法存储文件,则报错
    2. 否则,返回修改后的图像/音频。
  7. 保存修改后的图像/音频

extract_file_func()

  1. 如果 TEST_MODE == True,则使用预定义的修改后图像/音频。否则,询问修改后图像/音频。
  2. 读取修改后的图像/音频
  3. 通过 extract_file() 提取文件和文件名(字节形式)
  4. 如果文件和文件名已加密(以 gAAAAA 开头),则通过 decrypt_content 解密
  5. 将文件名解码为 UTF-8
  6. 使用解码后的文件名保存文件

get_fernet()

选项描述
[0] 现有密钥使用现有密钥
[1] 新密钥生成新密钥

[0] 现有密钥

  1. 从 files/$encryption-keys 文件夹中选择一个要用的密钥

[1] 新密钥

  1. 为新密钥选择一个文件名(或留空使用默认名,例如 key8.key)
  2. 生成新密钥并使用所选文件名保存
  3. 返回带有新密钥的 Fernet 对象

decrypt_content()

  1. 对于 files/$encryption-keys 文件夹中的每个密钥:
    1. 尝试用该密钥解密文件和文件名
    2. 如果抛出 InvalidToken:
      1. 意味着该密钥不正确
      2. 尝试其他密钥
    3. 否则,返回该密钥
  2. 如果未找到有效密钥,则抛出异常

inject_file()

返回修改后的图像/音频数组(np.ndarray,与 arr 形状相同)

extract_file()

参数类型描述
mod_arr_flatnp.ndarray展平后的修改后图像/音频

返回一个字典,包含提取的文件和文件名,两者均为 bytes 格式

下载工具
常量描述默认值
MOD_PREFIX修改后图像/音频的前缀""
MOD_SUFFIX修改后图像/音频的后缀"_mod"
STORE_RANDOM在修改后图像中存储随机数据,使存储数据部分与未存储数据部分之间的界限不那么明显True
TEST_MODE启用/禁用测试模式:使用预定义的图像/音频和文件进行测试True
参数类型描述
arrnp.ndarray图像/音频的 numpy 数组
filebytes文件(字节形式)
filenamebytes文件名(字节形式)
store_randomboolean是否在修改后的图像/音频中存储随机数据