What is it?
Struct-A-File User Guide
File-A-Nyzer User Guide
Current Status
The next step
Download package
SourceForge.net Logo

File-Spector project and can be found at the SourceForgeô development web site under the links:

Project Home Page: http://file-spector.sourceforge.net

Project Development Page: https://sourceforge.net/projects/file-spector/

Current Developers:

- Bruno Santos (bmsantos@users.sourceforge.net) - Initial project idea

Please note that you are encouraged to join and contribute in whatever you can and also to submit any ideas or comments to this project.



File-Spector is a small, fast and easy to use binary file analyzer and Inspector. It allows the user/developer to format a binary file and then use it to read any binary file that matched the specified format.


What is it all about?

While working at GMV I realised that the project that I was currently involved in required a binary file reader to analyse and inspect the several thousand fields and structure hierarchies involved in each binary file. The most frustrating thing was that, for every time we had a change of structure, we had to completely change the binary file reader (fortunately I wasnít involved in this, since it seemed to be a head hake). Still, I came up with the idea of developing something that would be generic and that could be used to read any binary file that would cross our way. Searching on the web, and until now, Iím still not ware of any package or application that can do so and, thatís precisely the idea of this tool. The most similar tools are a simple hexadecimal editor and I, if Iím not mistaken, it seems that ILOG also has a tool that allows a user to strip a simple binary file.

File-Spector, by itself is nothing but a name for a group of two other tools that complement themselves. It is a small, fast and easy to use binary file analyser and inspector. The main advantage is the modularity provided and it's extreme scalability. Any user/programmer willing to extend it can do so if, and for whatever reason the currently available application nodes do not provide the necessary formatting to its needs. In this case, and on any other case, the user is most welcome to develop it himself or request for someone to develop it for him.

Therefore, File-Spector isnít another plain vanilla hexadecimal editor that we all like to play with. The File-Spector utility is composed by two main applications. They are:

1) Struct-A-File : With this tool the user is able to easily specify the binary file format with it's necessary ramifications and dependencies.

2) File-A-Nyzer : Along with the format file exported from the Struct-A-File application, this application is able to read the intended binary file either in little (currently only for PC) or bigendian formats. The user can then browse through the data structures or simply plot some data.


Programming Languages and modules

- Python (http://www.python.org) is the main development language to be used, although in the future any other language such as C or C++ might be applied.

- wxPython (http://www.wxpython.org) for GUI development.

- wxPyPlot (http://www.cyberus.ca/~g_will/wxPython/wxpyplot.html) will be also used for simple data plotting. Developed mainly by Gordon Williams and with "Use as you wish" license.


Target Platforms

At least on both Windows and Linux. Since the development is mainly in Python and wxPython, then it should be easily ported to any other platform supporting these two technologies.


Major expected obstacles

The idea is to, and with similarity to any other XML or HTML document, to strip down a binary file in a tree based format. Each tree node will be configurable on its way, pointing to other sub-nodes or node-dependencies. The resulting tree is what I call the format file exported from the "Struct-A-File" application. The "File-A-Nyzer" application will then parse any binary file according with the rules defined in the format file.

It is impossible for one to guess how one organises its binary format. Because of this the application should mainly provide a simple common API based on simple classes that will allow any user/programmer to extend accordingly with its needs by developing the necessary node/s to be used on the format tree. Therefore, modularity and its obvious influence in scalability are the main obstacles for this project. Thatís why Python is a major piece of this project since itís by itself based on modularity.

The idea is then to use a "Visitor" style pattern to visit "DataNode" object instances that define the format and indicate how the field is supposed to be read and visualised.

The applications provide functionality common to every node, and, the user/programmer will be able to interface with them by importing the necessary modules.



© Copyright 2004 File-Spector Team   
Distributed under the GNU General Public Licence