{"id":18791079,"url":"https://github.com/vrikodar/bullet","last_synced_at":"2025-10-28T20:06:02.650Z","repository":{"id":198422228,"uuid":"325457459","full_name":"vrikodar/Bullet","owner":"vrikodar","description":"Bullet is a Remotely Tigerrable powerful Deadman switch","archived":false,"fork":false,"pushed_at":"2021-05-13T17:04:32.000Z","size":8056,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-29T15:10:54.481Z","etag":null,"topics":["bot-service","bots","client-server","data-encryption","data-encryption-standard","dead-man-switch","dead-mans-switch","deadline-aware","deadlock","hashing","password-encryption","password-manager","password-safety","random-hashes","remote-switch","request-response","trigger-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","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/vrikodar.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,"governance":null}},"created_at":"2020-12-30T04:49:45.000Z","updated_at":"2022-12-12T23:40:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"f9eaded4-1fb7-4ba7-bd30-33aec40f1d89","html_url":"https://github.com/vrikodar/Bullet","commit_stats":null,"previous_names":["vrikodar/bullet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrikodar%2FBullet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrikodar%2FBullet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrikodar%2FBullet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrikodar%2FBullet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vrikodar","download_url":"https://codeload.github.com/vrikodar/Bullet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239718169,"owners_count":19685719,"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":["bot-service","bots","client-server","data-encryption","data-encryption-standard","dead-man-switch","dead-mans-switch","deadline-aware","deadlock","hashing","password-encryption","password-manager","password-safety","random-hashes","remote-switch","request-response","trigger-bot"],"created_at":"2024-11-07T21:14:38.964Z","updated_at":"2025-10-28T20:05:57.613Z","avatar_url":"https://github.com/vrikodar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![SxNade](https://img.shields.io/badge/MadeBy-SxNade-red)\n\n# Bullet\n\n![Capture](https://github.com/SxNade/Bullet/blob/main/Bullet.png)\n\n`Bullet is a Remotely Tigerrable powerful Deadman switch`\n\n**MADE BY-SxNade**\n\n**when Triggered**\n\n(of --\u003e to)\n\n![Capture](https://github.com/SxNade/Bullet/blob/main/bullet.gif)\n\n---\n\n# `INSTALLING`\n\n*to install the required dependencies run the following commands in order*\n\n`1 chmod +x install.sh`\n\n`2 ./install.sh`\n\n# `HOW  DOES BULLET WORK?`\n\n*Bullet comes with Two Python Scripts bullet.py and dead.py*\n\n**Bullet.py can be run individualy with respective arguments**\n\n`python3 bullet.py file-name(path) start`\n\n**KEEP A NOTE THAT 3rd Argument can be anything when running bullet.py individually..It's required to just full fill the sys.argv condition(required for switch.py)**\n\n*Bullet can be given a password-file name as argument to script and when run successfully bullet will encrypt all the passwords present in that file and write them to another file  in encrypted form*\n\n**PLEASE KEEP A NOTE THAT AFTER SUCCESSFULL ENCRYPTION OF PASSWORDS THE ORIGINAL FILE CONTAINING UNENCRYPTED PASSWORDS WILL BE DELETED**\n\n# `INTEGRATING DEAD-MAN SWITCH`\n\n**IN ORDER TO UTILIZE BULLET AS DEAD-MAN SWITCH YOU CAN RUN A LOCAL PYTHON SERVER ON LETS SAY PORT 8080 --- AND THEN RUN dead.py with the URL of server as argument**\n\n# `RUNNING DEAD-MAN SWITCH`\n\n*WE WILL START BY RUNNING A PYTHON SERVER ON A SPECIFIC PORT LETS SAY 8080 WITH THE FOLLOWING COMMAND*\n\n**the directory in which the python server is run has a test.txt file which will act as a trigger to our DEAD-MAN Switch**\n\n\n`python -m SimpleHTTPServer 8080`\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/server.png)\n\n*the current directory also contains a file test.txt*\n\n**NOW THAT WE HAVE OUR SERVER RUNNING WE WILL RUN OUR SCRIPT `dead.py` ALONG WITH OUR SERVER RUNNING**\n\n*BUT BEFORE WE WILL ALSO CREATE A SIMPLE PASSWORD LIST*\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/pass_list.png)\n\n*I HAVE CREATED A PASSWORD LIST NAMED `pass.txt` AND NOW ITS TIME TO RUN OUR DEADMAN SWITCH*\n\n\n**python3 dead.py \u003cpassword-file-name(or path)\u003e \u003cserver-url\u003e**\n  \n*IN our scenario this command will be `python3 pass.txt http://192.168.0.108:8080/test.txt`*\n\n**we will see that a timer will be displayed**\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/count.png)\n\n**we will not hit ctrl+c and will let the program continue**\n\n**AFTER 30 SECONDS OF COUNTDWON**\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/requests.png)\n\n*WE CAN SEE FROM THE IMAGE ABOVE THAT THE SWITCH IS MAKING A HTTP GET REQUEST EVERY 5 SECONDS FOR THE `test.txt` FILE WHICH WE CREATED BEFORE*\n\n**NOW WE WILL REMOVE THE `test.txt` FILE FROM THE PYTHON SERVER AND SEE HOW THE SWITCH REACTS TO IT**\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/triggered.png)\n\n*we can see that as soon as we removed the file test.txt we get a message in terminal that switch is triggered(we can also see the file not found error in server logs)*\n\n**AFTER THE SWITCH GETS TRIGGERED FOLLOWING HAPPENS**\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/executed.png)\n\n**we get notified that the encrypted passwords have been written to a ps.txt file**\n\n*NOW LETS JUST VIEW THE CONTENTS OF THE `ps.txt` FILE*\n\n![Capture](https://raw.githubusercontent.com/SxNade/Bullet/main/imgs/enc_ps.png)\n\n*AND ALL THE PASSWORDS ARE NOW ECRYPTED AND SAVED TO `ps.txt` FILE*\n\n**The original file pass.txt containing the unencrypted passwords has been removed**\n\n# `MORE_INFO`\n\n*The capabilities of bullet can be extended from what they are right now-- that is the code can be modified to send emails to specified address before dying!*\n\n**OR**\n\n`IT can also act as a Triggrable ransomware`\n\n# `ADDITIONS`\n\n**MORE ADDITIONAL FEATURES WILL BE ADDED BULLET IN UPCOMING DAYS**\n\n\n# `MAKE_IT_BETTER`\n\n*In order to make bullet even better contribute or report any bugs or fixes required*\n\n`git clone https://github.com/SxNade/Bullet`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrikodar%2Fbullet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvrikodar%2Fbullet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrikodar%2Fbullet/lists"}