{"id":13792498,"url":"https://github.com/avatartwo/avatar2","last_synced_at":"2025-05-12T14:31:53.565Z","repository":{"id":42461004,"uuid":"94234201","full_name":"avatartwo/avatar2","owner":"avatartwo","description":"Python core of avatar²","archived":false,"fork":false,"pushed_at":"2025-03-31T20:51:49.000Z","size":269098,"stargazers_count":545,"open_issues_count":26,"forks_count":105,"subscribers_count":31,"default_branch":"main","last_synced_at":"2025-05-01T09:41:07.257Z","etag":null,"topics":["binary-analysis","embedded-systems","reverse-engineering"],"latest_commit_sha":null,"homepage":null,"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/avatartwo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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}},"created_at":"2017-06-13T16:31:51.000Z","updated_at":"2025-04-30T14:31:38.000Z","dependencies_parsed_at":"2023-12-03T21:24:15.725Z","dependency_job_id":"5fa0a14f-aaad-471f-ae38-1feb8699090e","html_url":"https://github.com/avatartwo/avatar2","commit_stats":{"total_commits":351,"total_committers":29,"mean_commits":12.10344827586207,"dds":"0.44729344729344733","last_synced_commit":"5656c12079415346145c9ef2b417a004784dd15e"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avatartwo%2Favatar2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avatartwo%2Favatar2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avatartwo%2Favatar2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avatartwo%2Favatar2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avatartwo","download_url":"https://codeload.github.com/avatartwo/avatar2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253754967,"owners_count":21958934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["binary-analysis","embedded-systems","reverse-engineering"],"created_at":"2024-08-03T22:01:12.915Z","updated_at":"2025-05-12T14:31:53.203Z","avatar_url":"https://github.com/avatartwo.png","language":"Python","funding_links":[],"categories":["Resources","📚 Table of Contents","Firmware Security","💿 Real-Time Operating Systems","Software Tools"],"sub_categories":["By Purpose","Emulation \u0026 Rehosting","Dynamic Analysis and Emulation","Fuzzing \u0026 Analysis Tools","Emulation Tools"],"readme":"[![PyPI version](https://badge.fury.io/py/avatar2.svg)](https://badge.fury.io/py/avatar2)\n[![CI](https://github.com/avatartwo/avatar2/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/avatartwo/avatar2/actions/workflows/continuous_integration.yml)\n\n\u003cimg src=\"./avatar_logo.png\" width=\"40%\" height=\"40%\"\u003e\u003cbr/\u003e\n\n\nWelcome to avatar², the target orchestration framework with focus on dynamic\n analysis of embedded devices' firmware!\n\nAvatar² is developed and maintained by [Eurecom's S3 Group](http://www.s3.eurecom.fr/).\n\n# Building\n\nBuilding avatar² is easy!\n\nFirst, make sure that all the dependencies are present:\n\n```\nsudo apt-get install python-pip python-setuptools python-dev cmake\n```\n\nAfterwards, use python-pip to install avatar2:\n\n```\npip install avatar2\n```\n\nNow you are all ready to go. Additionally, if you want to install specific\ntarget entpoints, please run the avatar2-installer, which tries to fetch and\ninstall the endpoints automatically.\n\n```\npython -m avatar2.installer\n```\n\n### Building with Docker\n\nA Dockerfile is present which build by default avatar² with QEmu and PANDA target endpoints:\n\n```\n$ docker build -t avatar2 .\n$ docker run --rm avatar2 python3 -c \"import avatar2\"\n```\n\nAlternately, you can use `generate_dockerfile.py` to build a docker image with only the target endpoints your need:\n\n```\n$ python3 generate_dockerfile.py --endpoint_list avatar-qemu --qemu_targets arm-softmmu\n$ docker build -t avatar2 .\n```\n\n### Building manually\n\nAvatar² can also be built manually.\nThe following three commands are enough to install the core.\n```\n$ git clone https://github.com/avatartwo/avatar2.git\n$ cd avatar2\n$ sudo python setup.py install\n```\nAfterwards, the different target endpoints can be built, such as QEmu or PANDA.\nFor doing so, we are providing build-scripts for Ubuntu 20.04 - while other\ndistributions are not officially supported (yet), the scripts are known to\nwork with slight modifications on other distributions as well.\n```\n$ cd targets\n$ ./build_*.sh\n```\n\n**Please Note:** These scripts add the restricted repository to\n`/etc/apt/sources.list` for fetching the dependencies. If you are not comfortable\nwith this, please consider building avatar² in a VM/Container or install the\ndependencies manually and adjust the scripts.\n\n# Getting started\nFor discovering the power of avatar² and getting a feeling of its usage,\nwe recommend highly checking out the\n[handbook](https://github.com/avatartwo/avatar2/tree/master/handbook) here on\ngithub.\nAdditionally, a documentation of the API is provided\n[here](https://avatartwo.github.io/avatar2-docs/) and some exemplary\navatar²-scripts can be found\n[here](https://github.com/avatartwo/avatar2-examples).\nAdditionally, another good way to get started with avatar² is to read the official\n[avatar² paper](http://www.s3.eurecom.fr/docs/bar18_muench.pdf) or to watch the\n[34c3-talk](https://media.ccc.de/v/34c3-9195-avatar).\n\nFor further support or follow-up questions, feel free to send a mail to\navatar2 [at] lists.eurecom.fr, our public mailing list, on which you can\nsubscribe [here](https://lists.eurecom.fr/sympa/subscribe/avatar2).\n\nAdditionally, you can find us on [slack](https://avatartwo.slack.com/) for more\nvivid means of communication - if you want an invite, just send us a mail!\n\n\n# Publications\nThe following publications describe, use, or extend the avatar² framework:\n1. M. Muench, D. Nisi, A. Francillon, D. Balzarotti. \"Avatar²: A Multi-target Orchestration Platform.\" Workshop on Binary Analysis Research (BAR), San Diego, California, February 2018.\n    - [Paper](http://www.s3.eurecom.fr/docs/bar18_muench.pdf) - [Code](https://github.com/avatartwo/bar18_avatar2)\n2. M. Muench, J. Stijohann, F. Kargl, A. Francillon, D. Balzarotti. \"What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices.\" Network and Distributed System Security Symposium (NDSS), San Diego, California, 2018.\n    - [Paper](http://www.s3.eurecom.fr/docs/ndss18_muench.pdf) - [Code](https://github.com/avatartwo/ndss18_wycinwyc)\n3. D. Maier, B. Radtke, B. Harren. \"Unicorefuzz: On the Viability of Emulation for Kernelspace Fuzzing.\" Workshop on Offensive Technologies (WOOT), Santa Clara, California, August 2019.\n    - [Paper](https://www.usenix.org/system/files/woot19-paper_maier.pdf) - [Code](https://github.com/fgsect/unicorefuzz)\n4.  E. Gustafson, M. Muench, C. Spensky, N. Redini, A. Machiry, A. Francillon, D. Balzarotti, Y. E. Choe, C. Kruegel, G. Vigna. \"Toward the Analysis of Embedded Firmware through Automated Re-hosting.\" Symposium on Resarch in Attacks, Intrusions, and Defenses (RAID), Beijing, China, September 2019.\n    - [Paper](http://subwire.net/papers/pretender-final.pdf) - [Code](https://github.com/ucsb-seclab/pretender)\n5.  A.A. Clements, E. Gustafson, T. Scharnowski, P. Grosen, D. Fritz, C. Kruegel, G. Vigna, S. Bagchi, M. Payer. \"HALucinator: Firmware Re-hosting Through Abstraction Layer Emulation.\" USENIX Security Symposium, August 2020.\n    - [Paper](https://www.usenix.org/system/files/sec20summer_clements_prepub.pdf) - [Code](https://github.com/embedded-sec/halucinator)\n6. C. Cao, L. Guan, J. Ming, P. Liu. \"Device-agnostic Firmware Execution is Possible: A Concolic Execution Approach for Peripheral Emulation.\" Annual Computer Security Applications Conference (ACSAC), December 2020.\n    - [Paper](https://dl.acm.org/doi/10.1145/3427228.3427280) - [Code](https://github.com/dongmu/Laelaps)\n7. G. Hernandez, M. Muench, D. Maier, A. Milburn, S. Park, T. Scharnowski, T. Tucker, P. Traynor, K. R.B. Butler. \"FirmWire: Transparent Dynamic Analysis for Cellular Baseband Firmware.\" Symposium on Network and Distributed System Security (NDSS), April 2022.\n    - [Paper](https://hernan.de/research/papers/firmwire-ndss22-hernandez.pdf) - [Code](https://github.com/FirmWire/FirmWire)\n\n\n# Acknowledgements\nThe avatar² project was partially funded through, and supported by, SIEMENS AG - Technology.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favatartwo%2Favatar2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favatartwo%2Favatar2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favatartwo%2Favatar2/lists"}