Skip to content

Latest commit

 

History

History
132 lines (93 loc) · 3.23 KB

File metadata and controls

132 lines (93 loc) · 3.23 KB

encrypt — Shellcode 加密工具

对 Shellcode 文件进行多轮 AES-256-GCM 加密,支持 Base64 输出和 LSB 图片隐写。

用法

go run . [--base64] [--stdout] [--stego <载体图片>] <文件> <加密次数>
标志 说明
--base64 输出文件追加 .b64 后缀并进行 Base64 编码
--stdout 将加密结果写入标准输出(不生成文件)
--stego <图片> 将加密结果以 LSB 方式嵌入载体图片,输出 <图片>_stego.png

位置参数:

  • <文件> — 待加密的 Shellcode 文件(支持 0x??,... 格式,自动剥离 0x/,/换行)
  • <加密次数> — 加密轮数,范围 1–64

输入格式

工具会自动清理 Shellcode 文件中的以下字符:

  • 前缀 0x
  • 逗号 ,
  • 回车 \r、换行 \n

因此可以直接粘贴 C 风格的 0xfc,0x48,0x83,... 数组内容,无需手动处理。

输出格式

加密产物为自描述二进制 blob,包含全部解密所需参数:

[魔术头 "LGOENC1"][KDF迭代次数 4B][加密轮数 2B][盐 16B]
[nonce₁ 12B][nonce₂ 12B]...[nonceN 12B][AES-GCM 密文]
  • 不带 --base64:输出 <文件>.enc
  • --base64:输出 <文件>.enc.b64(Base64 文本,便于嵌入代码或传输)

示例

Windows Shellcode 加密(启动计算器)

测试 payload:test_windows.txt,运行后弹出 calc.exe

加密(10 轮,Base64 输出):

go run . --base64 test_windows.txt 10

输入密码(不回显):

请输入加密密码:
请再次输入加密密码:
加密完成: test_windows.txt.enc.b64
算法: AES-256-GCM + PBKDF2-SHA256(210000), 加密次数: 10

生成文件 test_windows.txt.enc.b64,内容为 Base64 密文,例如:

TEdPRU5DMQADNFAACiacLUWKhKwDlTd82RRuHBcjD8QTpqPr+UQowFwKUDSzgFp...

Linux Shellcode 加密(在 /tmp 创建 shellcode_ok 文件)

测试 payload:test_linux.txt,运行后在 /tmp/ 下创建名为 shellcode_ok 的文件(通过 touch /tmp/shellcode_ok 实现)。

加密(3 轮,写入 .enc 文件):

go run . test_linux.txt 3
请输入加密密码:
请再次输入加密密码:
加密完成: test_linux.txt.enc
算法: AES-256-GCM + PBKDF2-SHA256(210000), 加密次数: 3

加密并隐写到图片

go run . --stego carrier.png test_windows.txt 5
载体图片容量:最多可隐写 262080 字节(256.0 KB)
加密完成并隐写到: carrier_stego.png
算法: AES-256-GCM + PBKDF2-SHA256(210000), 加密次数: 5

输出到标准输出(用于管道)

go run . --stdout --base64 test_windows.txt 3 > encrypted.b64

stderr 提示:

请输入加密密码:
请再次输入加密密码:
加密完成: 已输出到标准输出 (base64=true)

构建

go build -o encrypt.exe

加密参数说明

参数 说明
算法 AES-256-GCM 认证加密,提供完整性保证
KDF PBKDF2-SHA256 迭代次数 210,000
盐长 16 字节 每次加密随机生成
Nonce 12 字节/轮 每轮独立随机 nonce
最大轮数 64 每增加一轮额外增加一个 GCM 标签(16B)+ nonce(12B)
密码最短 8 字符