{"id":13759165,"url":"https://github.com/rioastamal/gembok","last_synced_at":"2025-08-26T03:09:47.342Z","repository":{"id":50728903,"uuid":"392035940","full_name":"rioastamal/gembok","owner":"rioastamal","description":"Browser based 2FA token generator alternative to Google Authenticator.","archived":false,"fork":false,"pushed_at":"2023-02-20T09:16:48.000Z","size":53,"stargazers_count":54,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T16:11:28.528Z","etag":null,"topics":["2fa","authenticator","google-authenticator","html","javascript","otp","otp-generator","totp"],"latest_commit_sha":null,"homepage":"https://rioastamal.net/gembok/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rioastamal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-08-02T17:23:34.000Z","updated_at":"2025-01-24T01:03:16.000Z","dependencies_parsed_at":"2024-01-15T03:57:24.918Z","dependency_job_id":"435732dd-9ede-42a7-8cda-05d65601414f","html_url":"https://github.com/rioastamal/gembok","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rioastamal%2Fgembok","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rioastamal%2Fgembok/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rioastamal%2Fgembok/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rioastamal%2Fgembok/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rioastamal","download_url":"https://codeload.github.com/rioastamal/gembok/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252979861,"owners_count":21835127,"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":["2fa","authenticator","google-authenticator","html","javascript","otp","otp-generator","totp"],"created_at":"2024-08-03T13:00:47.880Z","updated_at":"2025-05-08T01:24:26.212Z","avatar_url":"https://github.com/rioastamal.png","language":"HTML","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"## Gembok Authenticator\n\nGembok Authenticator is software based (virtual) authenticator to generate 2-Steps authentication token using browser. It is written in HTML and Javascript so it should works on Google Chrome, Firefox, Safari and other browsers. It uses simple JSON file to store all data which needed to generate the token.\n\n![Gembok Authenticator](https://s3.amazonaws.com/rioastamal-assets/gembok/01-gembok-authenticator.png)\n\n## How to Run\n\nClone this repository or download archived version from GitHub and then save it to your local machine. To run Gembok Authenticator simply open file `src/index.html` using your browser and you're ready to go.\n\nAs an alternative you can download directly `index.html` from release page using following URL.\n\n[https://github.com/rioastamal/gembok/releases/download/v1.2/index.html](https://github.com/rioastamal/gembok/releases/download/v1.1/index.html)\n\n## Create JSON File\n\nGembok Authenticator uses JSON file to display providers and its token. Take a look at sample below to get started.\n\n```\n[\n  {\n    \"provider\": \"Google\",\n    \"description\": \"Main account\",\n    \"secret\": \"I5XW6Z3MMUQG2YLJNYQGCY3D\",\n    \"period\": 30,\n    \"digits\": 6,\n    \"algorithm\": \"SHA1\",\n    \"indicatorColor\": \"red\"\n  },\n  {\n    \"provider\": \"AWS\",\n    \"description\": \"Root account (john@example.com)\",\n    \"secret\": \"IFLVG4TPN52GCY3D\",\n    \"indicatorColor\": \"orange\"\n  },\n  {\n    \"provider\": \"Twitter\",\n    \"description\": \"john@example.com\",\n    \"secret\": \"KR3WS5DUMVZC4Y3PNVVG62DO\",\n    \"indicatorColor\": \"#1DA1F2\"\n  },\n  {\n    \"provider\": \"Facebook\",\n    \"description\": \"Foo account\",\n    \"secret\": \"IZQWGZLCN5XWWLTD\",\n    \"indicatorColor\": \"#4267B2\"\n  }\n]\n```\n\nThe only required attributes are `provider` and `secret` the rest are optional.\n\nSave the JSON file and then use `Open File...` menu to load the file. You should now see 4 items being displayed.\n\nYou can also encrypt your JSON file using AES-256-CBC and Gembok Authenticator automatically try to decrypt the file and ask you the passphrase. Here is an example of above JSON encrypted with AES-256-CBC with passphrase `gembok-authenticator`.\n\n```\nU2FsdGVkX1/QSAvwH5h14leaLOcB0On3cALWPUHN4tuuvdyN4/rzh97awj0bBxXO72JneBjUIOxvHC2u+srnbW6vyykcnSsXPFidXrajeExIiYBD8SWG/AphYqnJYJGdRDb+DDnWEP/ST9ZkWCjOrQZcBTtsuBJFAMjSC2pOeA5GHZve2FFoNWQZsL1AeTJYBl7GzCenqC/Qxs9mFOuEyMs4bWakji/puY4pXpf/b4dWx7i5tktOX06LFzwnclWuqoCHzwtvnHwWDAKONZ39OD2hfY+iO/AilfnJQNhdfKVs5CyJlfwG9/NP6lYpjGpcaxm5bM6QRoEvqlKSP1KaGRQwaUcftBD+p+hdYwLq1YFjDQIXgoM680XU1mS3o0U6+4lsBzkqYrYP8HUBQEYdg5gnrCD9/3wI5TbzgnUqHAUgwI7JP6Rh/7FAwj3jkNRYOhjk58NGwORu0InzOKwIrCv8fCx/WfEMPJgczE3kL5kytMIwKX3IiedUfKNSQRGYVAU4Vo9cnLqCeWmN/V+UyFMmPiuUHa+PwtARS919nLj00MMAQfCNGv3OxPNE/6qdXAzbB3tHzuUQdcg+kEjBBErlGceaXx1CAzPgdzcnEPkJk1kERo1L4TRmGn5QmDr3Tdn82Aua0MrXEAzVxHmX7EFaEZ9mtJG9E+/MupDw5kzJqPvPEHYxSP6/fsNzvLVJ5O4euSPahvPsNCh4itTlQ9NkfIdCs/cwPaZ8Pb0e32wo46ilt03+2FVZTIzfNvZY2W+lZmUforNrZsmxnkFxQRJfWwCfFA1vBPo/1n06Lk94+mLiDS6Ag8Q/Cwfhm4aKef4fZVRePmCzeyKXNQS7M6BW07zWjDkJDX8dwup2R80=\n```\n\n## Build\n\nThe build generates a single, portable HTML file for Gembok Authenticator, useful for use on other machines.\n\n```\n$ bash build.sh\nBuild file build/index.html complete.\n```\n\nYou can try to open file `build/index.html` using web browser.\n\n## Extra Security\n\n#### Option 1\n\nYou can encrypt JSON file with AES-256-CBC and Gembok Authenticathor automatically try to decrypt them. As an example you can use following OpenSSL command to encrypt.\n\n```\n$ openssl enc -aes-256-cbc -in sample.json -out encrypted.sample.json -pass pass:\"gembok-authenticator\" -e -base64 -A\n```\n\n#### Option 2\n\nIf you're planning to encrypt your JSON using other than AES-256-CBC, you can using other encryption tools such as OpenSSL or PGP. Keep it mind, just before you want to load it on Gembok Authenticator you need to decrypt the file first.\n\n## Compatibility\n\nGembok Authenticator uses the same algorithm as most software based authenticator such as Google Authenticator. Based on my personal limited test using various services such as Twitter and AWS I found no issue.\n\n## Credits\n\nGembok Authenticator uses following library.\n\n- https://github.com/hectorm/otpauth by [Héctor Molinero Fernández](https://github.com/hectorm/)\n- https://github.com/brix/crypto-js by [Evan Vosberg](https://github.com/brix/)\n\n## ChangeLog\n\n### v1.2 (2022/01/02)\n\n* New feature: Ability to read JSON file which has been encrypted with AES-256-CBC.\n\n### v1.1 (2021/09/19)\n\n* New feature: Copy token to clipboard\n\n### v1.0 (2021/08/03)\n\n* Initial release of Gembok Authenticator\n\n## Author\n\nThis application is written by Rio Astamal \u0026lt;rio@rioastamal.net\u0026gt;\n\n## License\n\nThis application is open source licensed under [MIT license](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frioastamal%2Fgembok","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frioastamal%2Fgembok","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frioastamal%2Fgembok/lists"}