# LSB隐写模式说明

## 概览
LSB（Least Significant Bit，最低有效位）隐写是一种将信息隐藏在图像像素最低位的技术。本工具支持15种LSB提取模式，用于检测不同隐写算法隐藏的信息。

## LSB原理
每个像素的RGB通道值范围是0-255，用8位二进制表示。最低位（第0位）的变化对人眼几乎不可见，因此可以用来隐藏信息。

示例：
- 原始像素值：255 (11111111)
- 修改后：254 (11111110) - 最低位从1改为0
- 视觉差异：几乎无法察觉

## 支持的LSB模式

### 1. 双通道组合模式（6种）
这些模式从RGB三个通道中选取两个进行组合：

| 模式 | 组合顺序 | 说明 |
|------|---------|------|
| RGB | R→G→B→R→G→B... | 按红绿蓝顺序循环提取 |
| BRG | B→R→G→B→R→G... | 按蓝红绿顺序循环提取 |
| RBG | R→B→G→R→B→G... | 按红蓝绿顺序循环提取 |
| BGR | B→G→R→B→G→R... | 按蓝绿红顺序循环提取 |
| GRB | G→R→B→G→R→B... | 按绿红蓝顺序循环提取 |
| GBR | G→B→R→G→B→R... | 按绿蓝红顺序循环提取 |

**适用场景**：常见的LSB隐写工具通常使用RGB或BGR顺序。

### 2. 单通道+零填充模式（6种）
这些模式只使用一个通道，其他位置用0填充：

| 模式 | 提取规则 | 说明 |
|------|---------|------|
| RG0 | R,G,0,R,G,0... | 只使用R和G通道，第三位填0 |
| R0B | R,0,B,R,0,B... | 只使用R和B通道，第二位填0 |
| 0GB | 0,G,B,0,G,B... | 只使用G和B通道，第一位填0 |
| R00 | R,0,0,R,0,0... | 只使用R通道，其他位填0 |
| 0G0 | 0,G,0,0,G,0... | 只使用G通道，其他位填0 |
| 00B | 0,0,B,0,0,B... | 只使用B通道，其他位填0 |

**适用场景**：某些隐写算法只在特定通道隐藏信息。

### 3. 单通道模式（3种）
这些模式直接提取单个通道的所有LSB位：

| 模式 | 通道 | 说明 |
|------|------|------|
| R | 红色通道 | 提取所有像素红色通道的LSB |
| G | 绿色通道 | 提取所有像素绿色通道的LSB |
| B | 蓝色通道 | 提取所有像素蓝色通道的LSB |

**适用场景**：简单的单通道隐写。

## 解码流程

### 位序列转字节
每8个LSB位组成一个字节：

```
位序列: 01001000 01100101 01101100 01101100 01101111
十进制:    72      101     108     108     111
字符:      H        e       l       l       o
```

### 可打印字符判断
ASCII码32-126为可打印字符，其他字符显示为"."。

## 使用建议

1. **优先检查RGB和BGR模式**：这是最常见的隐写顺序
2. **关注连续可读文本**：如果某个模式的解码结果中有连续的可读文本，很可能存在隐写信息
3. **检查多行**：隐写信息可能分布在多行像素中
4. **注意文件头**：某些隐写工具会在开头添加标识符

## 常见隐写工具的LSB模式

| 工具 | 典型模式 | 备注 |
|------|---------|------|
| Steghide | RGB | 开源隐写工具 |
| OpenStego | RGB | 支持加密 |
| LSB-Steganography | RGB | Python实现 |
| Invisible Secrets | BGR | 商业软件 |

## 示例

**检测到隐写信息的特征**：
- 某个模式的chars字段出现连续的可读文本
- 文本开头可能有标识符（如"PK"表示ZIP文件）
- 文本内容可能是Base64编码

**正常图片的特征**：
- 所有模式的chars字段都是乱码或点号
- 没有明显的可读文本模式

## 注意事项

1. LSB隐写分析只能检测信息存在，不能保证解码出有意义的内容
2. 某些隐写工具使用加密或压缩，解码后仍是乱码
3. 分析结果需要人工判断是否为真实的隐写信息
4. 仅分析前8行像素，如需完整分析请修改脚本参数
