一张图片的背后--隐藏

 一张图片你的背后到底隐藏着什么,你所看到的表象是真的你想得到的东西吗?今天不是来探讨哲学的,这是一个题,一个饶有趣味的题。首先来说说,今天要说的知识的基础,涉及到了.png的文件格式,Tweakpng工具,firework工具,Qr research的工具的使用。

简述png文件格式

 对于png文件格式来说,文件头部是由固定的字节来描述的,Hex(十六进制):89 50 4E 47 0D 0A 1A 0A八个字节组成的。
其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将png当做文本文件来处理。文件剩余的部分是由三个以上png的数据块按照特定的顺序组成的。

png数据块

 PNG数据块定义了两种类型的数据块,一种称为关键数据块,也就是标准数据块,这样的据块有四个,而且每个png文件必须包含这四个文件。另一个数据块则是辅助数据块,是可选数据块,下面截个图说一下png的数据块类别。

如果想要更多,参考

有关图片的工具

 先说Tweakpng, 这是一个可以编辑,修改图片的工具,可以看到png内部文件的信息。
至于fireworks  Fireworks是Macromedia公司发布的一款专为网络图形设计的图形编辑软件,它大大简化了网络图形设计的工作难度,可以轻易地完成大图切割、动态按钮、动态翻转图等,因此,对于辅助网页编辑来说,Fireworks将是最大的功臣。 借助于 Macromedia Fireworks8,您可以在直观、可定制的环境中创建和优化用于网页的图像并进行精确控制。
QR research 是可用于二维码解码的工具。且同一幅图可以解码4个二维码。

解题

 对于我们着手的图片,我们先用Tweakpng分析一波。

我们可以看到在ITxt写明了creator tool是firework
接下来就用firework看看这张图片隐藏着什么:

点击右上角的层一的图片发现是个二维码:

将这个二维码导出,用QR research扫描,

下面得到的一串二进制数,保存到记事本,后import hex 到winhex或者010.如下

03F30D0A这四个字节是pyc文件的magicnumber(即文件头,表明某种文件的格式,例如Windows操作系统可执行程序的开头标记一般为MZ)
另存为.pyc文件。那么这个pyc文件怎么反编译呢?自然有工具啦
这是一个在线反编译pyc文件的平台。导入你的pyc文件。就会得到flag

所谓的pyc文件。。。。。。如下

什么是pyc文件

 pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。

为什么需要pyc文件

 这个需求太明显了,因为py文件是可以直接看到源码的,如果你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。当然,pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同的,根据python源码中提供的opcode,可以根据pyc文件反编译出py文件源码.
那么这个pyc文件怎么反编译呢?自然有工具啦
这是一个在线反编译pyc文件的平台。导入你的pyc文件。就会得到flag

考察

  • 各种分析图片的工具的了解,并明白png文件的内容格式。
  • 对于十六进制工具winhex或010的了解。
  • 对于pyc文件,要明白,他的文件格式。这样才知道为什么保存为pyc文件1

  1. 不同版本Python的pyc_mageic是不同的

猜你喜欢

转载自blog.csdn.net/awm_kar98/article/details/81481924