feat(plugins): add support for ofrak, angr, binja, binwalk plugins - #660
Open
bw1lson wants to merge 2 commits into
Open
feat(plugins): add support for ofrak, angr, binja, binwalk plugins#660bw1lson wants to merge 2 commits into
bw1lson wants to merge 2 commits into
Conversation
bw1lson
force-pushed
the
full-plugins
branch
from
September 4, 2026 17:38
8ecda3b to
97fd3e9
Compare
🧪 SBOM Results (8/16)
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds four independent, complementary Surfactant plugins. Each does one focused job and deliberately avoids duplicating the others' output, keeping SBOM generation metadata non-redundant. All are optional: if a plugin's runtime dependency (OFRAK, binwalk, Binary Ninja, angr) is missing, it logs a warning once and skips generation is never blocked. More info found in each individual README.
If merged this pull request will add in support for each of the 4 above plugins.
Proposed changes
Uses OFRAK (third-party, actively maintained) as the main extractor. Identifies containers by magic bytes at offset 0 and unpacks them properly, then re-queues the contents through Surfactant's pipeline.
Binwalk/Carver shells out to binwalk to locate embedded regions, carves each region that starts at a non-zero offset into its own file (so its magic now sits at offset 0), and re-queues it for OFRAK/native identification.
Binja focuses on high-fidelity function recovery and per-function CFGs. Loads binaries in cheap controlFlow analysis mode. (NOTE: Requires a license)
Angr extracts loader/arch/symbol details and establish Uses relationships between binaries by matching imports to exports. Differs from native angr by filling SBOM with generated info instead of outputting to external file