{"id":31236315,"url":"https://github.com/gdmeunier/android-pin-unblocker","last_synced_at":"2026-06-07T02:01:17.996Z","repository":{"id":315177551,"uuid":"831213169","full_name":"gdmeunier/android-pin-unblocker","owner":"gdmeunier","description":"Android PIN Unblocker :: Generate unblock codes for PKI smartcards using your Admin key and phone.","archived":false,"fork":false,"pushed_at":"2026-04-06T03:39:29.000Z","size":1333,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-06T05:28:44.923Z","etag":null,"topics":["pin-code","pki-tools","puk-code","smartcard"],"latest_commit_sha":null,"homepage":"","language":"B4X","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/gdmeunier.png","metadata":{"files":{"readme":"readme.md","changelog":null,"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":"2024-07-20T00:03:36.000Z","updated_at":"2026-04-06T03:32:36.000Z","dependencies_parsed_at":"2025-09-17T06:27:44.556Z","dependency_job_id":"9a763f16-6de4-4530-abcb-039f82a081d6","html_url":"https://github.com/gdmeunier/android-pin-unblocker","commit_stats":null,"previous_names":["gdmeunier/android-pin-unblocker"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/gdmeunier/android-pin-unblocker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdmeunier%2Fandroid-pin-unblocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdmeunier%2Fandroid-pin-unblocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdmeunier%2Fandroid-pin-unblocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdmeunier%2Fandroid-pin-unblocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gdmeunier","download_url":"https://codeload.github.com/gdmeunier/android-pin-unblocker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdmeunier%2Fandroid-pin-unblocker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31691701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["pin-code","pki-tools","puk-code","smartcard"],"created_at":"2025-09-22T15:49:47.400Z","updated_at":"2026-06-07T02:01:17.984Z","avatar_url":"https://github.com/gdmeunier.png","language":"B4X","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!NOTE] \r\n\u003e This Android application will not comply with Google's [Android Developer Verification](https://news.itsfoss.com/new-android-sideloading-rules/) program.\\\r\n\u003e Your options for installing this application in the future are the following:\r\n\u003e \r\n\u003e **1.** Keep using an older mobile phone with Android 15 or older,\\\r\n\u003e **2.** Use a custom Android 16 ROM that removes the APK sideloading restriction,\\\r\n\u003e **3.** Root your phone and use an Xposed module that removes the APK sideloading restriction.\r\n\r\n# Android PIN Unblocker\r\n\r\nA simple Android app written in [Basic4Android](https://www.b4x.com/b4a.html) (preferably [version 12.50](https://web.archive.org/web/20230719022719/https://www.b4x.com/android/files/B4A.exe) with its [older resources](https://web.archive.org/web/20240529212314/https://www.b4x.com/b4a.html) and the [B4X Help Viewer](https://www.b4x.com/android/forum/threads/b4x-help-viewer.46969/)).\r\n\r\nIts purpose is to generate **smartcard** unblock codes using your *Admin Key* and your phone instead of requiring a computer.\r\n\r\nThe common **SLE4442** cards are memory cards only and lack a built-in processor, and thus are for data storage only.\r\n\r\nReal smartcards are the ones such as the Gemalto IDPrime 930, YubiKey, JavacardOS *[...]*.\r\nIts Windows equivalent would be the [Gemalto Response Code calculator](https://supportportal.thalesgroup.com/csm?id=kb_article_view\u0026sysparm_article=KB0017162).\r\n\r\n# Features\r\n\r\n**Android PIN Unblocker** has a very simple set of features, it cans generate the *Response Code*, get the *Request Code* from QR code and hash text using *sha256* or *sha512*.\r\n\r\n## Generate the Unblock Code\r\n\r\n![Main application screen.](https://i.postimg.cc/grvz2Cy2/1-main-app-screen.png) ![Generating the smartcard response code.](https://i.postimg.cc/nCpHj3TY/3-generated-response-code.png)\r\n\r\nHere you can type the *Request Code* and also choose to hide the *Admin Key* with the checkbox below it.\r\n\r\nThe supported algorithms for unblock code generation are 3DES, 2DES, AES-128 \u0026 AES-256.\\\r\nThe algorithm to be used is automatically determined by the Application based on your Admin key and Challenge code.\r\n\r\n## Hide \u0026 reveal the Admin Key\r\n\r\n![Main App screen with visible Admin Key.](https://i.postimg.cc/grvz2Cy2/1-main-app-screen.png) ![Hiding the previously entered Admin Key.](https://i.postimg.cc/kRFqYSMb/2-admin-key-hide.png)\r\n\r\nThis application has been intended for situations where you're entering unblock codes for employees or people who stand-by next to you.\r\n\r\nYou can thus now easily type your *Admin Key* once, then hide it with the appropriate checkbox below it.\r\n\r\nThis way nobody accidentally grabs a picture of your *Admin Key* while unblocking your employees' smartcards.\r\n\r\n## Scan QR Code for Request Code\r\n\r\nI added the ability to scan QR codes in **Android PIN Unblocker** using the below Basic4Android library:\r\n- [NewQRCodeReaderView](https://www.b4x.com/android/forum/threads/qrcodereaderview-new-release.82265/post-523013)\r\n\r\n![You can click the QR code button to scan the Request Code.](https://i.postimg.cc/fJfRBGkr/4-scan-qr-request-code.png)\r\n\r\nIt's used alongside a PC application such as **[CodeTwo QR Code Reader \u0026 Generator](https://www.majorgeeks.com/files/details/codetwo_qr_code_desktop_reader_generator.html)** to do the card unblocking more efficiently.\r\n\r\nThe *Request Code* then automatically gets input in the appropriate field once detected.\r\n\r\n## Generate Admin Key text hashes\r\n\r\n![Generating the Admin Key hash from text is possible inside the App.](https://i.postimg.cc/gxck5gZk/5-builtin-hashing-facility.png) ![Generated Admin Key hash inside the App.](https://i.postimg.cc/5HT4X1k6/6-generated-admin-key-hash.png)\r\n\r\nIt's possible with **Android PIN Unblocker** (starting with version 3) to directly generate hashes within the App instead of having to write it in other ones.\r\n\r\nThe possible choices are currently *sha256* and *sha512* only.\r\n\r\nThe generated hash will automatically replace the previous *Admin Key* text.\r\n\r\n## Share the Response Code\r\n\r\n![Sharing the Response Code with the native Android Intent chooser.](https://i.postimg.cc/gxMkP3Vy/7-share-response-code.png)\r\n\r\nYou can see on the previous screenshots a Share To button next to the generated *Response Code*, which will pop the native Android Intent chooser.\r\n\r\nFrom there you can share the *Response Code* over to Telegram, Signal, WhatsApp, SMS, and so on.\r\n\r\nOtherwise you could type the *Response Code* automatically on e.g. employees' computers with an agent program, using the Android *Share To* functionality.\r\n\r\n*You can also generally type passwords \u0026 sensitive input material using your phone and an [USB InputStick](https://inputstick.com/) device, which is hardware and works for full-disk encryption as well. It has a KeePass2Android plugin, for example.*\r\n\r\n## Share Admin Key to the App\r\n\r\n![Sharing an Admin Key text to the App (Android PIN Unblocker).](https://i.postimg.cc/Ny5GGLD3/8-share-admin-key-to-app.png) ![Shared Admin Key is now unrevealable in the App.](https://i.postimg.cc/qhKknY9Q/9-shared-admin-key-unrevealable.png)\r\n\r\nHere you can see that it's possible to write your *Admin Key* on a native Android note-taking application then select the text, which you can directly share to **Android PIN Unblocker**.\r\n\r\nThat's also where you can generate *Admin Key* hashes yourself with a different Android app then share the generated hash to **Android PIN Unblocker**.\r\n\r\nThe App automatically verifies whether the shared text is a valid *32*, *48* or *64* digits string and is made of *0-9 A-F* characters only (*hex chars*).\r\nThe App discards shared texts that are invalid *Admin Keys* and will simply behave as if you launched it yourself.\r\n\r\n*I decided to allow 32- \u0026 64-digits Admin Keys since that's what some smartcard manufacturers actually use (AES challenge/response instead of 3DES).*\r\n\r\n## Prevent disclosing Admin Keys\r\n\r\n![Admin Keys shared to the App cannot be unhidden.](https://i.postimg.cc/qhKknY9Q/9-shared-admin-key-unrevealable.png) ![Admin Keys hashed by long-pressing the hashing buttons are unrevealable as well.](https://i.postimg.cc/2LfCxGYY/10-unrevealable-hash-on-long-press.png)\r\n\r\nWhenever you share an Admin Key to the app instead of copy-pasting it yourself, the *Hide Admin Key* checkbox becomes disabled and you cannot unhide it.\r\n\r\nThis feature prevents accidental disclosure of your *Admin Key* while unblocking cards on your employees' computers.\r\n\r\n\u003e Make sure to verify whether your Android ROM doesn't have a clipboard history prior to copy-pasting Admin Keys (Samsung \u0026 Huawei have one).\r\n\r\n\u003e If clipboard history cannot be disabled then use a different keyboard application instead of your Android built-in one.\r\n\r\nYou can also type your original text in the Admin Key field and directly generate a *sha256* or *sha512* hash from within the app, by long-pressing the hashing buttons.\r\n\r\nLong-pressing the SHA-256 or SHA-512 buttons actually generates the hash but also makes them unrevealable afterwards (single-click generates the hash normally without hiding it).\r\n\r\n# License\r\n\r\nWell I don't care about legalese anyway but let's pick **GNU GPLv3 (or later version)** since my friends at the [Free Software Foundation](https://www.gnu.org/proprietary/proprietary.html) recommend it.\r\n\r\n**Basic4Android** also allows completely free usage of their IDE for both commercial and non-commercial purposes so it should be OK.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdmeunier%2Fandroid-pin-unblocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgdmeunier%2Fandroid-pin-unblocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdmeunier%2Fandroid-pin-unblocker/lists"}