题目信息
LSB隐写
计算机存储和显示颜色是通过像素点实现。每个像素用整数值记录。修改图片的颜色分量对应的整数值的最低二进制位,而人眼不会感知到这前后的变化,例如RGB模式的图片每个像素可携带3比特的信息。
查看图片隐写信息
提取LSB隐写的图像分析
切割拼接三个图片,恢复成汉信码
暴力填补汉信码扫描
```python
from PIL import Image
```
```python
pic = Image.open('file')
```
```python
x,y = pic.size
```
```python
img1 = Image.new('1',(x,y)) #新建图像
```
```python
img2 = Image.new('1',(x,y))
```
```python
img3 = Image.new('1',(x,y))
```
```python
for i in range(x):
for j in range(y):
pixels = pic.getpixel((i,j))
img1.putpixel((i,j),pixels[0]%2)
img2.putpixel((i,j),pixels[1]%2)
img3.putpixel((i,j),pixels[2]%2)#提取对应像素值最低位
img1.save('flag1.png')
img2.save('flag2.png')
img3.save('flag3.png') #保存新的图像
```
```python
img = Image.new('1',(x,y*3))
```
```python
for i in range(x): #调整图像
for j in range(y):
pixel1 = img1.getpixel((i,y-1-j))
pixel2 = img2.getpixel((i,y-1-j))
pixel3 = img3.getpixel((i,y-1-j))
img.putpixel((i,j*3+2),pixel1)
img.putpixel((i,j*3+1),pixel2)
img.putpixel((i,j*3),pixel3)
img.save('flag.png')
```
```python
import requests
```
```python
img = Image.open('flag.png')
```
```python
x,y = img.size
```
```python
pic = Image.new('1',(x,y))
```
```python
pic.paste(img)
```
```python
x_old,y_old = 24,8
```
```python
headers = {
'Accept':
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Length': '86811',
'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryjWQSvB0U5cJ7nFzU',
'Host': 'www.efittech.com',
'Origin': 'http://www.efittech.com',
'Referer': 'http://www.efittech.com/hxdec.html',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
```
```python
for i in range(56):
pic.putpixel((x_old,y_old),1)
x_old,y_old = 24+i%7,8+i//7
pic.putpixel((x_old,y_old),0)
pic.save('flagflag.png')
files = {'file':open('flagflag.png','rb')}
r = requests.post('http://www.efittech.com/hxdec.aspx',files=files,headers=headers)
if 'flag' in r.text:
print(r.text)
```
```python
```