A command line utility for interacting with the Centrifuge Firmware Analysis Platform's REST API.
Project description
Centrifuge is an automated firmware analysis platform. It allows users to upload their firmware images to be analyzed for various security issues. This utility gives users the ability to interact and automate tasks via the Centrifuge RESTful API.
Features
Upload firmware
Delete firmware reports
Query firmware analysis results
Search for firmware uploads
Quick Start
Check your Python version (must be 3.6 or later):
$ python --version
To install the Centrifuge CLI, simply:
$ pip install centrifuge-cli
Configure your environment:
$ export CENTRIFUGE_APIKEY=xxxx
$ export CENTRIFUGE_URL=https://centrifuge.refirmlabs.com # change this if you're single tenant or on-premise
To query the list of available reports:
$ centrifuge reports list
Under the hood the Centrifuge CLI is using python Pandas data frames to report the results to the user. Since the API is json, which has heirarchical structure to it, we have chosen to flatten all the results into a column/row format for viewing inside of a terminal or for importing into spreadsheets, etc. However the cli can also output CSV, and the original json results. For example:
CSV:
$ centrifuge --outfmt=csv reports list
JSON:
$ centrifuge --outfmt=json reports list
When generating the human-readable Pandas output or when genering CSV you have the option of choosing which columns you wish to export. For example, to display only the original filename and model number of the firmware that was uploaded:
$ centrifuge -foriginalFilename -fdevice reports list
Uploading Firmware
Uploading firmware to centrifuge is quite simple. All you need to do is supply make/model/version and the file you want to upload:
$ centrifuge upload --make=Linksys --model=E1200 --version=1.0.04 /path/to/FW_E1200_v1.0.04.001_US_20120307.bin
Searching Through Firmware Uploads
You can search through the uploaded firmware for keywords in username, filename, make, model, etc:
$ centrifuge reports search "Linksys"
Querying Report Results
All the following commands require access to what we refer to as a “UFID” or Upload File ID. This ID can be seen through the web interface, its also the last part of the URL when viewing a report, it is also the id field when running the centrifuge reports list command above. It should also be noted that all of these commands also support the --outfmt argument so you can export to CSV and to JSON. However be aware that these arguments are positional in nature, you must supply the --outfmt argument between centrifuge and report on the command line or it will not be accepted.
You can see the available commands by viewing the help output:
$ centrifuge report --help
Usage: centrifuge report [OPTIONS] COMMAND [ARGS]...
Options:
--ufid ID Centrifuge report ID [required]
--help Show this message and exit.
Commands:
code-emulated
code-static
code-summary
crypto
delete
guardian
info
passhash
sbom
Get basic information about the report (User, Make, Model, Version, filename, etc):
$ centrifuge report --ufid=<REPORT_ID> info
Get Guardian Results:
$ centrifuge report --ufid=<REPORT_ID> guardian
Get Password Hashes:
$ centrifuge report --ufid=<REPORT_ID> passhash
Get Crypto Keys:
$ centrifuge report --ufid=<REPORT_ID> crypto
Get SBOM Results:
$ centrifuge report --ufid=<REPORT_ID> sbom
The code analysis section is a little bit more complicated, since the data is more structured. To understand how to access this data you need to understand that when we process a firmware we must extract it first, each time we extract a filesystem or file container those groups of files are given an extraction ID or EXID. To get code analysis results for an individual file you must know the EXID and the file’s PATH within that EXID. Luckily there is a code-summary command which will give you the data you need to find into the code-static and code-emulated commands.
Get a Summary of the Code Analysis:
$ centrifuge report --ufid=<REPORT_ID> code-summary
When looking at the results above from the code-summary command you need to record the exid and path (NOT fullPath), to feed into the next two commands.
Get static code analysis results:
$ centrifuge report --ufid=<REPORT_ID> code-static --exid=<EXID> --path=<PATH>
Get emulated code analysis results:
$ centrifuge report --ufid=<REPORT_ID> code-emulated --exid=<EXID> --path=<PATH>
Deleting Firmware Uploads
Deleting a previously uploaded firmware is an unrecoverable action. Unlike the web interface the command line interface will not prompt you if you are sure. So use this command carefully.
To delete a firmware:
$ centrifuge report --ufid=<REPORT_ID> delete
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file centrifuge-cli-0.3.1.tar.gz
.
File metadata
- Download URL: centrifuge-cli-0.3.1.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.6.7 Linux/4.15.0-1028-gcp
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | db24876500445a34ea7fabfe0895af817ae301a49de8d93b982809b3e67f6919 |
|
MD5 | 304a5b129ea1d7ce9f1ad414a7c78ac1 |
|
BLAKE2b-256 | 1cddd7e98f5df1556d0bb34d58edded3d038f9e146355eb05ba56eb747fdf6fc |
File details
Details for the file centrifuge_cli-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: centrifuge_cli-0.3.1-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.6.7 Linux/4.15.0-1028-gcp
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb2e82d2374b53974962a417a02057babb6c4ac6abeeceb8dd48e4f59444613f |
|
MD5 | 44d878f46c62e903eb9b1c07c089625f |
|
BLAKE2b-256 | 923662f1c598aac14ae6775e65dc6242af40008e7272bdee4bded5b06a1914c7 |