Frameworks are incredibly useful for large-scale projects in Python. We previously called the UserAssist script a framework in Chapter 6, Extracting Artifacts from Binary Files; however, it does not really fit that model. The frameworks we build will have an abstract top layer, which will act as the controller of the program. This controller will be responsible for executing plugins
and writers
.
A plugin is code contained in a separate script that adds a specific feature to the framework. Once developed, a plugin should be easily integrated into an existing framework in a few lines of code. A plugin should also execute standalone functionality and not require modification of the controller to operate. For example, we will write one plugin to specifically process EXIF metadata and another to process Office Metadata. An advantage of the framework model is that it allows us to group many plugins together in an organized manner and execute them all for a shared objective...