首页 > 其他分享 >图像缩放攻击

图像缩放攻击

时间:2023-11-13 11:58:12浏览次数:42  
标签:map img 缩放 攻击 big 像素 图像 small

今天在B站上看到一个关于图像缩放攻击的挺有意思的视频
他的GitHub上复制了源代码来看了看,原理特别简单,核心就是算出缩放点的位置。

比如说有一个8个元素的列表[1, 1, 1, 1, 1, 1, 1, 1],现在我想把其中的两个元素改成0,而且要求这两个0均匀分布在列表之中。
问题就在于选择哪两个位置进行插入了。

可以很简单地看出,第3个位置和第6个位置的1改成0即可,即[1, 1, 0, 1, 1, 0, 1, 1]。
所以现在问题在于,怎么让计算机得到类似的结果。因为计算机只能计算,不能像人一样“一眼看出”,所以结果的产生还是得依赖于计算。

首先第一步,原本有8个元素,改变2个,直观地想,8/2 = 4,每隔4个位置改变一个元素即可。
所以会变成[0, 1, 1, 1, 0, 1, 1, 1]但可以看到,这样的分布并不均匀,总体看,0的分布过于偏左。
因此可以让0们整体往右移动一些。
这其实就是让每一个点位往后挪一些。
那么挪多少呢,我们可以看出挪1或者挪2个位置会比较合适[1, 0, 1, 1, 1, 0, 1, 1]或者[1, 1, 0, 1, 1, 1, 0, 1]。

如果取2,那么刚好是8/2的一半,于是0的位置的通式可以写为map_x = (i + 0.5)*large_length/small_length。当然因为点位是能是整数,所以这个值实际上还需要取个整。

这也就是计算机中图像缩放近邻法的处理方式了,如果有一张1×8像素的图像,我们把它缩放为1×2像素的图片,那么计算机会只取“0”所在的位置的像素,而直接舍去“1”所在位置的像素,形成一张缩放后的图片。

可以看到和人眼“一眼看出”的结果还是有些差异的。

利用这一特性,我们就可以在缩放后会被保留的点位上篡改一下像素,比如把另一张图片的像素放在这些点位上,于是原图缩小后,就会变成我们加入的这“另一张图片”了

下面是up主在GitHub上留下的源码:

import sys
from PIL import Image

#将small_img中的像素用近邻法嵌入到big_img中
def my_nearest_resize(big_img, small_img):

    big_w, big_h = big_img.size 
    small_w, small_h = small_img.size 

    dst_im = big_img.copy()

    stepx = big_w/small_w
    stepy = big_h/small_h

    for i in range(0, small_w):
        for j in range(0, small_h):
            map_x = int( i*stepx + stepx*0.5 )
            map_y = int( j*stepy + stepy*0.5 )

            if map_x < big_w and map_y < big_h :
                # 这里是往大图的缩放点所在位置插入小图的像素点
                # 但上面这个判断我是真没看懂有什么必要。
                dst_im.putpixel( (map_x, map_y), small_img.getpixel( (i, j) ) )

    return dst_im


if __name__ == '__main__':
    big_img=Image.open(sys.argv[1])     # 大图
    small_img=Image.open(sys.argv[2])   # 小图

    dst_im = my_nearest_resize(big_img, small_img)
    dst_im.save(sys.argv[3])            # 嵌入小图像素的大图

标签:map,img,缩放,攻击,big,像素,图像,small
From: https://www.cnblogs.com/code-pigeon/p/17828241.html

