从零开始做题:BUUCTF虚幻2-wp

题目信息

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

```


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值