We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this questionI am looking for a free, open source, portable fuzzing tool for popular image file types that is written in either Java, Python, or Jython.
Ideally, it would accept specifications for the fuzzable fields using some kind of declarative constraints. Non-procedural grammar for speci开发者_运维技巧fying constraints are greatly preferred. Otherwise, might as well write them all in Python or whatever.
Just specifying ranges of valid values or expressions for them. Ideally, it would support some kind of generative programming to export the fuzzer into various programming languages to suit cases where more customization was required.
If it supported a direct-manipulation GUI for controlling parameter values and ranges, that would be nice too.
The file formats that should be supported are:
- GIF
- JPEG
- PNG
So basically, it should be sort of a toolkit consisting of ready-to-run utility, a framework or library, and be capable of generating the fuzzed files directly as well as from programs it generates. It needs to be simple so that test images can be created quickly. It should have a batch capability for creating a series of images. Creating just one at a time would be too painful.
I do not want a hacking tool, just a QA tool. Basically, I just want to address concerns that it is taking too long to get commonplace image rendering/parsing libraries stable and trustworthy.
Peach has a file fuzzing module. Here is an excellent quick start tutorial for using the file fuzzing module to attack mplayer using a sound file: http://peachfuzzer.com/TutorialFileFuzzing
I recommend focusing on the file's header.
Not exactly what you are asking for, but for getting quick up and running some fuzz tests for file formats, you should check out Radamsa from OUSPG, Oulu University Secure Programming Group.
Radamsa can take bunch of files, for example jpeg files, and turn those into fuzzed images. It can also learn some structure from multiple files, so it's not just random bit flipping of bits and bytes.
It's also really cool that Radamsa can listen on TCP socket. That way you can use a script to connect to Radamsa to receive one fuzzed file per connection.
Okay, I don't think it has a ready-to-run utility, but people use PIL (Python Imaging Library) to generate captchas all the time, so it can probably fuzz images. (At least, assuming that my definition of "fuzz" is correct and that what you mean is adding random noise to an image for some purpose.)
Of course, all your talking about ready-to-run utilities and generating programs to fuzz images is confusing me. What I'm wondering is, why is all that necessary? What use-case do you have for wanting a program that can make programs to fuzz images when most practical concerns could be solved by simply writing a script that loads an image and does the fuzzing using PIL?
You might want to consider 'bringing in the Gimp!' [ to paraphrase Pulp Fiction there...]
http://www.gimp.org/docs/python/index.html
精彩评论