What is the feature you'd like to have?
One of the most tedious things to do is extract the runtimes out of firmware. If it is not a simple binwalk -E ./firmware.bin, and instead is multiple layers of compression and filesystems, it is really annoying to have to deal with it. Example: the Google Pixel 11 Pro modem.img has 11 layers of transforms/extractions. I would like to either add a plugin to do the extraction, or expand on the container browser system to support this.
Architecture is kind of the issue here: how do we support 50+ formats without creating an insane amount of technical debt? Of course dependencies are a good option until licensing gets involved. Things like ZIP, TAR, should be easy enough, but proprietary Android filesystems? And how aggressive should we be with recursive extraction/decompression? How do we handle false positives?
I am currently working on a plugin to do this but I'm not sure the costs vs benefits of using a plugin vs integration into core, besides licensing. I am basically just adding platforms and support until something breaks / gives, and if it doesn't then I'll put it out and we could integrate it as a core plugin.
What is the feature you'd like to have?
One of the most tedious things to do is extract the runtimes out of firmware. If it is not a simple binwalk -E ./firmware.bin, and instead is multiple layers of compression and filesystems, it is really annoying to have to deal with it. Example: the Google Pixel 11 Pro modem.img has 11 layers of transforms/extractions. I would like to either add a plugin to do the extraction, or expand on the container browser system to support this.
Architecture is kind of the issue here: how do we support 50+ formats without creating an insane amount of technical debt? Of course dependencies are a good option until licensing gets involved. Things like ZIP, TAR, should be easy enough, but proprietary Android filesystems? And how aggressive should we be with recursive extraction/decompression? How do we handle false positives?
I am currently working on a plugin to do this but I'm not sure the costs vs benefits of using a plugin vs integration into core, besides licensing. I am basically just adding platforms and support until something breaks / gives, and if it doesn't then I'll put it out and we could integrate it as a core plugin.