基本上关于373nn的信息,现在都www373www.944nncomm搜不到了怎么办

404 File Not Found
404 File Not Found404 Not Found
404 Not Found
The requested URL was not found on this server.
您要找的内容已被删除&h2&&b&0x00 前言&/b&&/h2&&p&最近在github看见一个有趣的项目:&a href=&http://link.zhihu.com/?target=https%3A//github.com/peewpw/Invoke-PSImage& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Invoke-PSImage&/a&,在png文件的像素内插入powershell代码作为payload(不影响原图片的正常浏览),在命令行下仅通过一行powershell代码就能够执行像素内隐藏的payload&/p&&p&这是一种隐写(Steganography)技术的应用,我在之前的文章对png的隐写技术做了一些介绍,可供参考:&/p&&p&《&a href=&http://link.zhihu.com/?target=https%3A//3gstudent.github.io/3gstudent.github.io/%25E9%259A%%E6%258A%%25B7%25A7-PNG%25E6%E4%25BB%25B6%25E4%25B8%25AD%25E7%259A%2584LSB%25E9%259A%%/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&隐写技巧——PNG文件中的LSB隐写&/a&》&/p&&p&《&a href=&http://link.zhihu.com/?target=https%3A//3gstudent.github.io/3gstudent.github.io/%25E9%259A%%E6%258A%%25B7%25A7-%25E5%%25E7%PNG%25E6%E4%25BB%25B6%25E6%25A0%25BC%25E5%25BC%258F%25E9%259A%%FPayload/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&隐写技巧——利用PNG文件格式隐藏Payload&/a&》&/p&&p&本文将结合自己的一些心得对Invoke-PSImage进行分析,介绍原理,解决测试中遇到的问题,学习脚本中的编程技巧,提出自己的优化思路&/p&&p&Invoke-PSImage地址:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/peewpw/Invoke-PSImage& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/peewpw/Invok&/span&&span class=&invisible&&e-PSImage&/span&&span class=&ellipsis&&&/span&&/a&&/p&&h2&&b&0x01 简介&/b&&/h2&&p&本文将要介绍以下内容:&/p&&p&·脚本分析&/p&&p&·隐写原理&/p&&p&·实际测试&/p&&p&·编程技巧&/p&&p&·优化思路&/p&&h2&&b&0x02 脚本分析&/b&&/h2&&p&&b&1、参考说明文件&/b&&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/peewpw/Invoke-PSImage/blob/master/README.md& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/peewpw/Invok&/span&&span class=&invisible&&e-PSImage/blob/master/README.md&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&(1) 选取每个像素的两个颜色中的4位用于保存payload&/p&&p&(2) 图像质量将受到影响&/p&&p&(3) 输出格式为png&/p&&p&&b&2、参考源代码对上述说明进行分析&/b&&/p&&p&(1) 像素使用的为RGB模式,分别选取颜色分量中的G和B的低4位(共8位)保存payload&/p&&p&(2) 由于同时替换了G和B的低4位,故图片质量会受影响&/p&&p&&b&补充:&/b&&/p&&p&LSB隐写是替换RGB三个分量的最低1位,人眼不会注意到前后变化,每个像素可以存储3位的信息&/p&&p&猜测Invoke-PSImage选择每个像素存储8位是为了方便实现(8位=1字节),所以选择牺牲了图片质量&/p&&p&(3) 输出格式为png,需要无损&/p&&p&png图片为无损压缩(bmp图片也是无损压缩),jpg图片为有损压缩。所以在实际测试过程,输入jpg图片,输出png图片,会发现png图片远远大于jpg图片的大小&/p&&p&(4) 需要注意payload长度,每个像素保存一个字节,像素个数需要大于payload的长度&/p&&h2&&b&0x03 隐写原理&/b&&/h2&&p&参照源代码进行举例说明(跳过读取原图片的部分)&/p&&p&1、修改像素的RGB值,替换为payload&/p&&p&代码起始位置:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/peewpw/Invoke-PSImage/blob/master/Invoke-PSImage.ps1%23L110& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/peewpw/Invok&/span&&span class=&invisible&&e-PSImage/blob/master/Invoke-PSImage.ps1#L110&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&对for循环做一个简单的修改,假定需要读取0x73,将其写入第一个像素RGB(0x67,0x66,0x65)&/p&&p&&b&(1) 读取payload&/b&&/p&&p&代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$paybyte1 = [math]::Floor($payload[$counter]/16)
&/code&&/pre&&/div&&p&说明:&/p&&p&$payload[$counter]/16表示$payload[$counter]/0x10&/p&&p&即取0x73/0x10,取商,等于0x07&/p&&p&所以,$paybyte1 = 0x07&/p&&p&代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$paybyte2 = ($payload[$counter] -band 0x0f)
&/code&&/pre&&/div&&p&说明:&/p&&p&即0x73 & 0x0f,结果为0x03&/p&&p&所以,$paybyte2 = 0x03&/p&&p&代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$paybyte3 = ($randb[($counter+2)%109] -band 0x0f)
&/code&&/pre&&/div&&p&说明:&/p&&p&作随机数填充,$paybyte3可忽略&/p&&p&&b&注:&/b&&/p&&p&原代码会将payload的长度和图片的像素长度进行比较,图片多出来的像素会以同样格式被填充成随机数&/p&&p&&b&(2) 向原像素赋值,添加payload&/b&&/p&&p&原像素为RGB(0x62,0x61,0x60)&/p&&p&代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$rgbValues[($counter*3)] = ($rgbValues[($counter*3)] -band 0xf0) -bor $paybyte1
&/code&&/pre&&/div&&p&说明:&/p&&p&即0x60 & 0xf0 | 0x07&/p&&p&所以,$rgbValues[0] = 0x67&/p&&p&代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$rgbValues[($counter*3+1)] = ($rgbValues[($counter*3+1)] -band 0xf0) -bor $paybyte2
&/code&&/pre&&/div&&p&说明:&/p&&p&即0x61 & 0xf0 | 0x03&/p&&p&所以,$rgbValues[1] = 0x63&/p&&p&代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$rgbValues[($counter*3+2)] = ($rgbValues[($counter*3+2)] -band 0xf0) -bor $paybyte3
&/code&&/pre&&/div&&p&说明:&/p&&p&随机数填充,可忽略&/p&&p&综上,新像素的修改过程为:&/p&&p&R: 高位不变,低4位填入随机数 &/p&&p&G: 高位不变,低4位填入payload的低4位 &/p&&p&B: 高位不变,低4位填入payload的高4位&/p&&p&&b&2、读取RGB,还原出payload&/b&&/p&&p&对输出做一个简单的修改,读取第一个像素中的payload并还原&/p&&p&取第0个像素的代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&sal a New-O
Add-Type -AssemblyName &System.Drawing&;
$g= a System.Drawing.Bitmap(&C:\1\evil-kiwi.png&);
$p=$g.GetPixel(0,0);
&/code&&/pre&&/div&&p&还原payload,输出payload的第一个字符,代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$o = [math]::Floor(($p.B -band 15)*16) -bor ($p.G -band 15);
[math]::Floor(($p.B -band 15)*16) -bor ($p.G -band 15));
&/code&&/pre&&/div&&h2&&b&0x04 实际测试&/b&&/h2&&p&使用参数:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&Invoke-PSImage -Script .\test.ps1 -Image .\kiwi.jpg -Out .\evil-kiwi.png
&/code&&/pre&&/div&&p&test.ps1: 包含payload,例如”start calc.exe”&/p&&p&kiwi.jpg: 输入图片,像素数量需要大于payload长度&/p&&p&evil-kiwi.png: 输出图片路径&/p&&p&脚本执行后会输出读取 图片解密payload并执行的代码&/p&&p&实际演示略&/p&&h2&&b&0x05 优化思路&/b&&/h2&&p&结合前面的分析,选择替换RGB中两个分量的低4位保存payload,会在一定程序上影响图片质量,可参照LSB隐写的原理只替换三个分量的最低位,达到人眼无法区别的效果&/p&&p&当然,该方法仅是隐写技术的一个应用,无法绕过Win10 的AMSI拦截&/p&&p&在Win10 系统上测试还需要考虑对AMSI的绕过&/p&&h2&&b&0x06 小结&/b&&/h2&&p&本文对Invoke-PSImage的代码进行分析,介绍加解密原理,分析优缺点,提出优化思路,帮助大家更好的进行学习研究&/p&&blockquote&本文为 3gstudent 原创稿件, 授权嘶吼独家发布,如若转载,请联系嘶吼编辑: &a href=&http://link.zhihu.com/?target=http%3A//www.4hou.com/technology/9472.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&4hou.com/technology/947&/span&&span class=&invisible&&2.html&/span&&span class=&ellipsis&&&/span&&/a&
更多内容请关注“嘶吼专业版”——Pro4hou&/blockquote&
0x00 前言最近在github看见一个有趣的项目:,在png文件的像素内插入powershell代码作为payload(不影响原图片的正常浏览),在命令行下仅通过一行powershell代码就能够执行像素内隐藏的payload这是一种隐写(Steganography)技术的应用,我在之…
&figure&&img src=&https://pic3.zhimg.com/v2-a210abe8a69eb373a31f7ef00fda6ba4_b.jpg& data-rawwidth=&650& data-rawheight=&286& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&https://pic3.zhimg.com/v2-a210abe8a69eb373a31f7ef00fda6ba4_r.jpg&&&/figure&&p&&b&本文属于合天智汇原创文稿,未经允许,禁止转载! &br&&/b&&/p&&p&&b&题目链接:&a href=&http://link.zhihu.com/?target=https%3A//share.weiyun.com/1bd2cdb2d5eefbf0530529& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微云分享&/a&&/b&&/p&
&p&&b&0x01:背景&/b&&/p&
&p&CTF竞赛是安全圈喜闻乐见的竞赛模式,对于培养网络安全技术人才起到了很重要的作用。CTF起源于1996年DEFCON全球黑客大会,是Capture The Flag的简称。经过多年的发展,CTF这种比赛形式已经日益成熟。&/p&
&p&CTF注重动手技能,深厚的理论功底厚积薄发,技术的卓越是建立在无数次训练的基础上,那么我们来看看有哪些不错的平台可以来用于比赛训练。&/p&
&p&一般线上初选采用传统的夺旗赛模式,也就是在题目中设置一些标识,解题的目的就是为了找到标识并提交。通常包含的题目类型包括MISC、CRYPTO、PWN、REVERSE、WEB等。&/p&
&ul&&li&MISC(Miscellaneous)类型,即安全杂项,题目或涉及流量分析、电子取证、人肉搜索、数据分析等等。&/li&&li&CRYPTO(Cryptography)类型,即密码学,题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。&/li&&li&PWN类型,PWN在黑客俚语中代表着攻破、取得权限,多为溢出类题目。&/li&&li&REVERSE类型,即逆向工程,题目涉及到软件逆向、破解技术。&/li&&li&WEB类型,即题目会涉及到常见的Web漏洞,诸如注入、XSS、文件包含、代码执行等漏洞。&/li&&/ul&&p&本系列文章将会逐一介绍这五大传统类型的题目的攻略及经典题目的WriteUp,以此来帮助对信安感兴趣的小伙伴们通过CTF竞赛的方式更好地学习、掌握信息安全相关技能。&/p&
&p&&b&0x02MISC&/b&&b&介绍&/b&&/p&
&p&我们先从五大模块中的最有意思最好玩的一块开始说起,那就是MISC。&/p&
&p&MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、与信息安全相关的大数据等。&/p&
&p&竞赛过程中解MISC时会涉及到各种脑洞,各种花式技巧,主要考察选手的快速理解、学习能力以及日常知识积累的广度、深度。&/p&
&p&MISC这一块并不像PWN\REVERSE等需要深厚的理论基础,所以我们直接从经典题目开始入手。&/p&
&p&&b&0x03说明&/b&&/p&
&p&&b&0x04部分为WP,作为给小伙伴们提供结题思路之用,如果想获得好的训练效果,请先不要看0x04部分。前往文章开篇给出的链接下载题目自己先动手试试。&/b&&/p&
&p&&b&0x04CTF仿真题WP&/b&&/p&
&p&1.紧急报文&br&密文都由ADFGX,百度一下,发现有个ADFGX密码 &br&密码表如图 &/p&&p&&figure&&img src=&https://pic2.zhimg.com/v2-d90eb3d8cc0d422c552ee55_b.png& data-rawwidth=&248& data-rawheight=&231& class=&content_image& width=&248&&&/figure&对应着解密即可 &br&
FA XX DD AG FF XG FD XG DD DG GA XF FA &br&
flagxidianctf &br&提交:flag_Xd{hSh_ctf:flagxidianctf}&/p&
&p&2.flag.xls先介绍最简单的方法 &br&直接仍在winhex中然后查找flag关键字即可 &br&&figure&&img src=&https://pic2.zhimg.com/v2-9aa553e03d29dc_b.png& data-rawwidth=&590& data-rawheight=&376& class=&origin_image zh-lightbox-thumb& width=&590& data-original=&https://pic2.zhimg.com/v2-9aa553e03d29dc_r.jpg&&&/figure&别的方法也是半斤八两,因为打开xls它要密码,所以我们就用notepad或者notepad++打开都行,在搜索flag就行了 &/p&&p&&figure&&img src=&https://pic1.zhimg.com/v2-9c31deb1aa3dce441e75a7cb4a360850_b.png& data-rawwidth=&639& data-rawheight=&316& class=&origin_image zh-lightbox-thumb& width=&639& data-original=&https://pic1.zhimg.com/v2-9c31deb1aa3dce441e75a7cb4a360850_r.jpg&&&/figure&&br&&/p&
&p&3.图片里的动漫&br&一张图片而已,果断拉到kali里binwalk &br&&figure&&img src=&https://pic1.zhimg.com/v2-a210abe8a69eb373a31f7ef00fda6ba4_b.png& data-rawwidth=&650& data-rawheight=&286& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&https://pic1.zhimg.com/v2-a210abe8a69eb373a31f7ef00fda6ba4_r.jpg&&&/figure&看到了ZIP &br&于是后缀改为.zip打开,得到flag.rar,需要密码,再次binwalk &br&&figure&&img src=&https://pic3.zhimg.com/v2-af1c639af03c84dc7d8c46_b.png& data-rawwidth=&622& data-rawheight=&186& class=&origin_image zh-lightbox-thumb& width=&622& data-original=&https://pic3.zhimg.com/v2-af1c639af03c84dc7d8c46_r.jpg&&&/figure&发现.JPEG,于是改格式为.jpeg,打开发现是七龙珠的图片 &br&题目提示是小写英文字母,七龙珠的英文是dragon ball,提示发现错误 &br&考虑到图片是倒着的,所以答案也是倒着的,即逆序,得到答案 &br&
CTF{llabnogard}&/p&
&p&4.Canon&/p&
&p&下载后解压是一段mp3和一个压缩文件,压缩文件打不开先放着,我们先处理mp3
misc肯定会涉及到隐写,处理mp3的隐写一般使用mp3Stego,但是处理时需要密码,试试用标题Canon &br&&figure&&img src=&https://pic4.zhimg.com/v2-7fffb463b08abf_b.png& data-rawwidth=&625& data-rawheight=&224& class=&origin_image zh-lightbox-thumb& width=&625& data-original=&https://pic4.zhimg.com/v2-7fffb463b08abf_r.jpg&&&/figure&打开文件夹,发现 &br&&figure&&img src=&https://pic1.zhimg.com/v2-3d3caed14cf3be535e79b4_b.png& data-rawwidth=&601& data-rawheight=&65& class=&origin_image zh-lightbox-thumb& width=&601& data-original=&https://pic1.zhimg.com/v2-3d3caed14cf3be535e79b4_r.jpg&&&/figure&打开txt,里面的就是前面的压缩文件的解压密码 &br&解压后里面有个txt,目测是base64,但是这么长的base64让你解密是不合理的,所以考虑可能是某种类型的某件缺了些代码,补上后再按照相应的格式打开就行了 &br&
txt文件提示我们是png格式,所以直接后缀改为.png用winhex打开看看,发现没有明显的文件头 &br&所以我们给它添加,这里直接用&a href=&http://link.zhihu.com/?target=http%3A//lib.csdn.net/base/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python&/a&来,顺便生成最后的图片 &br&
import base64&/p&
&p&def foo(): &br&
f=open(‘C:\Users\hasee\Downloads\mimimi\zip\pic_png.txt’).read() &br&
fsave=open(‘pic.png’,’wb’) &br&
addHeader=”89 50 4E 47 0D 0A 1A 0A”.replace(’ ‘,”).decode(‘hex’) &br&
fsave.write(addHeader) &br&
fsave.write(base64.b64decode(f)) &br&
fsave.close() &br&
&p&if &strong&name&/strong& == ‘&strong&main&/strong&‘: &br&
foo() &br&
print ‘ok’ &br&
&p&打开生成后的图片得到答案 &/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-4e0e3f6c62f_b.png& data-rawwidth=&211& data-rawheight=&270& class=&content_image& width=&211&&&/figure&当然,非要base64解密也行,解密后把看上去干净点的代码复制到word里查找CTF就得到答案了&/p&&p&&figure&&img src=&https://pic3.zhimg.com/v2-cec06ee689d5e39d6eff55db068c95aa_b.png& data-rawwidth=&532& data-rawheight=&441& class=&origin_image zh-lightbox-thumb& width=&532& data-original=&https://pic3.zhimg.com/v2-cec06ee689d5e39d6eff55db068c95aa_r.jpg&&&/figure&&br&5.ROT-13变身了&br&
rot-13作为置换暗码的一种都是数字怎么可能,所以应该想到ascii &br&题目提示回旋13,我们-13就行了 &br&&a href=&http://link.zhihu.com/?target=http%3A//lib.csdn.net/base/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python&/a&中的chr可以自动转换,我们由此跑python &br&&figure&&img src=&https://pic2.zhimg.com/v2-d6c43da14003afc192f81_b.png& data-rawwidth=&569& data-rawheight=&69& class=&origin_image zh-lightbox-thumb& width=&569& data-original=&https://pic2.zhimg.com/v2-d6c43da14003afc192f81_r.jpg&&&/figure&????表示为未知,给我们的MD5也查不出来,所以只能自己爆破了,爆破的思路大概就是: &br&?作为ASCII的可见字符,范围在32-126,有95种可能,四个????所以有95^4中可能,每种排列出来后再进行MD验证 &br&由此思想来跑PYHTON &br&&figure&&img src=&https://pic4.zhimg.com/v2-c5c618bafb1f2eda4eee5a8aee5fb537_b.png& data-rawwidth=&648& data-rawheight=&240& class=&origin_image zh-lightbox-thumb& width=&648& data-original=&https://pic4.zhimg.com/v2-c5c618bafb1f2eda4eee5a8aee5fb537_r.jpg&&&/figure&得出答案&/p&
&p&6.解码磁带&br&只有字符’o’和下划线’&em&‘&/em&&em&,不免让我们想起二进制,只有0和1,却能表示所有信息,所以我们尝试用0,1替换o和&/em& &br&而究竟0对于o还是_呢?我们有例子可以得到 &br&跑&a href=&http://link.zhihu.com/?target=http%3A//lib.csdn.net/base/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python&/a&的思路是这样子的,换成二进制后再转换成ascii,然后相应解码即可,也可以参考这张图片 &br&直接用二进制对应字母 &br&&figure&&img src=&https://pic3.zhimg.com/v2-89e1d105dfd702dc5e5d337b0c047bce_b.png& data-rawwidth=&569& data-rawheight=&396& class=&origin_image zh-lightbox-thumb& width=&569& data-original=&https://pic3.zhimg.com/v2-89e1d105dfd702dc5e5d337b0c047bce_r.jpg&&&/figure&&br&&a href=&http://link.zhihu.com/?target=http%3A//lib.csdn.net/base/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python&/a&结果如下: &br&&figure&&img src=&https://pic2.zhimg.com/v2-1bf365eef741ef26a718761_b.png& data-rawwidth=&545& data-rawheight=&435& class=&origin_image zh-lightbox-thumb& width=&545& data-original=&https://pic2.zhimg.com/v2-1bf365eef741ef26a718761_r.jpg&&&/figure&按照格式提交即可&/p&
&p&7.功夫秘籍&br&下载来的是一个压缩包,打开它。。。我的天,居然打不开。扔到winhex看看,发现是png &br&&figure&&img src=&https://pic3.zhimg.com/v2-1d262bbdbb2f4783bb8a_b.png& data-rawwidth=&521& data-rawheight=&345& class=&origin_image zh-lightbox-thumb& width=&521& data-original=&https://pic3.zhimg.com/v2-1d262bbdbb2f4783bb8a_r.jpg&&&/figure&本来想直接改成png的,但是想到改了之后还是要winhex,干脆直接搜索key,flag等关键字,找到了 &br&&figure&&img src=&https://pic3.zhimg.com/v2-81becdd888f9c6075d52_b.png& data-rawwidth=&586& data-rawheight=&94& class=&origin_image zh-lightbox-thumb& width=&586& data-original=&https://pic3.zhimg.com/v2-81becdd888f9c6075d52_r.jpg&&&/figure&目测base64,解码 &br&&figure&&img src=&https://pic3.zhimg.com/v2-ca6affba7a7e_b.png& data-rawwidth=&598& data-rawheight=&341& class=&origin_image zh-lightbox-thumb& width=&598& data-original=&https://pic3.zhimg.com/v2-ca6affba7a7e_r.jpg&&&/figure&目测栅栏,解码 &br&&figure&&img src=&https://pic4.zhimg.com/v2-d8db94d1ab20bbb_b.png& data-rawwidth=&621& data-rawheight=&332& class=&origin_image zh-lightbox-thumb& width=&621& data-original=&https://pic4.zhimg.com/v2-d8db94d1ab20bbb_r.jpg&&&/figure&提交时只需要提交{}里面的内容就行了&/p&
&p&8.WTF?&/p&
&p&打开一看一堆乱七八糟的东西,不过拉到最下面发现有=,base64解之 &br&得到01的组合 &br&数了一下有65536 = 256*256 &br&正方形是吧 &br&那么尝试组个正方形出来 &br&作图的话processing挺好用 &br&&figure&&img src=&https://pic2.zhimg.com/v2-d8ce0f7acfcfbd_b.png& data-rawwidth=&660& data-rawheight=&405& class=&origin_image zh-lightbox-thumb& width=&660& data-original=&https://pic2.zhimg.com/v2-d8ce0f7acfcfbd_r.jpg&&&/figure&扫一扫就出来了&/p&
&p&9.社交网络&br&下载来的压缩文件需要密码,爆破之 &br&&figure&&img src=&https://pic4.zhimg.com/v2-0fb1f9cbd2abcf_b.png& data-rawwidth=&472& data-rawheight=&459& class=&origin_image zh-lightbox-thumb& width=&472& data-original=&https://pic4.zhimg.com/v2-0fb1f9cbd2abcf_r.jpg&&&/figure&解压后得到文件,右键查看属性,得到flag&/p&
&p&10.有趣的文件&br&最前面的8位是地址,不用管,后面的应该是文件头,百度afbc
1c27 &br&&figure&&img src=&https://pic1.zhimg.com/v2-62ff5da5fb613aaff41e90_b.png& data-rawwidth=&445& data-rawheight=&216& class=&origin_image zh-lightbox-thumb& width=&445& data-original=&https://pic1.zhimg.com/v2-62ff5da5fb613aaff41e90_r.jpg&&&/figure&看样子应该是.7z的压缩文件,不过给出的acsii里面没有37 7a,这就是缺少的,需要我们补上 &br&,补上后发现什么文件也不是,问题出在哪里呢? &br&百度后发现每两位应该交换一下 &br&&figure&&img src=&https://pic1.zhimg.com/v2-b43b05c3bf08cdac18d54_b.png& data-rawwidth=&627& data-rawheight=&268& class=&origin_image zh-lightbox-thumb& width=&627& data-original=&https://pic1.zhimg.com/v2-b43b05c3bf08cdac18d54_r.jpg&&&/figure&这个任务太繁重了,本来还想这放在winhex里面手工的,这里直接&a href=&http://link.zhihu.com/?target=http%3A//lib.csdn.net/base/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python&/a&吧 &br&
def revStr(s): &br&
news=”” &br&
for i in xrange(0,len(s),4): &br&
news+=s[i+2:i+4] &br&
news+=s[i:i+2] &br&
return news&/p&
&p&def foo(): &br&
f=open(‘funfile’) &br&
s=”377a” &br&
for line in f: &br&
s+=revStr(line.strip()[8:].replace(’ ‘,”)) &br&
fsave=open(‘fun.7z’,’wb’) &br&
fsave.write(s.decode(‘hex’)) &br&
fsave.close() &br&
if &strong&name&/strong&
== ‘&strong&main&/strong&‘:
foo() &br&
print ‘finished’ &br&自动生成fun.7z压缩文件,解压后是一张阿狸的图片,拖进winhex看看,发现疑似flag的base64加密过的 &br&&figure&&img src=&https://pic4.zhimg.com/v2-d24edeeece_b.png& data-rawwidth=&600& data-rawheight=&120& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-d24edeeece_r.jpg&&&/figure&复制后base64解码就行了&/p&
&p&&b&0x05结语&/b&&/p&
&p&看到这儿,小伙伴们是不是觉得MISC很有意思呢,由于MISC的类型比较多,难免挂一漏万,不过我还是尽可能多地给小伙伴提供各种花式姿(知)势(识)。&/p&
&p&MISC之路,漫漫其修远兮,且行且珍惜。&/p&
&p&预告:下一篇CTF系列将会继续介绍MISC题目的其他类型,同时总结MISC技巧并提供MISC所涉及到的工具及其用法演示。&/p&
&p&如果看完这一篇还不过瘾的话可以去合天官网做实验继续学习哦。&/p&
&a href=&http://link.zhihu.com/?target=http%3A//www.hetianlab.com/cour.do%3Fw%3D1%26c%3DC9d6c0ca797abec3100001& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&hetianlab.com/cour.do?&/span&&span class=&invisible&&w=1&c=C9d6c0ca797abec3100001&/span&&span class=&ellipsis&&&/span&&/a&
本文属于合天智汇原创文稿,未经允许,禁止转载! 题目链接:
CTF竞赛是安全圈喜闻乐见的竞赛模式,对于培养网络安全技术人才起到了很重要的作用。CTF起源于1996年DEFCON全球黑客大会,是Capture The Flag的简称。经过多年的发展,CTF…
&figure&&img src=&https://pic1.zhimg.com/v2-acd3e7580b0f_b.jpg& data-rawwidth=&612& data-rawheight=&433& class=&origin_image zh-lightbox-thumb& width=&612& data-original=&https://pic1.zhimg.com/v2-acd3e7580b0f_r.jpg&&&/figure&&p&&/p&&p&隐写术是秘密隐藏的艺术和科学。隐写术语是从希腊词得出的,stegos意思是“覆盖”,grafia,意思是“写”。因此这词的意思是“覆盖写”。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-1d7a38145fed93cad7b28fe0988c29dd_b.jpg& data-rawwidth=&520& data-rawheight=&144& class=&origin_image zh-lightbox-thumb& width=&520& data-original=&https://pic2.zhimg.com/v2-1d7a38145fed93cad7b28fe0988c29dd_r.jpg&&&/figure&&p&&br&&/p&&p&隐写术的概念并不新鲜,它已经存在了几个世纪。约公元前440年,希腊统治者Histiaeus采用了早期版本的隐写术,即给奴隶剃头,在其头皮上贴上信息,等待头发重新生长就隐藏秘密信息,然后派他发送信息。接收者再次剃了他的头发现消息。另一个希腊人,Demaratus,将波斯人攻击斯巴达的计划写在一个蜡片上来隐藏信息。然后他用新鲜的蜡覆盖了消息。&br&&br&看似空白的平板发送消息。还有秘密信息用隐形墨水写或隐藏在情书中。(例如,每个句子的第一个字符可以用来拼写一个秘密。)第二次世界大战期间,因为在欧洲的邮件被检查地很仔细,隐写术被囚徒和士兵大量使用。&/p&&p&&br&&/p&&h2&&b&电子世界的隐写术&/b&&/h2&&p&&b&&br&&/b& 隐写术也可以用来隐藏数字世界的信息。要数字化隐藏一个秘密消息,我们需要一个包装器或容器作为宿主文件。包装器可以是图像,音轨,视频剪辑或文本文件。下图显示如何将文本消息隐藏在宿主图像中,同时对图像进行最小的更改,并且不会对图像进行肉眼可辨的更改。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-03d7decd6aabdfbec2be97da91a9f2df_b.jpg& data-rawwidth=&574& data-rawheight=&287& class=&origin_image zh-lightbox-thumb& width=&574& data-original=&https://pic4.zhimg.com/v2-03d7decd6aabdfbec2be97da91a9f2df_r.jpg&&&/figure&&p&&br&&/p&&h2&&b&隐写、加密、水印&/b&&/h2&&p&隐写术,密码学和水印用于隐藏信息。密码术使用加密算法隐藏消息,并将其作为密文发送。隐写术在一个似乎合法的消息中隐藏了一个秘密信息。水印略有不同:它使用签名来识别出处,所有的拷贝都以相同的方式进行标记。这三种方法是最常见的隐藏信息的手段。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-02d66da371d7a8eeff55_b.jpg& data-rawwidth=&552& data-rawheight=&185& class=&origin_image zh-lightbox-thumb& width=&552& data-original=&https://pic3.zhimg.com/v2-02d66da371d7a8eeff55_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&h2&&b&网络攻击中的隐写&/b&&/h2&&p&&b&&br&&/b&恶意软件不断发展,以逃避监视和检测。为避免检测,一些恶意软件使用数字隐写术来在看似无害的宿主文件中隐藏其恶意内容。但这提出了一个明显的问题:&b&如果恶意软件必须解密隐藏的数据,反恶意软件产品是否只需检测解密程序?&/b&&/p&&p&&br&&/p&&p&大多数反恶意软件签名检测配置文件中的恶意内容。使用隐写术将配置文件嵌入到宿主文件中。此外,所得到的隐写文件可以解密为主存储器,进一步降低了被检测的可能性。最后,非常难以在隐写文件中检测到诸如配置文件,二进制更新或bot命令之类隐藏信息的存在。不幸的是,在网络攻击中隐写术很容易实现,并且难以检测。&/p&&p&&br&&/p&&p&在网络攻击中,2011年Duqu恶意软件首次使用隐写术,Duqu的主要目的是从受害者系统收集信息。Duqu将数据加密并嵌入到JPEG文件中,并将其作为图像文件发送到其控制服务器,从而不引起怀疑。2014年,研究人员发现宙斯银行特洛伊木马(ZeusVM)的一个变体使用图像隐写来隐藏发送受感染系统的命令。那年晚些时候,我们了解到,Lurk使用隐写技术来传播恶意软件。就Lurk的情况而言,白色BMP图像文件包含加密的URL,一旦它被解密就会下载了第二个攻击载荷。最近,Stegoloader(也称为Gatak)和不同的恶意攻击也使用了图像隐写术。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-3cf02ac06c9d70d3417e8b_b.jpg& data-rawwidth=&554& data-rawheight=&168& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic4.zhimg.com/v2-3cf02ac06c9d70d3417e8b_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&h2&&b&数字隐写类型&br&&/b& &/h2&&p&数字隐写术可以分为文字,图像音频和视频隐写。&/p&&p&文字隐写是最早和最难使用的一种。它使用自然语言隐藏秘密信息。由于文本文档中缺乏冗余,文本隐写术具有挑战性。音频隐写通过以不可察觉的方式修改音频信号来发送隐藏信息,并将秘密消息作为噪声嵌入到在人类听觉范围之外的频率的音频文件中。例如,频谱隐写术通常用于通过无线电波发送隐藏的消息。类似地,在视频隐写术中,秘密消息隐藏在视频流中。&/p&&p&&br&&/p&&p&&b&图像隐写&/b&&/p&&p&数字隐写术的最常见形式是使用图像。要了解基于图像的隐写术,我们需要了解数字图像的概念。图像通常基于8位或24位颜色组合。每个像素通常由黑白图像的8位(1字节)组成;&br& 或彩色图像的24位(3字节)个红色,绿色和蓝色各一个字节(通常称为RGB格式)。 例如,RGB(218,150,149)表示R = &br&,G = ,B = 。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-772539bab47fdb_b.jpg& data-rawwidth=&557& data-rawheight=&188& class=&origin_image zh-lightbox-thumb& width=&557& data-original=&https://pic1.zhimg.com/v2-772539bab47fdb_r.jpg&&&/figure&&p&&br&&/p&&p&我们将图像隐写分为一下以及各常见的域&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-616f71afb10a6ddbe89a3230_b.jpg& data-rawwidth=&557& data-rawheight=&178& class=&origin_image zh-lightbox-thumb& width=&557& data-original=&https://pic4.zhimg.com/v2-616f71afb10a6ddbe89a3230_r.jpg&&&/figure&&p&&br&&/p&&p&在空间域隐写技术中,我们可以通过直接操纵宿主图像的像素值隐藏秘密数据。最基本的基于位的隐写术是最流行和最简单的空间域技术之一。&/p&&p&&br&&/p&&p&变换域隐写技术也被称为频域技术,因为它涉及在宿主图像的频率或变换中嵌入秘密数据。这种技术是在图像中隐藏数据的较复杂的方法。&/p&&p&&br&&/p&&p&在失真技术中,使用信号失真来嵌入秘密数据。这种技术需要解码器侧的宿主图像的信息,因为它是检查原始宿主图像和失真覆盖图像之间的差异以提取秘密消息。&/p&&p&&br&&/p&&p&掩盖和过滤是另一种常见的隐写技术。它通过修改图像的某些部分的明亮度来隐藏或掩盖宿主图像上的秘密数据。&/p&&p&&br&&/p&&p&攻击者如何在图像中隐藏消息? 我们可以通过下面给出的空间域示例来理解隐藏的过程:&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-e36edc38b727fc60da060_b.jpg& data-rawwidth=&542& data-rawheight=&277& class=&origin_image zh-lightbox-thumb& width=&542& data-original=&https://pic4.zhimg.com/v2-e36edc38b727fc60da060_r.jpg&&&/figure&&p&&br&&/p&&p&图32 通过转换修改了标记红色的右侧列值。MSB和LSB分别表示“最高有效位”和“最低有效位”。&/p&&p&&br&&/p&&p&使用隐写嵌入算法来修改图像,改变最低有效位以在彩色图像中的三个像素将字母“A”嵌入。最低有效位的改变在视觉上是不可察觉的,但一旦受害者的系统上接收到图像文件,它们可以就被恶意软件解密和使用。&/p&&p&&br&&/p&&p&我们可以总结数字隐写术过程:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-421b65b4e8f33bd0fc0dfab3_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&https://pic1.zhimg.com/v2-421b65b4e8f33bd0fc0dfab3_r.jpg&&&/figure&&p&&br&&/p&&p&隐藏的消息通过嵌入算法隐藏进宿主文件。所产生的隐写文件通过通信信道发送到目标系统。最后,通过提取算法来提取隐藏的消息。&/p&&p&&br&&/p&&h2&&b&隐写术如何帮助利用工具包?&/b&&/h2&&p&&b&&br&&/b&隐写术现在被一些恶意广告攻击和漏洞利用套件使用。Sundown利用套件出现在2015。当时,它不是很先进,大部分代码看起来是从Angler,Nuclear,和RIG漏洞利用套件抄袭而来。2016年10月,Sundown演变并开始利用隐写术。
&br&&/p&&p&从最近的Sundown变种漏洞利用工具包,我们可以从下列感染链了解Sundown漏洞利用工具包的最新变种:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-dc3e8c403faca8d86534f_b.jpg& data-rawwidth=&554& data-rawheight=&209& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic1.zhimg.com/v2-dc3e8c403faca8d86534f_r.jpg&&&/figure&&p&&br&&/p&&p&受害者访问被劫持的网站或包含恶意广告的网站时攻击将会开始。受害者自动重定向到漏洞利用工具包。&/p&&p&&br&&/p&&p&以下图片显示了一月份的网络流量,其中受害者被重定向到了Sundown页面,夹着取回并下载PNG图像。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-28ac1d44d4b4ddafb0ee5f_b.jpg& data-rawwidth=&549& data-rawheight=&98& class=&origin_image zh-lightbox-thumb& width=&549& data-original=&https://pic3.zhimg.com/v2-28ac1d44d4b4ddafb0ee5f_r.jpg&&&/figure&&p&&br&&/p&&p&图33 Sundown感染链使用的隐写术&/p&&p&&br&&/p&&p&大多数情况下。Png图片会显示为一张空白图片&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e65bcdad92e58c2e34ecec40c63f0ed5_b.jpg& data-rawwidth=&401& data-rawheight=&378& class=&content_image& width=&401&&&/figure&&p&&br&&/p&&p&图34 下载下来的恶意png文件&/p&&p&&br&&/p&&p&甚至从hex角度来看这个PNG文件都有一个完整的PNG头部。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-6a36ccd58f2_b.jpg& data-rawwidth=&555& data-rawheight=&210& class=&origin_image zh-lightbox-thumb& width=&555& data-original=&https://pic2.zhimg.com/v2-6a36ccd58f2_r.jpg&&&/figure&&p&&br&&/p&&p&图35 恶意png文件的十六进制 &/p&&p&&br&&/p&&p&但是这个PNG文件内部被编码和隐藏了恶意代码。&/p&&p&&br&&/p&&p&Sundown套件的指向页面包含一个解码例程,它将会解锁PNG文件然后提取恶意内容。指向页面被严重的混淆。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-1f2c75bdb5b24d6b7ad1fa74ba37dcbd_b.jpg& data-rawwidth=&561& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&561& data-original=&https://pic4.zhimg.com/v2-1f2c75bdb5b24d6b7ad1fa74ba37dcbd_r.jpg&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-74e0aa16dedec8bbddc6db9e6717430c_b.jpg& data-rawwidth=&559& data-rawheight=&393& class=&origin_image zh-lightbox-thumb& width=&559& data-original=&https://pic4.zhimg.com/v2-74e0aa16dedec8bbddc6db9e6717430c_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&这段代码会加载PNG文件并且在成功利用后会通过URL下载载荷。解码逻辑在脚本最后出现。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-1d81e9b9118cebde7ce52_b.jpg& data-rawwidth=&559& data-rawheight=&326& class=&origin_image zh-lightbox-thumb& width=&559& data-original=&https://pic1.zhimg.com/v2-1d81e9b9118cebde7ce52_r.jpg&&&/figure&&p&&br&&/p&&p&在成功解码过后,我们看到如下输出:&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-de172d108be229fb367befc_b.jpg& data-rawwidth=&560& data-rawheight=&441& class=&origin_image zh-lightbox-thumb& width=&560& data-original=&https://pic4.zhimg.com/v2-de172d108be229fb367befc_r.jpg&&&/figure&&p&&br&&/p&&p&图39 CVE- 漏洞利用代码&/p&&p&&br&&/p&&p&从PNG图像解码的这个漏洞利用代码的进一步分析显示,它包括针对CVE-的漏洞利用代码,这是Internet Explorer的JavaScript处理中的一个漏洞。此漏洞利用代码还包含在成功利用此漏洞后执行的shellcode。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c4d5baf0bccc00e667c6c2_b.jpg& data-rawwidth=&637& data-rawheight=&332& class=&origin_image zh-lightbox-thumb& width=&637& data-original=&https://pic1.zhimg.com/v2-c4d5baf0bccc00e667c6c2_r.jpg&&&/figure&&p&&br&&/p&&p&图40 攻击CVE-的shellcode&/p&&p&&br&&/p&&p&这个Sundown工具包被发现是通过隐写的方式从IP地址93.190.143.82传播Cerber勒索软件。&/p&&p&与分析相关的SHA256hash:&/p&&ul&&li&A5E991B647BC60A46F534DC630B228 3BF1D3CEC8D6D &/li&&li&EFB5308AA78FFD53E799F219C27B15D630B6BFAEC674DF8B5923 &/li&&li&EEDBD8CDDBA5ED59D06E2E1DB3EAB&/li&&/ul&&p&&br&&/p&&p&&br&&/p&&h2&&b&隐藏在 jpg 文件中的Cerber&/b&&/h2&&p&Cerber勒索软件家族如今非常流行。初始化传播载荷是嵌入在Microsoft文件中的宏代码。&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-8e76d0e8a66bec839ff01cb90c67cf0b_b.jpg& data-rawwidth=&639& data-rawheight=&42& class=&origin_image zh-lightbox-thumb& width=&639& data-original=&https://pic2.zhimg.com/v2-8e76d0e8a66bec839ff01cb90c67cf0b_r.jpg&&&/figure&&p&&br&&/p&&p&图 41 当受害者打开被感染的文档时,会释放恶意vbs文件,这个文件会使用wscript.exe执行然后从恶意站点下载mhtr.jpg&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-389d8150c4fefc01a58e0bb33ace7111_b.jpg& data-rawwidth=&646& data-rawheight=&67& class=&origin_image zh-lightbox-thumb& width=&646& data-original=&https://pic3.zhimg.com/v2-389d8150c4fefc01a58e0bb33ace7111_r.jpg&&&/figure&&p&&br&&/p&&p&图42 流向抓取显示对mhtr.jpg的请求&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-cf25e1cb746e13f8cdc8d_b.jpg& data-rawwidth=&642& data-rawheight=&222& class=&origin_image zh-lightbox-thumb& width=&642& data-original=&https://pic1.zhimg.com/v2-cf25e1cb746e13f8cdc8d_r.jpg&&&/figure&&p&&br&&/p&&p&图43 下载下来的mhtr.jpg显示它和Zencode有所联系&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-6b60d7ecbee2f3c170da91ab87abd4e9_b.jpg& data-rawwidth=&637& data-rawheight=&87& class=&origin_image zh-lightbox-thumb& width=&637& data-original=&https://pic2.zhimg.com/v2-6b60d7ecbee2f3c170da91ab87abd4e9_r.jpg&&&/figure&&p&&br&&/p&&p&图44 mhtr.jpg的文件头&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-9c387a483fe7aad70af527e14468d16e_b.jpg& data-rawwidth=&600& data-rawheight=&396& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-9c387a483fe7aad70af527e14468d16e_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&图45 使用单个XOR字节密钥用加密可执行文件,并使用隐写术在偏移0x25c9处进行嵌入&/p&&p&将0x25c9处每个自己与0x73XOR解密,解密过程如下:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e5c7bc03a4_b.jpg& data-rawwidth=&646& data-rawheight=&105& class=&origin_image zh-lightbox-thumb& width=&646& data-original=&https://pic2.zhimg.com/v2-e5c7bc03a4_r.jpg&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e2aefb2f806dfe5b27856b_b.jpg& data-rawwidth=&597& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&597& data-original=&https://pic1.zhimg.com/v2-e2aefb2f806dfe5b27856b_r.jpg&&&/figure&&p&图46 解密后的文件 &/p&&p&&br&&/p&&p&加密后的文件在和是一个Nullsoft安装文件。它会释放进%APPDATA%文件夹并且会被用来从事勒索活动。&/p&&p&&br&&/p&&h2&&b&数据泄露与隐写术&/b&&/h2&&p&&b&&br&&/b&数据泄漏,也称为数据窃取,是从计算机或服务器传输未经授权的敏感信息。在2016年,我们看到与Magento有关的攻击,这是一个在线电子商务平台。这些攻击使用图像隐写来隐藏支付卡的详细信息。&/p&&p&&br&&/p&&p&总体来说,Magento网站使用核心内容管理系统文件cc.php处理信用卡信息。因此,攻击者在Magento网站上放置恶意代码的明显位置是[magento_root]&br& / app /code / core / Mage / Payment / Model / Method / cc.php。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a73ba54ca90525bd50db_b.jpg& data-rawwidth=&640& data-rawheight=&283& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-a73ba54ca90525bd50db_r.jpg&&&/figure&&p&图47 一个合法的prepareSave方法&/p&&p&&br&&/p&&p&通常,恶意软件在prepareSave()方法中插入恶意代码,但也可能存在于任何其他方法中。执行后,恶意代码收集支付卡的详细信息,将其隐藏在本地图像文件内,例如真实商品图片。收集完成后,攻击者只需下载图像文件(典型的电子商务网站),就可以提取隐藏的数据。&/p&&p&&br&&/p&&h2&&b&网络隐写术&br&&/b& &/h2&&p&网络隐写术是恶意软件使用的最新数字隐写术。这种形式的攻击正在上升,因为攻击者可以通过网络发送无限的信息。一些恶意软件作者使用TCP / IP协议头中的未使用的字段来隐藏数据。&/p&&p&&br&&/p&&p&在某些情况下,恶意软件在简单的DNS和HTTP请求中隐藏其控制服务器流量。 恶意软件向实际是控制服务器的硬编码DNS服务器发送不存在域的请求。这些命令在DNS响应中被简单的Base64编码技术进行嵌入和模糊处理。&/p&&p&&br&&/p&&p&我们分析了TeslaCrypt,它使用HTTP错误消息来隐藏其通信,并通过Neutrino漏洞套件下载。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-0a41aa635b4d776d5daeb07c5cad81c2_b.jpg& data-rawwidth=&639& data-rawheight=&326& class=&origin_image zh-lightbox-thumb& width=&639& data-original=&https://pic1.zhimg.com/v2-0a41aa635b4d776d5daeb07c5cad81c2_r.jpg&&&/figure&&p&图48 初始化的TeslaCrypt勒索软件载荷通信通过远程服务器使用Base64编码的404错误消息。&/p&&p&在HTML页面Base64编码的注释部分,我们发现“&! - c3VjY2Vzcw == - &”解释为响应“成功”。&/p&&p&然后,恶意软件以下列编码数据作出响应,如下图所示。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c181bfef69c_b.jpg& data-rawwidth=&641& data-rawheight=&390& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&https://pic3.zhimg.com/v2-c181bfef69c_r.jpg&&&/figure&&p&图49-50 恶意软件对成功感染后的响应&/p&&p&&br&&/p&&figure&&img src=&https://pic7.zhimg.com/v2-8e5b04e82ff79d92cf0725_b.jpg& data-rawwidth=&643& data-rawheight=&285& class=&origin_image zh-lightbox-thumb& width=&643& data-original=&https://pic7.zhimg.com/v2-8e5b04e82ff79d92cf0725_r.jpg&&&/figure&&p&&br&&/p&&p&图51 在回复中,恶意软件接收到另外的base64错误消息编码的下载链接&/p&&p&解码后的字符串是如下的格式:&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ac36f9e4b2f92dd24444f_b.jpg& data-rawwidth=&633& data-rawheight=&72& class=&origin_image zh-lightbox-thumb& width=&633& data-original=&https://pic3.zhimg.com/v2-ac36f9e4b2f92dd24444f_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&h2&&b&结论&br&&/b& &/h2&&p&隐写术将越来越受欢迎。这是一种历久弥新的老技术,因为隐写术通常能绕过反恶意软件检测,更多的威胁将使用这种技术。&/p&&h2&&b&应对策略和程序&br&&/b& &/h2&&ul&&li&加强用于防范内部威胁的软件交付和发布机制。维护可靠的企业应用程序的中央存储库,用户可以下载批准的软件。不允许用户从未知来源下载软件。&/li&&li&在图像编辑软件的帮助下,寻找隐写标记,如图像中的轻微色差。此外,图像中的大量重复颜色可能是隐写攻击的标志。&/li&&li&控制隐写软件的使用。禁止在任何公司系统上安装隐写术软件,除非为商业目的而特别要求。仅在包含的网段中部署此类型的软件。&/li&&li&仅安装来自受信任供应商的签名的应用程序。&/li&&li&配置反恶意软件以检测绑定软件。配置反恶意软件软件以识别可以包含隐写图像的绑定软件的存在。&/li&&li&如果一下捏攻击成功,则正确网络分段烦人虚拟化系统架构可能有助于包含爆发,因为虚拟化系统和连续网络流量监控的安全可验证的引导过程的使用有助于隔离应用程序。&/li&&li&监控出站流量。通过监控出站流量来识别成功的隐写攻击的存在。&/li&&/ul&&p&&br&&/p&&p&&br&&/p&&p&本文由看雪翻译小组 wangrin 编译,来源@macafee&br&&/p&&p&转载请注明来自看雪社区&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&
隐写术是秘密隐藏的艺术和科学。隐写术语是从希腊词得出的,stegos意思是“覆盖”,grafia,意思是“写”。因此这词的意思是“覆盖写”。 隐写术的概念并不新鲜,它已经存在了几个世纪。约公元前440年,希腊统治者Histiaeus采用了早期版本的隐写术,即给奴…
&p&隐写术是关于信息隐藏,即不让计划的接收者之外的任何人知道信息的传递事件(而不只是信息的内容)的一门技巧与科学。隐写术英文作“&u&Steganography&/u&”,来源于&u&约翰尼斯·特里特米乌斯&/u&一本看上去是有关黑魔法,实际上是讲&u&密码学&/u&与隐写术的一本书Steganographia中。此书书名来源于希腊语,意为“隐秘书写”。&/p&&p&&b&有两种办法可用来隐藏明文信息。隐写术,它可以隐藏信息的存在;而密码学则是通过对文本信息的不同转换而实现信息的对外不可读。&/b&&/p&&p&一种简单却很好使的隐写术可有一段明显无伤大雅的文本字词重新排列而成。例如,在一整段文本中用每个单词的第一个字母连起来就可以拼出隐藏的消息&/p&&p&&br&&/p&&p&隐写术&/p&&p&&b&字符标记:选择一些印刷字母或打字机打出的文本,用铅笔在其上书写一遍。这些标记需要做得在一般场合下辨识不出,除非将纸张按某个角度对着亮光看。&/b&&/p&&p&&b&不可见墨水:&/b&有些物质用来书写后不留下可见痕迹,除非加热或加之以某种化学物质。&/p&&p&&b&针刺:在某些字母上刺上小的针孔,这一般是分辨不出来的,除非对着光线。&/b&&/p&&p&&b&打字机的色带校正:用黑色的色带在行之间打印。用这种色带打印后的东西只有在强光下可见。&/b&&/p&&p&&b&用CD每一帧的最后一位来隐藏信息:例如,柯达CD格式的最大分辨率是,其中每一个像素包含有24位的RGB颜色信息。改动这24位像素的最低一位对整个画质影响不大。结果是你可以在每张数字快照中隐藏130KB的信息。&/b&&/p&&p&&b&隐写术的优缺点:&/b&&/p&&p&&b&需要许多额外的付出来隐藏相对较少的信息。&/b&&/p&&p&&b&尽管采用一些诸如上述方案也许很有效;但是一旦被破解,整个方案就毫无价值。(改进:具体的加入方法由秘钥决定;先加密再隐写)&/b&&/p&&p&&b&隐写术适合:通信双方宁愿内容丢失,也不愿意它们进行秘密通信的事物被人发现。加密标志信息也是重要和秘密的,通过它可以找出想进行消息隐藏的发送方或接收方。&/b&&/p&&p&&u&弗兰西斯·培根&/u&提出过一种隐藏消息的方法。&/p&&p&来自现代实践的一个例子&/p&&p&掩饰文本相对隐秘文本的大小(指数据含量,以比特计)越大,隐藏后者就越加容易。&/p&&p&因为这个原因,数字图像(包含有大量的数据)在因特网和其他传媒上被广泛用于隐藏消息。这种方法使用的广泛程度无从查考。例如:一个24位的位图中的每个象素的三个颜色分量(红,绿和蓝)各使用8个比特来表示。如果我们只考虑蓝色的话,就是说有2^8种不同的数值来表示深浅不同的蓝色。而像111110这两个值所表示的蓝色,人眼几乎无法区分。因此,这个最低有效位就可以被(在某种程度上检测不到地)用来存储颜色之外的某些信息。如果我们对红色和绿色进行同样的工作的话,我们可以在(差一点不到)三个的像素中存储一个字节的信息。&/p&&p&更正式一点地说,使隐写的信息难以探测的,也就是保证“有效载荷”(需要被隐蔽的信号)对“载波”(即原始的信号)的调制对载波的影响看起来(理想状况下甚至在统计上)可以忽略。这就是说,这种改变应该无法与载波中的噪声加以区别。&/p&&p&(从信息论的观点来看,这就是说信道的容量必须大于传输“表面上”的信号的需求。这就叫做信道的冗余。对于一幅数字图像,这种冗余可能是成像单元的噪声;对于数字音频,可能是录音或者放大设备所产生的噪声。任何有着模拟放大级的系统都会有所谓的热噪声(或称“1/f”噪声),这可以用作掩饰。另外,有损压缩技术(如JPEG)会在解压后的数据中引入一些误差,利用这些误差作隐写术用途也是可能的。)&/p&&p&隐写术也可以用作数字水印,这里一条消息(往往只是一个&u&标识符&/u&)被隐藏到一幅图像中,使得其来源能够被跟踪或校验。实际上在日本,“……内容标识符论坛和日本数字内容协会已经开始试验一套数字水印系统来‘防止盗版’(日本时报在线,日)。”&/p&&p&&b&隐写术的研究与应用 &/b&&/p&&p&近几年来,隐写术领域已经成为了信息安全的焦点。因为每个Web站点都依赖多媒体,如音频、视频和图像。隐写术这项技术可以将秘密信息嵌入到数字媒介中而不损坏它的载体的质量。第三方既觉察不到秘密信息的存在,也不知道存在秘密信息。因此&u&密钥&/u&、&u&数字签名&/u&和私密信息都可以在开放的环境(如Internet,或者内联网)中安全的传送。主要介绍隐写术的基本原理以及各方面的应用。&/p&&p&工具:&/p&&p&(1)Stegsolve图片分析软件: 用于分析图片,图片是由各种不同颜色的像素点构成的(涉及LSB等图片图形学内容,感兴趣的可以自己去查),这个工具可以很容易的把不同颜色通道的图片信息显示出来。&/p&&p&(2) 二维码扫描: 在图片隐写中,扫描二维码得到答案的题目是比较常见的,但是有时候扫描之后出现的也不一定是最后答案,往往需要我们进一步的去破解,所以用手机扫描注定不方便,有个电脑上的软件会方便很多。&/p&&p&(3)十六进制分析工具:与这个相同的还有winhex,winhex更常用,且功能更强大,想使用哪个看个人喜好。计算机的世界,所有的东西都是由1和0组成的,二进制也可以转成十六进制,所以利用这个工具可以看到构成图片的最原始的数据,同时可以找到隐藏在图片里的秘密。&/p&&h2&4)binwalk:这是在kali下自带的一个命令行工具,可以用来分析目标文件里是否有夹带其他东西,这在除了隐写以外的其他类型的题也是常用的工具。命令:binwalk –n 加文件 。比如说一张图片里面隐藏了一个压缩包,从表面上你是看不出什么的。但是使用binwalk命令,就可以分析出来。同样,把图片丢到十六进制查看器里面也可以看出来,但是新手对这些不熟悉很容易出错。毕竟压缩文件除了rar还有zip,又或许图片里面藏的是个txt。&/h2&&p&另外,分析之后我们需要把这附带的其他文件提取出来,这就需要另外的一个命令,&/p&&p&binwalk –e 加文件。同样可以使用十六进制查看器,通过分离切割来得到,有兴趣的同样可以自己试试。&/p&&p&(5)PS:这个东西大家肯定不会陌生,有关图片隐写,ps有时候会用到,但几率不大。因为前面介绍的几种工具基本已经够用了,ps无非也就是有更进一步的能力而已。与ps相应的还有一个叫做FW的工具,也是Adobe系列的。要是一张图片真的什么都分析不出来,丢到PS里,说不定就会发现惊喜了,但是这样的题至今我也只遇过三题,其中两题都是跟FW有关的。&/p&&p&(6)密码学:这就涉及到一个很大的方面了。有时候我们找到了图片里面藏的密码,但是出题人不会很直白的告诉我们答案,就会进行加密。常见的密码有md5,base64,当然还有各种各样奇怪的密码。不过野不用着急,这都是一个积累的过程,先去了解md5和base64的特征,然后拿解到的密码去网上搜索。大部分常见的密码类型网上都有在线解码网站&/p&&p&二、一些经验技巧:我一直认为看再多的东西都不如实际做几题来的印象深刻,不然很多东西都是看了就忘的。但是一些经验技巧也可以让后面学习的人少走些弯路(PS:这些都是我以前做题的时候总结的,也许不一定都是对的,毕竟接触这块还不是很久,还有很多地方要学习的,但是也可以参考一下,找到自己的一个做题思路才是最重要的)&/p&&p&(1)一般拿到一张图片,先看图片格式。常见的有JPG,PNG和BMP。JPG比起PNG,是有过压缩的图片,所以JPG格式的图片通常是没必要放到图片分析器里去看的。由于进过压缩,所以里面是不能放下二维码的。而我们使用图片分析器来分析图片,60%是为了找到里面隐藏的二维码。&/p&&p&(2)JPG格式的图片通常里面都有藏着另外的东西,大体上是压缩文件之类的,当然,也有往里面放音频的……所以先丢去binwalk分析才是正确的。&/p&&p&(3)PNG格式的图片首先就可以考虑藏二维码的问题了,不过也不是说他里面不会藏有其他文件哟。&/p&&p&(4)BMP是位图文件,能放的东西就更多了,可以拿去PS里看一下,说不定在就出现了两个图层了。&/p&&p&(5)无格式的东西,图片隐写的题,出题人很喜欢绕一个弯。有时候下载下来的东西是没有后缀格式的,这时候需要手动去添加。丢到十六进制查看器里去看它的头部十六进制,取前四个到百度搜一下就知道是什么格式了。同理,也有人会把头部文件给删除,这时候要靠他的后缀手动添加头部。这些都是在十六进制查看器里完成的。&/p&&p&(6)遇到音频的时候,音频也是可以藏东西的。一般是喜欢用AU,当然也有其他比较专门的工具,可以自己去找找。查看音频的波形,有时候里面会藏有一段莫尔斯电码。&/p&
隐写术是关于信息隐藏,即不让计划的接收者之外的任何人知道信息的传递事件(而不只是信息的内容)的一门技巧与科学。隐写术英文作“Steganography”,来源于约翰尼斯·特里特米乌斯一本看上去是有关黑魔法,实际上是讲密码学与隐写术的一本书Steganographi…
&figure&&img src=&https://pic4.zhimg.com/v2-c8df502ebccbc0264265a_b.jpg& data-rawwidth=&2560& data-rawheight=&1440& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic4.zhimg.com/v2-c8df502ebccbc0264265a_r.jpg&&&/figure&&p&欢迎大家支持发在我的博客的版本 &a href=&http://link.zhihu.com/?target=http%3A//ice1000.org//ImageEncryptionLSB/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于图像的 LSB 隐写术科普&/a& :D&/p&&p&这是 SKE 文章&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&无良小编想和泥玩捉迷藏!&/a&的 Java 翻译。&br&文章不是我写的,代码是我写的。&/p&&p&下面是内容。&/p&&h2&0x00 先放图&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-c8df502ebccbc0264265a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2560& data-rawheight=&1440& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic3.zhimg.com/v2-c8df502ebccbc0264265a_r.jpg&&&/figure&&p&窝究竟在蕾(lao)姆(po)的皂片里面藏了什么?&br&LSB 算法鲁棒性比较低,窝建议泥通过&a href=&http://link.zhihu.com/?target=https%3A//raw.githubusercontent.com/SKE48Cyto/Rem_steg/master/Rem_secret.png& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&/a&下载原图 &ω&&br&(注:博客里使用的图片是直接引用的原图,所以你也可以右键保存)&/p&&p&大佬们现在就可以试一下辣!很简单!&br&嘛~ 如果泥还不知道该怎么办,那么阅读本文,泥就会找到答案辣!&/p&&h2&0x01 什么是隐写术?&/h2&&p&维基百科对隐写术的定义:&/p&&blockquote&隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。 一般来说,隐写的信息看起来像一些其他的东西,例如一张购物清单,一篇文章,一篇图画或者其他“伪装”(cover)的消息。&/blockquote&&p&换而言之,隐写不同于加密,加密是一段你看不懂的东西,隐写是一段你似乎能看懂的东西,但是实际上不是表面看上去那么简单。&br&而对应把隐藏的东西提取出来的技术称为隐写分析。&/p&&p&接下来,无良小编就来科普一个非常非常非常简单的以数字图像为载体的 LSB 算法与相应的隐写分析~&/p&&h2&0x02 LSB算法&/h2&&h2&像素与 RGB&/h2&&p&计算机保存的图像是以数值保存每一个像素点。&br&数字图像有很多种,比如二值图像,每个像素点不是 0 ,就是 1 ;再比如灰度图像,每个像素取值从 0 到 255 。&/p&&h2&通道&/h2&&blockquote&通道,是数字图像中存储不同类型信息的灰度图像。一个图像最多可以有数十个个通道,常用的 RGB 和 Lab 图像默认有三个通道。&/blockquote&&p&(摘自维基百科)&/p&&p&RGB,这里指灰度图像里的以 RGB 模式存储数字图像的模型。其中,R 是 Red 的首字母,G 是 Green 的首字母,B 是 Blue 的首字母,它们分别代表一个通道,在每个通道上,保存一个代表该通道亮度的数字,取值范围从 0 到 255 。&/p&&p&举个例子。&/p&&p&以上面那张图为例,窝们用 Java 读取它的第一个像素值(不像 Python , Java 自带了库,哼):&/p&&div class=&highlight&&&pre&&code class=&language-java&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&javax.imageio.ImageIO&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.awt.*&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.awt.image.BufferedImage&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.io.*&/span&&span class=&o&&;&/span&
&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&Main&/span& &span class=&o&&{&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&kt&&void&/span& &span class=&nf&&main&/span&&span class=&o&&(&/span&&span class=&n&&String&/span&&span class=&o&&...&/span& &span class=&n&&args&/span&&span class=&o&&)&/span& &span class=&kd&&throws&/span& &span class=&n&&IOException&/span& &span class=&o&&{&/span&
&span class=&n&&BufferedImage&/span& &span class=&n&&image&/span& &span class=&o&&=&/span& &span class=&n&&ImageIO&/span&&span class=&o&&.&/span&&span class=&na&&read&/span&&span class=&o&&(&/span&&span class=&k&&new&/span& &span class=&n&&File&/span&&span class=&o&&(&/span&&span class=&s&&&Rem_secret.png&&/span&&span class=&o&&));&/span&
&span class=&n&&System&/span&&span class=&o&&.&/span&&span class=&na&&out&/span&&span class=&o&&.&/span&&span class=&na&&println&/span&&span class=&o&&(&/span&&span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&n&&image&/span&&span class=&o&&.&/span&&span class=&na&&getRGB&/span&&span class=&o&&(&/span&&span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&)).&/span&&span class=&na&&toString&/span&&span class=&o&&());&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&&p&运行结果:&/p&&p&&code&java.awt.Color[r=73,g=158,b=225]&br&&/code&&/p&&p&Java 返回了一个 &code&int&/code&,为了方便观察,我们把它转为一个&code&java.awt.Color&/code&对象。&br&其中有三个元素,分别对应 RGB 三个通道的亮度值,R 通道的亮度值为 73 ,G 通道亮度值为 158 ,B 通道亮度值为 225 ,三个通道的颜色混合在一起,也就构成了第一个像素点所显示的颜色~&/p&&h2&肉眼难分的“色号”&/h2&&p&窝们用 Java 生成一个每隔 30 个像素,R 通道上亮度值减 1 的图像。&/p&&div class=&highlight&&&pre&&code class=&language-java&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&javax.imageio.ImageIO&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.awt.*&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.awt.image.BufferedImage&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.io.*&/span&&span class=&o&&;&/span&
&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&Main&/span& &span class=&o&&{&/span&
&span class=&kd&&private&/span& &span class=&kd&&static&/span& &span class=&kt&&void&/span& &span class=&nf&&putPixel&/span&&span class=&o&&(&/span&&span class=&n&&BufferedImage&/span& &span class=&n&&image&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&widthStart&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&height&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&rgb&/span&&span class=&o&&)&/span& &span class=&o&&{&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&h&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&h&/span& &span class=&o&&&&/span& &span class=&n&&height&/span&&span class=&o&&;&/span& &span class=&o&&++&/span&&span class=&n&&h&/span&&span class=&o&&)&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&i&/span& &span class=&o&&&&/span& &span class=&mi&&30&/span&&span class=&o&&;&/span& &span class=&n&&i&/span&&span class=&o&&++)&/span& &span class=&n&&image&/span&&span class=&o&&.&/span&&span class=&na&&setRGB&/span&&span class=&o&&(&/span&&span class=&n&&widthStart&/span& &span class=&o&&+&/span& &span class=&n&&i&/span&&span class=&o&&,&/span& &span class=&n&&h&/span&&span class=&o&&,&/span& &span class=&n&&rgb&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&kt&&void&/span& &span class=&nf&&main&/span&&span class=&o&&(&/span&&span class=&n&&String&/span&&span class=&o&&...&/span& &span class=&n&&args&/span&&span class=&o&&)&/span& &span class=&kd&&throws&/span& &span class=&n&&IOException&/span& &span class=&o&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&width&/span& &span class=&o&&=&/span& &span class=&mi&&30&/span&&span class=&o&&,&/span& &span class=&n&&height&/span& &span class=&o&&=&/span& &span class=&mi&&30&/span&&span class=&o&&;&/span&
&span class=&n&&BufferedImage&/span& &span class=&n&&img&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&n&&BufferedImage&/span&&span class=&o&&(&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&mi&&10&/span&&span class=&o&&,&/span& &span class=&n&&height&/span&&span class=&o&&,&/span& &span class=&n&&BufferedImage&/span&&span class=&o&&.&/span&&span class=&na&&TYPE_INT_RGB&/span&&span class=&o&&);&/span&
&span class=&kt&&int&/span& &span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&mi&&255&/span&&span class=&o&&,&/span& &span class=&n&&g&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&i&/span& &span class=&o&&&&/span& &span class=&mi&&10&/span&&span class=&o&&;&/span& &span class=&n&&i&/span&&span class=&o&&++)&/span& &span class=&o&&{&/span&
&span class=&n&&putPixel&/span&&span class=&o&&(&/span&&span class=&n&&img&/span&&span class=&o&&,&/span& &span class=&n&&i&/span& &span class=&o&&*&/span& &span class=&mi&&30&/span&&span class=&o&&,&/span& &span class=&n&&height&/span&&span class=&o&&,&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&n&&r&/span& &span class=&o&&-&/span& &span class=&n&&i&/span&&span class=&o&&,&/span& &span class=&n&&g&/span&&span class=&o&&,&/span& &span class=&n&&b&/span&&span class=&o&&).&/span&&span class=&na&&getRGB&/span&&span class=&o&&());&/span&
&span class=&o&&}&/span&
&span class=&n&&ImageIO&/span&&span class=&o&&.&/span&&span class=&na&&write&/span&&span class=&o&&(&/span&&span class=&n&&img&/span&&span class=&o&&,&/span& &span class=&s&&&png&&/span&&span class=&o&&,&/span& &span class=&k&&new&/span& &span class=&n&&File&/span&&span class=&o&&(&/span&&span class=&s&&&tmp.png&&/span&&span class=&o&&));&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&&p&生成的图像&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-af0d69925e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&30& class=&content_image& width=&300&&&/figure&&p&&br&&/p&&p&似乎……比专柜上的口红色号还难分诶……QAQ&/p&&p&(扯个皮,口红试色的时候,专柜的灯光比平时的灯光亮好多倍,所以会导致一些深的颜色看起来很浅,选口红的时候要注意哦,窝交了好些智商税才想明白这个道理 QAQ )&/p&&p&所以呢,如果把像素的亮度值加一或减一,肉眼根本分辨不出来~那么,窝们就可以利用这个藏一点儿小秘密辣!&/p&&p&对应于把像素加一减一这样的操作,在用二进制表示像素亮度值的情况下,也就是改变这个二进制的最低位,也就是最低有效位 (Least Significant Bit, LSB) 算法。&/p&&h2&0x03 开篇那张图&/h2&&p&开篇那张图,窝就是把一张神秘图像(此处手动滑稽)二值化了一下,藏到了蕾姆老婆的图像的 R 通道的最低位中惹。&/p&&p&所以,得到那张神秘图像的办法,就是读取蕾姆老婆的图像的 R 通道的最低位,根据最低位的值,0 或者 1 ,还原出原来的图像。&/p&&div class=&highlight&&&pre&&code class=&language-java&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&javax.imageio.ImageIO&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.awt.*&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.awt.image.BufferedImage&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.io.File&/span&&span class=&o&&;&/span&
&span class=&kn&&import&/span& &span class=&nn&&java.io.IOException&/span&&span class=&o&&;&/span&
&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&Main&/span& &span class=&o&&{&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&kt&&void&/span& &span class=&nf&&main&/span&&span class=&o&&(&/span&&span class=&n&&String&/span&&span class=&o&&...&/span& &span class=&n&&args&/span&&span class=&o&&)&/span& &span class=&kd&&throws&/span& &span class=&n&&IOException&/span& &span class=&o&&{&/span&
&span class=&n&&BufferedImage&/span& &span class=&n&&secretImg&/span& &span class=&o&&=&/span& &span class=&n&&ImageIO&/span&&span class=&o&&.&/span&&span class=&na&&read&/span&&span class=&o&&(&/span&&span class=&k&&new&/span& &span class=&n&&File&/span&&span class=&o&&(&/span&&span class=&s&&&Rem_secret.png&&/span&&span class=&o&&));&/span&
&span class=&kt&&int&/span& &span class=&n&&width&/span& &span class=&o&&=&/span& &span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&getWidth&/span&&span class=&o&&(),&/span& &span class=&n&&height&/span& &span class=&o&&=&/span& &span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&getHeight&/span&&span class=&o&&();&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&w&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&w&/span& &span class=&o&&&&/span& &span class=&n&&width&/span&&span class=&o&&;&/span& &span class=&n&&w&/span&&span class=&o&&++)&/span& &span class=&o&&{&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&h&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&h&/span& &span class=&o&&&&/span& &span class=&n&&height&/span&&span class=&o&&;&/span& &span class=&n&&h&/span&&span class=&o&&++)&/span& &span class=&o&&{&/span&
&span class=&n&&Color&/span& &span class=&n&&color&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&getRGB&/span&&span class=&o&&(&/span&&span class=&n&&w&/span&&span class=&o&&,&/span& &span class=&n&&h&/span&&span class=&o&&));&/span&
&span class=&kt&&int&/span& &span class=&n&&lsb&/span& &span class=&o&&=&/span& &span class=&n&&color&/span&&span class=&o&&.&/span&&span class=&na&&getRed&/span&&span class=&o&&()&/span& &span class=&o&&%&/span& &span class=&mi&&2&/span&&span class=&o&&;&/span& &span class=&c1&&// 个人建议把 % 2 写成 & 1&/span&
&span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&setRGB&/span&&span class=&o&&(&/span&&span class=&n&&w&/span&&span class=&o&&,&/span& &span class=&n&&h&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&n&&lsb&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span& &span class=&o&&?&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&)&/span& &span class=&o&&:&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&mi&&255&/span&&span class=&o&&,&/span& &span class=&mi&&255&/span&&span class=&o&&,&/span& &span class=&mi&&255&/span&&span class=&o&&)).&/span&&span class=&na&&getRGB&/span&&span class=&o&&());&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&span class=&n&&ImageIO&/span&&span class=&o&&.&/span&&span class=&na&&write&/span&&span class=&o&&(&/span&&span class=&n&&secretImg&/span&&span class=&o&&,&/span& &span class=&s&&&png&&/span&&span class=&o&&,&/span& &span class=&k&&new&/span& &span class=&n&&File&/span&&span class=&o&&(&/span&&span class=&s&&&secret.png&&/span&&span class=&o&&));&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&&p&原文的代码是这样子的,不过如果是我的话我会写成这个样子:&/p&&div class=&highlight&&&pre&&code class=&language-java&&&span&&/span&&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&Main&/span& &span class=&o&&{&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&kt&&void&/span& &span class=&nf&&main&/span&&span class=&o&&(&/span&&span class=&n&&String&/span&&span class=&o&&...&/span& &span class=&n&&args&/span&&span class=&o&&)&/span& &span class=&kd&&throws&/span& &span class=&n&&IOException&/span& &span class=&o&&{&/span&
&span class=&n&&BufferedImage&/span& &span class=&n&&secretImg&/span& &span class=&o&&=&/span& &span class=&n&&ImageIO&/span&&span class=&o&&.&/span&&span class=&na&&read&/span&&span class=&o&&(&/span&&span class=&k&&new&/span& &span class=&n&&File&/span&&span class=&o&&(&/span&&span class=&s&&&Rem_secret.png&&/span&&span class=&o&&));&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&w&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&w&/span& &span class=&o&&&&/span& &span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&getWidth&/span&&span class=&o&&();&/span& &span class=&n&&w&/span&&span class=&o&&++)&/span&
&span class=&k&&for&/span& &span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&h&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span& &span class=&n&&h&/span& &span class=&o&&&&/span& &span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&getHeight&/span&&span class=&o&&();&/span& &span class=&n&&h&/span&&span class=&o&&++)&/span& &span class=&o&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&lsb&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&getRGB&/span&&span class=&o&&(&/span&&span class=&n&&w&/span&&span class=&o&&,&/span& &span class=&n&&h&/span&&span class=&o&&)).&/span&&span class=&na&&getRed&/span&&span class=&o&&()&/span& &span class=&o&&%&/span& &span class=&mi&&2&/span&&span class=&o&&;&/span& &span class=&c1&&// 个人建议把 % 2 写成 & 1&/span&
&span class=&n&&secretImg&/span&&span class=&o&&.&/span&&span class=&na&&setRGB&/span&&span class=&o&&(&/span&&span class=&n&&w&/span&&span class=&o&&,&/span& &span class=&n&&h&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&n&&lsb&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span& &span class=&o&&?&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&)&/span& &span class=&o&&:&/span& &span class=&k&&new&/span& &span class=&n&&Color&/span&&span class=&o&&(&/span&&span class=&mi&&255&/span&&span class=&o&&,&/span& &span class=&mi&&255&/span&&span class=&o&&,&/span& &span class=&mi&&255&/span&&span class=&o&&)).&/span&&span class=&na&&getRGB&/span&&span class=&o&&());&/span&
&span class=&o&&}&/span&
&span class=&n&&ImageIO&/span&&span class=&o&&.&/span&&span class=&na&&write&/span&&span class=&o&&(&/span&&span class=&n&&secretImg&/span&&span class=&o&&,&/span& &span class=&s&&&png&&/span&&span class=&o&&,&/span& &span class=&k&&new&/span& &span class=&n&&File&/span&&span class=&o&&(&/span&&span class=&s&&&secret.png&&/span&&span class=&o&&));&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&&p&所以,快去试一下,看看窝到底藏了什么吧~&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//github.com/SKE48Cyto/Rem_steg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&本篇科(水)普(文)全部内容的下载地址&/a&&/li&&/ul&&h2&参考资料&/h2&&ul&&li&用于隐写的原图的分享者为 Midia,&a href=&http://link.zhihu.com/?target=https%3A//wall.alphacoders.com/big.php%3Fi%3D729168& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&原图地址&/a&&/li&&li&隐写术_维基百科&/li&&li&通道_维基百科&/li&&li&《数据隐藏技术揭秘》&/li&&li&《隐写分析原理与应用》&/li&&/ul&&h2&最后的最后&/h2&&p&好吧,其实窝就是想让泥萌扫下二维码&br&为了让泥萌扫下这个二维码,窝连蕾(lao)姆(po)都不放过,内心不安,于是只好自称无良小编来缓解一下内心的愧疚 QAQ 泥萌不要打窝 QAQ&/p&&p&另外,本人水平有限,如有错误,敬请指正,非常感谢 &ω&&/p&
欢迎大家支持发在我的博客的版本
:D这是 SKE 文章的 Java 翻译。 文章不是我写的,代码是我写的。下面是内容。0x00 先放图窝究竟在蕾(lao)姆(po)的皂片里面藏了什么? LSB 算法鲁棒性比较低,窝建议泥通过
&figure&&img src=&https://pic2.zhimg.com/v2-01dab6c2dc363ceec0ae471d550b981e_b.jpg& data-rawwidth=&640& data-rawheight=&444& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-01dab6c2dc363ceec0ae471d550b981e_r.jpg&&&/figure&&p&大家好,我是H1TerHub

我要回帖

更多关于 www.944nncom 的文章

 

随机推荐