LOLI
chr() 在 python2 python3 中的区别
python2中:
chr(…)
chr(i) -> character Return a string of one character with ordinal i; 0 <= i < 256.
python3中:
chr(i, /)
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
第一个是i的范围变了,还有返回的类型从string–>Unicode string(想知道区别自行百度- -),试了一下i从161开始,返回的就不同了
(左python3 右python2)
讲完这个看看巅峰极客–Loli
看了大佬的wp,菜的不想说话,用python3.6打了一遍大佬的代码各种报错,猜想大佬是2.7,网上查了资料解决报错后,得到一个png,winhex看到最后black and white,iend标识,本以为美滋滋应该藏着一个png,放到kali中foremost什么都没,最后用2.7重新大佬的脚本才行,想知道为什么,这才有了上面chr()在python2,3中的区别,所以只能用2.7,有大佬知道怎么用3.6实现的可以call我!
抠出来一个新的png
发现有11列,仔细观察!被分成100行(偶数行都是一样的),猜测奇数行藏着数据
利用matplotlib的image模块,对奇数行的每一块提取数据(每行被分成11块,因为黑色的rbg(0, 0, 0),白色是(1, 1, 1),所以一小块就是一个数据,等等具体说明)
(关键代码)
1 | if y % 2 == 0: |
png[y][x][0] 指的是图片第y行第x个像素的r(0代表r,1代表g,2代表b),(第三个参数0,1,2都可以,因为要么是[0,0,0],要么是[1,1,1],希望你们可以看懂,还不清楚可以自己查下资料)
最后记得提示,将每个小数据块都转10进制后与0xff异或写入创建的文件里
膜大佬,大佬的wp
CTF 菜是原罪