相关文章

  • 深度学习之交叉熵损失函数(在分类问题如图像识别时可以考虑)
    1. 熵2. 交叉熵损失函数交叉熵能够衡量两个分布的异同程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。二分类交叉熵:X = [[0.3, 0.7], [0.2,0.8]]Y = [1,0]Loss = -1/2(1*log0.7 + 1*log0.2)x代表样本等于下面的i......
  • 冷门攻击手法之跨站式追踪攻击
    漏洞简介XST的全称是Cross-SiteTracing,中文译作“跨站式追踪攻击”。具体而言,是客户端发 TRACE/TRACK 请求至服务器,如果服务器按照标准实现了TRACE/TRACK响应,则在responsebody里会返回此次请求的完整头信息。通过这种方式,客户端可以获取某些敏感的header字段,例如......
  • ISP图像处理Pipeline
    参考:1.键盘摄影(七)——深入理解图像信号处理器ISP2.UnderstandingISPPipeline3.ISP图像处理流程介绍4.ISP系统综述5.ISP(图像信号处理)之——图像处理概述6.ISP框架7.ISP(图像信号处理)算法概述、工作原理、架构、处理流程8.ISP全流程简介9.ISP流程介绍(Raw格式......
  • Android:在按钮(Button)或图像按钮(ImageButton)上合并文本和图片。
    内容来自DOChttps://q.houxu6.top/?s=Android:在按钮(Button)或图像按钮(ImageButton)上合并文本和图片。我正在尝试在按钮背景上添加一张图片,并根据运行时发生的情况动态地添加一些文本到图片上方。如果使用ImageButton,我甚至无法添加文本。如果使用Button,我可以添加文本,但只......
  • CDN 在某些页面上提供图像,但在其他页面上不提供图像
    如果在某些页面上使用CDN提供图像,但在其他页面上不提供图像,可能是以下几个原因导致的:1.页面链接错误:检查在不提供图像的页面上,图像的链接是否正确。确保链接指向CDN上的正确图像位置。2.缓存问题:有可能之前访问缺少图像的页面时,图像链接出现问题,导致浏览器缓存了错误的链接。尝试......
  • 如何通过 <use> 元素(如图像)调整 SVG 图标的大小
    要通过<use>元素来调整SVG图标的大小,可以使用CSS的width和height属性或者transform属性来实现。方法一:使用CSS的width和height属性<svg><usexlink:href="icon.svg#icon-name"></use></svg>svg{width:24px;/*设置图标宽度*/height:24px;/*设置图标高度*/}通过......
  • 【pwn】[HGAME 2023 week1]simple_shellcode --orw利用攻击
    先查看程序的保护状态可以看到,保护全开,拖进ida看主函数的逻辑可以看到有个mmap函数:mmap()函数是Unix和类Unix操作系统中的一个系统调用,用于在进程的地址空间中映射文件或者其它对象。这样做的好处是可以让文件直接映射到内存中,从而避免了频繁的文件I/O操作,提高了文件的读......
  • CMOS 图像传感器AR0144CSSC20SUKA0-CPBR、AR0144CSSC20SUKA0-CRBR适用于扫描和工业检
    典型应用•条形码扫描•3D扫描•虚拟/增强现实•位置跟踪•手势识别•机器视觉•生物特征扫描器件:AR0144CSSC20SUKA0-CPBR、AR0144CSSC20SUKA0-CRBR产品描述:CMOS图像传感器,数字型,全局快门,1.0MP,1/4"产品种类:图像传感器类型:CMOS像素大小:3µmx3µm有源像素阵列:1280H......
  • 13.xff注入攻击
    原理代码审计 黑盒测试下的xff注入攻击 在报文头部插入X-Forwardcd-for:127.0.0.1'and1=1#插入X-Forwardcd-for:127.0.0.1'and1=2# 两次结果不一样,存在注入点确认注入点这里有四个注入点进行联合查询X-Forwardcd-for:-127.0.0.1'unionselect1,2,us......
  • PDF统一大小缩放至A4或指定大小
    PDF统一大小缩放至A4或指定大小https://jingyan.baidu.com/article/ed15cb1bb9b95d1be2698163.html如何让pdf中的所有图片宽度一致,高度自适应?去除空白边https://www.zhihu.com/question/449570733?utm_id=0......