{"id":21310313,"url":"https://github.com/wiringbits/fingerprint-reader-daemon","last_synced_at":"2025-07-11T23:31:25.120Z","repository":{"id":99290630,"uuid":"248861251","full_name":"wiringbits/fingerprint-reader-daemon","owner":"wiringbits","description":"A daemon service allowing web apps to read fingerprints from biometric devices using the Neurotechnology SDK","archived":false,"fork":false,"pushed_at":"2020-07-04T04:35:42.000Z","size":16,"stargazers_count":14,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T10:43:22.279Z","etag":null,"topics":["fingerprint-scanner","hacktoberfest","java","neurotechnology","webapp"],"latest_commit_sha":null,"homepage":"https://wiringbits.net/wiringbits/2020/03/20/reading-fingerprints-from-devices-on-webapps.html","language":"Java","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/wiringbits.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":"2020-03-20T22:08:18.000Z","updated_at":"2025-02-18T06:31:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"a47cd7e7-f2e8-459f-8733-493ba96432bf","html_url":"https://github.com/wiringbits/fingerprint-reader-daemon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wiringbits/fingerprint-reader-daemon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiringbits%2Ffingerprint-reader-daemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiringbits%2Ffingerprint-reader-daemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiringbits%2Ffingerprint-reader-daemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiringbits%2Ffingerprint-reader-daemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wiringbits","download_url":"https://codeload.github.com/wiringbits/fingerprint-reader-daemon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiringbits%2Ffingerprint-reader-daemon/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264913466,"owners_count":23682657,"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":["fingerprint-scanner","hacktoberfest","java","neurotechnology","webapp"],"created_at":"2024-11-21T17:13:02.931Z","updated_at":"2025-07-11T23:31:25.110Z","avatar_url":"https://github.com/wiringbits.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fingerprint-reader-daemon\n\nA daemon service allowing web apps to read data from biometric devices, currently working with fingerprint readers, tested with [Digital Persona u.are.u 4500](https://www.neurotechnology.com/fingerprint-scanner-digitalpersona-u-are-u-4500.html) and the [Neurotechnology Standard SDK](https://www.neurotechnology.com/).\n\n\n## Disclaimer\n**THIS IS NOT READY FOR PRODUCTION**, use it ar your own risk.\n\nThis work was done as a PoC, being a piece for a bigger project, there are several things that aren't implemented on the security side, like checking which websites are allowed to read the fingerprints, dealing with several devices connected, etc.\n\nBut, this can certainly help you to get started.\n\n**NOTE**: Avoid using Windows VMs, we spent lots of time trying that but back then, there was a known bug on the SDK that prevented us from doing that, the workaround is to setup a license server which is tricky.\n\n\n## Run\nWhile the project should work on linux (tried in ubuntu 18.04), we only have instructions for Windows.\n\nYou will require:\n- Java 8 (it may work with newer versions but we haven't tested them).\n- Gradle\n\n### Run for windows\nFirst, you need to install the SDK from [Neurotechnology Standard SDK](https://www.neurotechnology.com/), we tried [Neurotec_Biometric_11_1_SDK_2019-07-07](https://download.neurotechnology.com/Neurotec_Biometric_11_1_SDK_2019-07-07.zip) but should likely work with newer versions and we suggest you to use the latest one.\n\nEverything must be run the as an **administrator**.\n\nSave in `$SDKDIR` your `Neurotec_Biometric_11_1_SDK` path, for example (replace your SDK path):\n- For powershell, run `Set-Variable -name \"SDKDIR\" -Value \"C:\\Users\\jonsa\\Desktop\\neurotec\\Neurotec_Biometric_11_1_SDK\"`\n- For cmd, run `set $SDKDIR=\"C:\\Users\\youruser\\Desktop\\neurotec\\Neurotec_Biometric_11_1_SDK\"`\n\n\n#### Run the SDK activation service\nIt is necessary to run the activation licenses in the background, once the SDK is downloaded and uncompressed:\n\n```sh\ncd $SDKDIR/Bin/Win64_x64/Activation\n./pg.exe -install\n```\n\nYou can stop the service with `./pg.exe -uninstall`\n\n\n#### Run the daemon\nBe sure to keep your fingerprint reader connected, and make sure that the necessary drivers are installed, you can try the SDK examples to make sure that your computer can read the fingerprints.\n\nWe assume you already cloned our project, then:\n- Create the directories `Bin/Java`\n- Copy the necessary libraries from the official SDK (on `$SDKDIR/Bin/Java` to `Bin/Java`)\n\n```\nneurotec-biometrics-client.jar\nneurotec-licensing.jar\nneurotec-biometrics.jar\nneurotec-media.jar\nneurotec-core.jar\nneurotec-media-processing.jar\nneurotec-devices.jar\n```\n\nAfter that, `gradle run` should be enough.\n\n\n#### Troubleshooting\nIf you get a License error problem you must copy the dependencies from the SDK, for example:\n\n```sh\ncp $SDKDIR/Bin/Win64_x64/*.dll enroll-finger-from-scanner/build/classes/java/main\ncp $SDKDIR/Bin/Win64_x64/FScanners/NdmDigitalPersonaUareU/*.dll enroll-finger-from-scanner/build/classes/java/main\ncp -r $SDKDIR/Bin/Data enroll-finger-from-scanner/build/classes/java/main\n```\n\nWhen you see the fingerprint reader connected but it's not detected by the app, it's likely a driver problem, be sure to install the official custom drivers from Neurotechnology, running one of the official examples is the best way to make sure your environment is setup properly, like `Neurotec_Biometric_11_1_SDK/Bin/Java\nsimple-faces-sample.bat`, if this example can't read a fingerprint, this app won't be able either.\n\n\n## Get a fingerprint\nYou can use any http client (like postman, httpie, or even your webapp) to execute the following request `POST localhost:1212/fingerprints`, which will read a fingerprint from the connected device.\n\nWhich initializes the fingerprint reader and waits until you capture a fingerprint, once done, it returns the base64-enconded image and it's template, like:\n\n```json\n{\n    \"data\": {\n        \"image\": \"aabbcc......\",\n        \"template\": \"aabbccdd....\"\n    }\n}\n```\n\nWhen there is an error, you should get a response like:\n```json\n{\n    \"error\": \"You are already trying to read a fingerprint, try after completing that one\"\n}\n```\n\nThe handled errors are:\n- Trying to read a fingerprint when there aren't devices available.\n- Trying to read a fingerprint when you are already reading another fingerprint.\n- Reading a fingerprint timed out, you took too long.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwiringbits%2Ffingerprint-reader-daemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwiringbits%2Ffingerprint-reader-daemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwiringbits%2Ffingerprint-reader-daemon/lists"}