{"id":24320057,"url":"https://github.com/satharus/twokey","last_synced_at":"2025-10-08T21:57:07.763Z","repository":{"id":121151342,"uuid":"330749213","full_name":"Satharus/TwoKey","owner":"Satharus","description":"A password manager with physical 2FA.","archived":false,"fork":false,"pushed_at":"2021-09-05T12:19:56.000Z","size":11005,"stargazers_count":15,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-27T04:33:05.042Z","etag":null,"topics":["avr","browser-extension","cpp","flask","graduation-project","password-manager","python"],"latest_commit_sha":null,"homepage":"https://twokey.tech","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/Satharus.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-18T18:09:42.000Z","updated_at":"2024-05-30T19:33:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"216563b8-505c-4e49-8113-95c610ce3069","html_url":"https://github.com/Satharus/TwoKey","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Satharus/TwoKey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Satharus%2FTwoKey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Satharus%2FTwoKey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Satharus%2FTwoKey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Satharus%2FTwoKey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Satharus","download_url":"https://codeload.github.com/Satharus/TwoKey/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Satharus%2FTwoKey/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000685,"owners_count":26082837,"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-10-08T02:00:06.501Z","response_time":56,"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":["avr","browser-extension","cpp","flask","graduation-project","password-manager","python"],"created_at":"2025-01-17T15:47:35.913Z","updated_at":"2025-10-08T21:57:07.758Z","avatar_url":"https://github.com/Satharus.png","language":"C++","readme":"# TwoKey\n\nTwoKey is a password manager which relies on a USB physical access token as the second factor of authentication.\n\n\nTwoKey has 4 modules:\n - The Desktop App (C/C++ and Qt)\n - The Server Backend (Python, Flask, MongoDB)\n - The Browser Extension (JS, Chrome, Firefox)\n - The Hardware Token (AVR)\n\n\nThe following is the general architecture of the project:\n\n![](Misc/Architecture.png)\n\n\n### Should I use this? \n\nProbably not, this is a PoC graduation project implemented in less than 4 months. While it is tested well enough to pass (academically), it 100% isn't ready to be used in production or in a real environment.\n\n\n\n\n\nDocumentation and Presentation:\n - [Documentation (PDF)](Misc/Documentation/TwoKey-Documentation.pdf)\n - [Documentation (on Google Docs)](https://docs.google.com/document/d/1EKH_7GnC5Gk7F7UE59FQuZhJ4n82jdFRYTa4lHULmrA/edit?usp=sharing)\n - [Presentation (on Google Slides)](https://docs.google.com/presentation/d/15kjcTesO-ccG5K21x3QOe8d7D0Zuf3NYI-c2UDwzBeA/edit?usp=sharing)\n\n\nCredits and Resources: \n\n - Web server inside the desktop app: [rxi/sandbird](https://github.com/rxi/sandbird)\n - AES Encryption on the AVRs: [DavyLandman/AESLib](https://github.com/DavyLandman/AESLib)\n - Libraries for USB Detection on Linux: [libusb](https://libusb.info/) and [libudev](https://www.freedesktop.org/software/systemd/man/libudev.html)\n - A blog post on Password Manager hacking which inspired this project: [ise.io/casestudies/password-manager-hacking](https://www.ise.io/casestudies/password-manager-hacking/)\n - [CASMM by Daniel Miessler](https://danielmiessler.com/blog/casmm-consumer-authentication-security-maturity-model/)\n - [How secure is my password?](https://www.security.org/how-secure-is-my-password/)\n - [Have I been pwned?](https://haveibeenpwned.com/)\n\n\nThis project was implemented as a graduation project under the supervision of Dr. Karim Emara and TA/Abdulrahman Ali.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatharus%2Ftwokey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsatharus%2Ftwokey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatharus%2Ftwokey/lists"}