Top 5 Python firmware-analysis Projects
-
I was part of a project that did some analysis of OpenWRT firmware at scale. It was a lot of fun. The firmware is ( obviously ) publicly available. If you're interested in finding some cool results, you should try out FACT:
https://github.com/fkie-cad/FACT_core
It's a super neat tool that does lots of interesting things.
-
vmlinux-to-elf
A tool to recover a fully analyzable .ELF from a raw kernel, through extracting the kernel symbol table (kallsyms)
-
Sonar
Write Clean Python Code. Always.. Sonar helps you commit clean code every time. With over 225 unique rules to find Python bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.
-
-
allyourbase
Finds the base address of a firmware by comparing string addresses with target pointer addresses (by 8051Enthusiast)
Project mention: small script for quickly finding the base address of a firmware image by matching strings with pointer targets | /r/ReverseEngineering | 2023-04-27 -
Project mention: MIPS Firmware Reverse Engineering - anyone having any success using Ghidra for this? | /r/ghidra | 2023-01-06
Your best bet here is to get the base address nailed down (assuming it’s a flat/monolithic image). There are a handful of utilities floating around (binbloom, basefind2) that use various pointer heuristics to try to guess the base address. There’s also a nice trick detailed in PoC||GTFO that you can use pretty reliably.
-
Mergify
Tired of breaking your main and manually rebasing outdated pull requests?. Managing outdated pull requests is time-consuming. Mergify's Merge Queue automates your pull request management & merging. It's fully integrated to GitHub & coordinated with any CI. Start focusing on code. Try Mergify for free.
Python firmware-analysis related posts
Index
What are some of the best open-source firmware-analysis projects in Python? This list will help you:
Project | Stars | |
---|---|---|
1 | FACT_core | 1,084 |
2 | vmlinux-to-elf | 1,000 |
3 | embark | 217 |
4 | allyourbase | 29 |
5 | basefind2 | 28 |