有哪些好的开源程序可以用于模糊测试常见图像文件类型?
我在找一个免费的、开源的、便携的模糊测试工具,专门用来处理常见的图片文件格式,最好是用Java、Python或Jython写的。
理想情况下,这个工具应该能接受一些声明式的约束来指定可以模糊测试的字段。也就是说,我希望能用一种非过程式的语法来定义这些约束,这样就不用每次都写复杂的代码了。
我只需要指定有效值的范围或者表达式。最好能支持某种生成编程的功能,这样可以把模糊测试工具导出到不同的编程语言,以便在需要更多自定义的时候使用。
如果它能有一个直接操作的图形界面,让我可以控制参数的值和范围,那就更好了。
这个工具需要支持的文件格式包括:
- GIF
- JPEG
- PNG
总的来说,我希望这个工具能像一个工具包,里面有现成的实用程序、框架或库,能够直接生成模糊测试的文件,也能从它生成的程序中生成文件。它需要简单,这样我才能快速创建测试图片。最好能有批量处理的功能,这样可以一次性生成一系列图片,逐个创建实在太麻烦了。
我不想要一个黑客工具,只想要一个质量保证工具。基本上,我只是想解决一个问题,那就是常见的图片渲染和解析库的稳定性和可靠性提升太慢了。
4 个回答
好吧,我觉得没有现成的工具可以直接使用,但人们经常用PIL(Python图像库)来生成验证码,所以它可能也能对图片进行模糊处理。(至少,我假设我对“模糊”的理解是正确的,你的意思是给图片添加一些随机噪音,达到某种目的。)
当然,你提到的现成工具和生成模糊图像的程序让我有点困惑。我想知道,为什么这些东西都是必要的呢?你想要一个可以生成模糊图像程序的程序有什么用呢?其实大多数实际问题只需要写一个简单的脚本,加载一张图片,然后用PIL来进行模糊处理就可以解决了。
虽然这不是你问的具体内容,但如果你想快速进行一些文件格式的模糊测试,可以看看来自芬兰奥卢大学安全编程小组的Radamsa。
Radamsa可以处理一堆文件,比如jpeg格式的图片,然后把这些文件变成模糊的图像。它还能从多个文件中学习一些结构,所以它不是单纯地随机改变文件里的数据。
更酷的是,Radamsa可以监听TCP套接字。这样你就可以用一个脚本连接到Radamsa,每次连接都能接收到一个模糊处理过的文件。
Peach 有一个文件模糊测试模块。这里有一个很棒的快速入门教程,教你如何使用这个文件模糊测试模块来攻击 mplayer,方法是用一个声音文件:http://peachfuzzer.com/TutorialFileFuzzing
我建议你重点关注文件的头部信息。