对 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 文本,便于嵌入代码或传输)
测试 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...
测试 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 字符 | — |