Commit 621ab2b6 by devttys0

Updated API.md and INSTALL.md for v2.1.0

parent 21acfece
......@@ -9,29 +9,29 @@ The classes, methods and objects in the binwalk modules are documented via pydoc
Binwalk Scripting
=================
Each of binwalk's features (signature scans, entropy analysis, etc) are implemented as separate modules. These modules can be invoked via the binwalk.core.module.Modules class, which makes scripting trivial through its execute method.
Each of binwalk's features (signature scans, entropy analysis, etc) are implemented as separate modules. These modules can be invoked via `binwalk.execute`, which makes scripting trivial through its execute method.
In fact, the binwalk command line utility can be duplicated nearly entirely with just two lines of code:
```python
import binwalk
binwalk.Modules().execute()
binwalk.execute()
```
The Modules class constructor as well as the execute method accept both Python args and kwargs corresponding to the normal command line options accepted by the binwalk command line utility, providing a large amount of freedom in how you choose to specify binwalk options (if none are specified, sys.argv is used by default).
The `execute` function accepts both args and kwargs, which correspond to the normal command line options accepted by the binwalk command line utility, providing a large amount of freedom in how you choose to specify binwalk options (if none are specified, sys.argv is used by default).
For example, to execute a signature scan, you at the very least have to specify the --signature command line option, as well as a list of files to scan. This can be done in a number of ways:
```python
binwalk.Modules().execute('firmware1.bin', 'firmware2.bin', signature=True)
binwalk.execute('firmware1.bin', 'firmware2.bin', signature=True)
binwalk.Modules().execute('firmware1.bin', 'firmware2.bin', **{'signature' : True})
binwalk.execute('firmware1.bin', 'firmware2.bin', **{'signature' : True})
binwalk.Modules().execute(*['firmware1.bin', 'firmware2.bin'], signature=True)
binwalk.execute(*['firmware1.bin', 'firmware2.bin'], signature=True)
binwalk.Modules().execute(*['--signature', 'firmware1.bin', 'firmware2.bin',])
binwalk.execute(*['--signature', 'firmware1.bin', 'firmware2.bin',])
binwalk.Modules().execute('--signature', 'firmware1.bin', 'firmware2.bin')
binwalk.execute('--signature', 'firmware1.bin', 'firmware2.bin')
```
All args and kwargs keys/values correspond to binwalk's command line options. Either args or kwargs, or a combination of the two may be used, with the following caveats:
......@@ -42,7 +42,7 @@ All args and kwargs keys/values correspond to binwalk's command line options. Ei
Accessing Scan Results
======================
binwalk.Modules.execute returns a list of objects. Each object corresponds to a module that was run. For example, if you specified --signature and --entropy, then both the Signature and Entropy modules would be executed and you would be returned a list of two objects.
`binwalk.execute` returns a list of objects. Each object corresponds to a module that was run. For example, if you specified --signature and --entropy, then both the Signature and Entropy modules would be executed and you would be returned a list of two objects.
The two attributes of interest for each object are the 'results' and 'errors' objects. Each is a list of binwalk.core.module.Result and binwalk.core.module.Error objects respectively. Each Result or Error object may contain custom attributes set by each module, but are guarunteed to have at least the following attributes (though modules are not required to populate all attributes):
......@@ -66,7 +66,7 @@ binwalk.core.module.Error has the additional guarunteed attribute:
Thus, scan results and errors can be programatically accessed rather easily:
```python
for module in binwalk.Modules().execute('firmware1.bin', 'firmware2.bin', signature=True):
for module in binwalk.execute('firmware1.bin', 'firmware2.bin', signature=True):
print ("%s Results:" % module.name)
for result in module.results:
print ("\t%s 0x%.8X %s" % (result.file.name, result.offset, result.description))
......@@ -75,11 +75,11 @@ for module in binwalk.Modules().execute('firmware1.bin', 'firmware2.bin', signat
Module Exceptions
=================
The only expected exception that should be raised by binwalk.Modules is that of binwalk.ModuleException. This exception is thrown only if a required module encountered a fatal error (e.g., one of the specified target files could not be opened):
The only expected exception that should be raised is that of binwalk.ModuleException. This exception is thrown only if a required module encountered a fatal error (e.g., one of the specified target files could not be opened):
```python
try:
binwalk.Modules().execute()
binwalk.execute()
except binwalk.ModuleException as e:
print ("Critical failure:", e)
```
......@@ -92,6 +92,14 @@ The default python interpreter used during install is the system-wide `python` i
$ ./configure --with-python=python3
Installing the IDA Plugin
=========================
If IDA is installed on your system, you may optionally install the IDA plugin by specifying the location of your IDA install directory at build time:
$ ./configure --with-ida=/home/user/ida-6.6
$ make ida
Uninstallation
==============
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment