PNG图像隐写术与PHP恶意软件PoC技术解析
技术背景
隐写术(Steganography)是一种将信息隐藏于载体文件(如图像、音频)中的技术。本文介绍的PoC演示了如何通过PHP在JPEG图像中嵌入隐藏信息。
核心代码实现
图像加载与像素处理
1
2
3
|
$c = imagecreatefromjpeg($imagePath);
$w = imagesx($c);
$h = imagesy($c);
|
使用GD库函数加载JPEG图像并获取图像尺寸信息。
LSB隐写算法
1
2
3
4
5
6
|
for ($y = 0; $y < $h; $y++) {
for ($x = 0; $x < $w; $x++) {
$rgb = imagecolorat($c, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
|
遍历每个像素并提取RGB颜色分量值。
二进制编码转换
1
2
3
|
$charCode = ord(substr($message, ($y * $w) + $x, 1));
$binary = decbin($charCode);
$binary = str_pad($binary, 8, "0", STR_PAD_LEFT);
|
将消息字符转换为ASCII码,再转换为8位二进制格式。
LSB替换操作
1
2
3
|
$r = ($r & 0xFE) | ($binary[0] & 0x01);
$g = ($g & 0xFE) | ($binary[1] & 0x01);
$b = ($b & 0xFE) | ($binary[2] & 0x01);
|
使用位操作将每个RGB分量的最低有效位(LSB)替换为消息位。
图像保存与清理
1
2
|
imagejpeg($c, $outputPath);
imagedestroy($c);
|
保存修改后的图像并释放内存资源。
技术特点
- 使用最低有效位(LSB)替换技术
- 支持任意长度的消息嵌入
- 保持图像视觉质量基本不变
- 完整的PHP GD库图像处理实现
安全影响
这种技术可被用于恶意软件分发,通过将恶意代码隐藏在普通图像文件中绕过安全检测。安全团队需要加强对图像文件中隐藏内容的检测能力。