用JPEXS反编译flash.swf得到441张黑白图片和1个mp3文件

软件下载地址:https://github.com/jindrapetrik/jpexs-decompiler/releases

右键导出图片

图片很规律,张数刚好是441=21*21,按照图片顺序,黑为1白为0,拼凑出0-1序列

图像处理脚本——识别1和0:

  1. from PIL import Image
  2. def aaa(s):
  3. image = Image.open("frames/"+str(i)+".png")
  4. a,b,c,d = image.getpixel((50,50))
  5. return a
  6. s=''
  7. for i in range(1,442):
  8. if aaa(i)==0:
  9. s+=''
  10. else:
  11. s+=''
  12. print (s)

输出:

111111100110001111111100000100111001000001101110101011001011101101110100100101011101101110100101101011101100000100110001000001111111101010101111111000000001010100000000111011111011111000100110110011011101111011101101111001101111011010010001100000000011111010100000100011000000000001011100110011111111101011100110101100000101101000100010101110101011011000001101110100101101110000101110101101110110001100000101011100010010111111101101100001011

尝试一下拼一起

图片处理脚本——拼接图片:

  1. from PIL import Image
  2.  
  3. length = 21
  4. img = Image.new('RGB', (length*5, length*5))
  5. #黑点为1白点为0
  6. data = ""
  7.  
  8. for x in range(length):
  9. for y in range(length):
  10. if data[x*length+y] == '':
  11. for xx in range(x*5, x*5+5):
  12. for yy in range(y*5, y*5+5):
  13. img.putpixel([xx, yy], (0,0,0))
  14. else:
  15. for xx in range(x*5, x*5+5):
  16. for yy in range(y*5, y*5+5):
  17. img.putpixel([xx, yy], (255,255,255))
  18. img.save('out.png')

输出:

得到前半个flag

*ctf{half_flag_&

再导出mp3文件,这个是常见套路频谱隐写,得到后半段flag

&_the_rest}

参考:https://zhuanlan.zhihu.com/p/64252028

[*CTF2019]babyflash的更多相关文章

  1. 嘶吼CTF2019总结(Web部分题目复现以及部分杂项)

    easy calc 这次的比赛自己一题都没有做出来,赛后看题解的时候很难受,其实有很多东西自己其实是可以做出来的,但是思路被限制了,可能这就是菜吧. 首先web题目就是一个easy calc,emmm ...

  2. 关于XXE

    NJUPT CTF2019: 做题的时候,抓包看了一下,响应XML格式消息,并没有严格过滤,这道题读文件, <!DOCTYPE foo [ <!ENTITY xxe SYSTEM &quo ...

随机推荐

  1. Plastic Bottle Manufacturer Tips - Attention To Plastic Bottle Processing Technology

    In fact, the processing technology of plastic bottles is actually quite strict. In fact, regular man ...

  2. SSH 维持权限(好用)

    很多时候我们拿下机器后需要维持权限,在计划任务上加入定时反弹shell这很容易被 运维人员发现,有些场景没必要用到rootkit级别的后门,我们可以尝试使用ssh后门 1.目的 长期维持机器root权 ...

  3. jQuery学习(三)

    jQuery文档操作方法 1.内部追加内容 选择器追加到内容 append(content)在当前jQuery对象内部所包含的DOM对象的内部的最后追加content对应的内容,其中content可以 ...

  4. 一大波新款iPhone跟安卓厂商抢夺5G市场

    据外媒最新报道称,苹果已经基本完成了今年iPhone的推新阵容,其发布的多款新机中,将涵盖399美元-1149美元的售价区间,特别是5G手机,起步价可能会很亲民,其目的在于进一步占据市场. 今年苹果将 ...

  5. MySQL忘记密码如何重置

    一]进入服务器下,我用的是centos版本 vim /etc/my.cnf 1 vim[二]找到mysqld的部分然后在下面添加上一句代码,意思是跳过密码直接进入,然后保存退出 skip-grant- ...

  6. 简单bat脚本

    hwf.bat: set GAP_HOME=%~dp0\.. ::copy "%JAVA_HOME%\bin\javaw.exe" "%JAVA_HOME%\bin\HW ...

  7. PLSQL报错: ORA-12170:TNS connect timeout occurred

    本人的问题已解决,先在安装oracle的服务器上黑窗口输入tnsping,提示说no listener,这是监听服务没有打开. 打开服务后还是不行,最后原因是服务器的网络有防火墙的问题,关掉防火墙连接 ...

  8. 什么是 SDK?

    通俗而言: 1.其实很简单,SDK 就是 Software Development Kit 的缩写,中问意思是: 软件开发工具包. 2.这是一个覆盖面相当广泛的名词,可以这么说: 辅助开发某一类软件的 ...

  9. PAT T1004 To Buy or Not to Buy - Hard Version

    暴力搜索加剪枝~ #include<bits/stdc++.h> using namespace std; ; string t; string s[maxn]; int pos[maxn ...

  10. JavaScript高级特征之面向对象笔记二

    Prototype 1.  当声明一个函数的时候,浏览器会自动为该函数添加一个属性prototype, 2.  该属性的默认值为{} 3.  可以动态的给prototype增加key和value值 4 ...