{"id":13458908,"url":"https://github.com/quarkslab/pyrrha","last_synced_at":"2026-02-03T10:38:38.756Z","repository":{"id":178295030,"uuid":"658736352","full_name":"quarkslab/pyrrha","owner":"quarkslab","description":"A tool for firmware cartography","archived":false,"fork":false,"pushed_at":"2025-12-02T14:38:39.000Z","size":14574,"stargazers_count":161,"open_issues_count":1,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-12-05T12:12:39.394Z","etag":null,"topics":["firmware-analysis","firmware-tools","security"],"latest_commit_sha":null,"homepage":"https://quarkslab.github.io/pyrrha/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quarkslab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing/dev_mapper.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-26T11:44:03.000Z","updated_at":"2025-10-30T19:35:36.000Z","dependencies_parsed_at":"2025-03-24T16:44:19.332Z","dependency_job_id":null,"html_url":"https://github.com/quarkslab/pyrrha","commit_stats":null,"previous_names":["quarkslab/pyrrha"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/quarkslab/pyrrha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fpyrrha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fpyrrha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fpyrrha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fpyrrha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quarkslab","download_url":"https://codeload.github.com/quarkslab/pyrrha/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fpyrrha/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29041866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firmware-analysis","firmware-tools","security"],"created_at":"2024-07-31T09:00:59.588Z","updated_at":"2026-02-03T10:38:38.751Z","avatar_url":"https://github.com/quarkslab.png","language":"Python","funding_links":[],"categories":["Tool"],"sub_categories":["Firmware Analysis"],"readme":"# Pyrrha: A mapper collection for firmware analysis\n \u003c!-- # --8\u003c-- [start:intro]--\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/quarkslab/pyrrha/pypi\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/pyrrha-mapper.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/quarkslab/pyrrha/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/quarkslab/pyrrha/release.yml\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/pyrrha-mapper/\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/pyversions/pyrrha-mapper\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/pypi/dm/pyrrha-mapper\"/\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/quarkslab/pyrrha\"/\u003e\n\u003c/p\u003e\n\n\nPyrrha is a filesystem cartography and correlation software focusing on visualization. It currently focuses on the relationship between executable files but aims at enabling anyone to map and visualize any relationship types. It uses the open-source code source\nexplorer [NumbatUI](https://github.com/quarkslab/NumbatUI) to provide users with an easy way to navigate through and search for \npath to function.\n \u003c!-- # --8\u003c-- [end:intro]--\u003e\n\n![](docs/img/imports.png)\n\u003cp align=\"center\"\u003e\n\u003cb\u003eAn example of the symbols and libraries imported by \u003ccode\u003elibgcc_s.so.1\u003c/code\u003e and of the symbols which reference this library.\u003c/b\u003e\n\u003c/p\u003e\n\n![](docs/img/symlinks.png)\n\u003cp align=\"center\"\u003e\n\u003cb\u003eAn example of the symlinks which point on \u003ccode\u003ebusybox\u003c/code\u003e.\u003c/b\u003e\n\u003c/p\u003e\n\n## Installation\n\nThe installation is done in three parts:\n\n1. Install mapper external dependencies: IDA dissassembler (with the decompilation option for the `exe-decomp` mapper) and [`Quokka` IDA plugin](https://github.com/quarkslab/quokka/releases).\n1. Install `Pyrrha` itself.\n1. Install [`NumbatUI`](https://github.com/quarkslab/NumbatUI) (or [`Sourcetrail`](https://github.com/CoatiSoftware/Sourcetrail)) to be able to visualize Pyrrha's results. \n\n\u003e [!NOTE]\n\u003e A quick start installation is available on [Pyrrha documentation](https://quarkslab.github.io/pyrrha/#installation).\n\n \u003c!-- # --8\u003c-- [start:usage]--\u003e\n## Usage\n\nThe usage workflow is composed of two steps which allow you to separate DB creation and result visualization.\n\n1. Run Pyrrha to obtain NumbatUI compatible files (`*.srctrlprj` for the project file and `*.srctrldb` for the DB file). With the python package, you can just launch the command `pyrrha`.\n2. Visualize your results with Sourcetrail/NumbatUI. \n\n \u003c!-- # --8\u003c-- [end:usage] --\u003e\n\u003e [!NOTE]\n\u003e The detailed documentation of each mapper is available in the [documentation](https://quarkslab.github.io/pyrrha/mappers/mappers/).\n\n \u003c!-- # --8\u003c-- [start:publications]--\u003e\n## Publications\n\nPyrrha presentations, including live demos:\n\n- **Pyrrha \u0026 Friends: Diving into Firmware Cartography**, Eloïse Brocas \u0026 Robin David, *SSTIC*, Rennes, France, 2025. [[slides]](https://www.sstic.org/media/SSTIC2025/SSTIC-actes/pyrrha_diving_into_firmware_cartography/SSTIC2025-Slides-pyrrha_diving_into_firmware_cartography-brocas_david.pdf) [[video]](https://static.sstic.org/videos2025/1080p/pyrrha_diving_into_firmware_cartography.mp4) \n\n- **Pyrrha: navigate easily into your system binaries**, Eloïse Brocas, *Hack.lu*, Luxembourg, 2023. [[slides]](https://github.com/quarkslab/conf-presentations/blob/master/Confs/HackLu23/pyrrha.pdf) [[video]](https://www.youtube.com/watch?v=-dMl-SvQl4k) \n\n- **Map your Firmware!**, Eloïse Brocas, *Pass The SALT*, Lille, France, 2023. [[slides]](https://github.com/quarkslab/conf-presentations/blob/master/Confs/PTS23/PTS2023-Talk-14-Pyrrha-map-your-firmware.pdf) [[video]](https://passthesalt.ubicast.tv/videos/2023-map-your-firmware/) \n\nTheory behind implementations\n\n- **Streamlining Firmware Analysis with Inter-Image Call Graphs and Decompilation**, Robin David, *RE//verse.io*, USA, 2025. [[slides]](https://github.com/quarkslab/conf-presentations/blob/master/Confs/REverse-25/REverse_firmware_analysis_2025.pdf) [[video]](https://www.youtube.com/watch?v=LsDnrfZt_Xs)\n\n \u003c!-- # --8\u003c-- [end:publications] --\u003e\n\n \u003c!-- # --8\u003c-- [start:authors] --\u003e\n## Authors\n- Eloïse Brocas (@ebrocas), Quarkslab\n- Robin David (@RobinDavid), Quarkslab\n\n\n### Past Contributors\n- Pascal Wu (@pwu42), during his internship at Quarkslab\n\u003c!-- # --8\u003c-- [end:authors] --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarkslab%2Fpyrrha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquarkslab%2Fpyrrha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarkslab%2Fpyrrha/lists"}