简单讲述几种查找图片中隐藏Flag的方法 |
您所在的位置:网站首页 › 隐藏字符串 › 简单讲述几种查找图片中隐藏Flag的方法 |
目录
一、附加字符串二、修改图片的宽高三、jphide图片隐写四、OutGuess隐写五、异或隐写六、盲水印七、二维码画图八、灰度图片LSB隐写
一、附加字符串
flag藏在图片中,使用WinHex软件或者记事本打开,搜索发现flag。 二、修改图片的宽高像这种图片很明显是被修改过高度的,我们使用python脚本得出正常图片的宽高。 import zlib import struct filename = '1.png' with open(filename, 'rb') as f: all_b = f.read() crc32key = int(all_b[29:33].hex(),16) data = bytearray(all_b[12:29]) n = 4095 for w in range(n): width = bytearray(struct.pack('>i', w)) for h in range(n): height = bytearray(struct.pack('>i', h)) for x in range(4): data[x+4] = width[x] data[x+8] = height[x] crc32result = zlib.crc32(data) if crc32result == crc32key: print("宽为:",end="") print(width) print("高为:",end="") print(height) exit(0)得出的结果是: 使用软件WinHex打开那张图片,就能看到当前的图片的高是不对的: 在WinHex里把高改成01 df就可以了,得到正常图片: 三、jphide图片隐写使用小程序stegdetect来检测图片是不是用了jphide隐写。 在cmd中使用这个代码:stegdetect.exe -tjopi -s 10.0 jphide.jpg 密码破解使用字典,代码为stegbreak.exe -r rules.ini -f password.txt jphide.jpg,得到密码为power123 再使用软件Jphswin来破解图片: 打开这个图片: 点击Seek,输入破解到的密码,再另存为txt文件就能得到flag。 四、OutGuess隐写需要在kali虚拟机里面使用outguess工具。 安装方法是: git clone https://github.com/crorvick/outguess # 进入outguess的目录 ./configure && make && make install一般图片属性-详细信息-备注里面会有图片的Key 把图片文件复制到虚拟机里面,然后使用代码outguess -k gUNrbbdR9XhRBDGpzz -r outguess.jpg -t 1.txt能得到结果文件。 五、异或隐写这个图片需要用Stegsolve这个工具进行反色,点击上面“>”按钮得到: 再把下面的图片进行异或处理 用这个Image Combiner功能 最后用工具QR Research进行扫描,就可以得到结果 六、盲水印当一张图片的WinHex里面有这些东西,说明这个图片有盲水印,先在kali里面使用binwalk,binwalk -e 1.png --run-as=root得到了很多文件。 把压缩文件复制到实体机,得到两张盲水印图片: 使用python bwmforpy3.py decode day1.png day2.png flag.png --oldseed即可得到flag图片。 七、二维码画图有时候题目中会给这么一大串的0和1的组合,这时需要用到python脚本来进行画出二维码。 from PIL import Image MAX = 60 #二维码长宽 pic = Image.new("RGB",(MAX, MAX)) str=" " #二进制数据 i=0 for y in range (0,MAX): for x in range (0,MAX): if(str[i] == '1'): pic.putpixel([x,y],(0, 0, 0)) else: pic.putpixel([x,y],(255,255,255)) i = i+1 pic.show() #pic.save("flag.png") 如果电脑上没有安装PIL库,可以使用命令pip install Pillow来安装一下。 如果给的是这种坐标,也是需要用python脚本画图。 from PIL import Image, ImageDraw, ImageFont, ImageFilter f1 = open(r'flag.txt','r') width = 300 height = 300 image = Image.new('RGB', (width, height), (255, 255, 255)) draw = ImageDraw.Draw(image) color = (0,0,0) while 1: s = f1.readline() if not s: break s = s.strip('\n') s = s.lstrip('(') s = s.rstrip(')') a = int(s.split(',')[0],10) b = int(s.split(',')[1],10) draw.point((a, b), fill=color) image.show() 八、灰度图片LSB隐写如果一个题目给的是一张灰度图片,那么大概率是进行了LSB隐写,使用python脚本解码即可出现结果。 from PIL import Image p = Image.open('1.png').convert('L') a,b = p.size flag = Image.new('L',(a,b),255) for y in range(b): for x in range(a): if p.getpixel((x,y))%2==0: flag.putpixel((x,y),255) else: flag.putpixel((x,y),0) flag.show() |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |