{"id":33250843,"url":"https://github.com/mit-ll/LL-Fuzzer","last_synced_at":"2025-11-21T17:01:30.320Z","repository":{"id":34205804,"uuid":"38062363","full_name":"mit-ll/LL-Fuzzer","owner":"mit-ll","description":"An automated NFC fuzzing framework for Android devices.","archived":false,"fork":false,"pushed_at":"2020-11-19T16:46:13.000Z","size":197,"stargazers_count":135,"open_issues_count":0,"forks_count":23,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-06-29T11:32:14.158Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mit-ll.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-25T17:02:03.000Z","updated_at":"2024-05-14T12:14:40.000Z","dependencies_parsed_at":"2022-09-04T11:11:18.933Z","dependency_job_id":null,"html_url":"https://github.com/mit-ll/LL-Fuzzer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mit-ll/LL-Fuzzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-ll%2FLL-Fuzzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-ll%2FLL-Fuzzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-ll%2FLL-Fuzzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-ll%2FLL-Fuzzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mit-ll","download_url":"https://codeload.github.com/mit-ll/LL-Fuzzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-ll%2FLL-Fuzzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285655011,"owners_count":27209077,"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","status":"online","status_checked_at":"2025-11-21T02:00:06.175Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-11-16T23:00:40.653Z","updated_at":"2025-11-21T17:01:30.314Z","avatar_url":"https://github.com/mit-ll.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":["Network protocol"],"readme":"                  ██╗     ██╗      ███████╗██╗   ██╗███████╗███████╗███████╗██████╗ \n                  ██║     ██║      ██╔════╝██║   ██║╚══███╔╝╚══███╔╝██╔════╝██╔══██╗\n                  ██║     ██║█████╗█████╗  ██║   ██║  ███╔╝   ███╔╝ █████╗  ██████╔╝\n                  ██║     ██║╚════╝██╔══╝  ██║   ██║ ███╔╝   ███╔╝  ██╔══╝  ██╔══██╗\n                  ███████╗███████╗ ██║     ╚██████╔╝███████╗███████╗███████╗██║  ██║\n                  ╚══════╝╚══════╝ ╚═╝      ╚═════╝ ╚══════╝╚══════╝╚══════╝╚═╝  ╚═╝\n\n                       Authors: Chad Spensky (chad.spensky@ll.mit.edu)\n                                  Hongyi Hu (hongyi.hu@ll.mit.edu)\n\n================================================================================\n\n  LL-Fuzzer is a fuzzing framework built to fuzz NFC applications on android \ndevices.\n\n\n# Dependencies\n\n  * [NFCPy](https://launchpad.net/nfcpy)\n\n  * [Sulley](https://github.com/OpenRCE/sulley)\n\n  * [PyUSB](http://sourceforge.net/projects/pyusb/)\n\n  * [Android Debug Bridge](http://developer.android.com/tools/help/adb.html)\n \n\n# Hardware Requirements\n\n  * [PN532 Breakout Board](http://www.adafruit.com/product/364)\n  * [FTDI Cable](http://www.adafruit.com/products/70)\n\n\n# Installation \n\nTo install all of the dependencies type:\n  \n\u003e$ ./install.sh\n  \nor follow the individual instructions below:\n\n * If you're using a 64bit machine, you must install the 32 bit libraries:\n\n   \u003e$ sudo apt-get install ia32-libs\n\n * Some of the android stuff requires java:\n\n   \u003e$ sudo apt-get install openjdk-7-jre\n\n * NFCPy depends on libusb:\n\n   \u003e$ sudo apt-get install python-pip\n   \n   \u003e$ sudo pip install pyusb\n\n\n# Usage \n\nFor general help try:\n\u003e$ python fuzzer.py --help\n\nAn example of a real use case would be:\n\u003e$ python fuzzer.py -r tty:usb:0 -s 4d001f274acd31cf -D fuzz-configs/ndef/ -o testing\n\n# Phone Setup \n\n  There are some settings on android that make fuzzing a much more pleasurable \n  experience.\n\n  * Enable USB debugging through \"Developer options\"\n    If you don't see this option go to \"About phone\" and tap the \"Build number\" \n    a bunch of times.\n\n  * Enable \"Stay awake\" under \"Developer options\"\n\n  * Set \"Screen Lock\" to None under \"Security\"\n\n\n# Examples \n\nHere are some example commands to test NFC functionality (All files in examples-nfc):\n\n * Emulate an NFC tag:\n   \u003e$ ./npp-test-client.py -b --mode=initiator --quirks=android \u003c ndef\n\n * Read data from an NFC tag:\n    \u003e$ ./tagtool.py\n\n\n# Code Architecture\n\n* RFID Reader / FrontEnd as named by nfcpy (e.g. Proxmark, Omnikey, PN532\nboard)\n - LL-Fuzzer provides full control over what this sends over the RFID channel\n\n* RFID Device (e.g. smartphone, tablet, etc.)\n - Provides an abstraction to interaction with NFC-enabled devices\n\n* RFID Message (e.g. NDEF, LLCP)\n - LL-Fuzzer supports numerous NFC message types\n\n* Generator\n - Generates inputs for fuzzing\n\n* Fuzzer\n - Drives fuzzing operation\n - Uses generator to generate fuzzed messages\n - Tells RFID reader to transmit fuzzed messages\n - Receives logs, etc. from RFID Device\n - Controls RFID stack on RFID device to reset state\n\n# Mail \n\nIt might be useful to interface the fuzzer with e-mail for very long jobs.\n\u003e$ sudo apt-get install sendmail\n\n\n# Complications\n\n## Unreliable RF Transmission\nDuring our own fuzzing, we had a very difficult time getting reliable \nNFC communication.  To facilitate this, we used a book with the reader \nplaced inside and the phone tapped to the top to prevent it from moving.  \nA more elegant setup is certainly possible, but any reliable setup will \nneed a way of tweaking the distance and then holding the reader and \nphone at that fixed distance for the duration of the fuzzing.\n\n# Citation\n\nPlease use this DOI number reference, published on [Zenodo](https://zenodo.org), when citing the software:    \n[![DOI](https://zenodo.org/badge/38062363.svg)](https://zenodo.org/badge/latestdoi/38062363)\n\n# Disclaimer\n\nThis work is sponsored by the Defense Information Systems Agency under Air Force Contract #FA8721-05-C-0002.  Opinions, interpretations, conclusions and recommendations are those of the author and are not necessarily endorsed by the United States Government.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-ll%2FLL-Fuzzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmit-ll%2FLL-Fuzzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-ll%2FLL-Fuzzer/lists"}