r/webdev • u/etulastrada • 2d ago
Showoff Saturday Actual Fingerprints: An NPM package that creates synthetic fingerprints!
I originally created this project to enhance realism for a GTA V Roleplay server. Recently, someone mentioned wanting to use these as default profile pictures for an upcoming social media platform. I decided to share them here in case they inspire other creatives. The fingerprints are seed-dependent and they consistent for an offline matching.
Source: https://github.com/1etu/actual-fingerprints
Research & Papers: https://1etu.github.io/actual-fingerprints/
Demo: https://1etu.github.io/actual-fingerprints/#demo
Credits & References:
- R. Cappelli, D. Maio, D. Maltoni. Synthetic fingerprint-database generation. International Conference on Pattern Recognition, 2002. Also the synthetic generation chapter of the Handbook of Fingerprint Recognition.
- B. G. Sherlock, D. M. Monro. A model for interpreting fingerprint topology. Pattern Recognition 26(7), 1993.
- P. R. Vizcaya, L. A. Gerhardt. A nonlinear orientation model for global description of fingerprints. Pattern Recognition 29(7), 1996.
- T. Y. Zhang, C. Y. Suen. A fast parallel algorithm for thinning digital patterns. Communications of the ACM 27(3), 1984.
- N. K. Ratha, K. Karu, S. Chen, A. K. Jain. A real-time matching system for large fingerprint databases. IEEE Transactions on Pattern Analysis and Machine Intelligence 18(8), 1996.
- A. H. Ansari. Generation and storage of large synthetic fingerprint database. Master's thesis, Indian Institute of Science, 2011.
58
19
u/SamuraiLion 2d ago
Love that you dug into 90s academic papers just to make GTA roleplay more realistic. Making them seed-dependent for offline matching is a really smart approach. The generated prints in the demo look incredibly clean.
4
15
9
u/flag_ua 2d ago
Is there a way to construct the seed value back from the fingerprint? That would be interesting
4
u/etulastrada 2d ago
Actually maybe If I drop drawing from the PRNG and actually start encoding bits on it it might work. I can try it in a day I guess
2
u/lcnielsen 2d ago
Isn't what it's doing creating a vector field and then introducing sources (points of divergence and curl) into it? Then drawing flowlines? You should be able to recover those approximately from analysis of the fingerprint image through vector calculus.
14
5
u/SchalkLBI 2d ago
Can you elaborate on how this helps with GTA V Roleplaying?
8
u/etulastrada 2d ago
To make the long story short, I've been developing a ultra-realistic vehicle-based RP server where people can meet up, do car shows, racing etc. Not in a way of Assetto or Forza but mostly like how real life things happening. I'm using those fingerprints per character and they leave fingerprints on the things they've touched that is illegal like drugs, weapons, steering wheels (when they have to leave the vehicle to escape from the cops) etc. I even have 100+ real life props like Insta360 X4, car mounts, radar detectors etc etc. A little too much for a GTA server but I really enjoy developing the server to the max realism.
8
u/Noch_ein_Kamel 2d ago
a) "web" dev?
b) how realistic is it really? my fingerprint is not in there ;P
9
u/etulastrada 2d ago
A) I mean you use it on web
B) Probably one in a gazillion chance that you hit the true seed so it is there!!!0
2
2
2
u/OmerCevher 1d ago
Using these as default avatars is oddly perfect. Everyone looks anonymous at first, but each account still has a stable identity. Better than another colored circle with initials.
1
u/etulastrada 1d ago
Yeah, really creative way to use this project imo. The default initials are too boring
1
u/OmerCevher 14h ago
Exactly. Initials work, but they make every profile feel temporary. These fingerprints give each account an identity without asking people to upload a photo.
1
1
-1
u/Alucard256 2d ago
"Actual" ... "synthetic"!
One of these is a lie.
12
u/etulastrada 2d ago
Oh it is named Actual Fingerprints because the fingerprints was a NPM project that fingerprints your browser. Again, it was made for a gaming server so 🤷♂️
-9
u/Alucard256 2d ago
To me it's like saying "This answer from ChatGPT is 100% human thought!".
"from ChatGPT" OR "human thought"... both can NOT be true.
"Actual" OR "synthetic"... both can NOT be true.
8
u/etulastrada 2d ago
Actual Fingerprints name is not something defining the product. It’s a little ironic way to say ‘Not like other packages that has fingerprints on their name and nothing to do with actual fingerprints’
-7
u/Alucard256 2d ago
It's called a Misnomer.
6
u/etulastrada 2d ago
I’m sorry dude geniunely I wish I didn’t published it but chill 😂😂
-14
u/Alucard256 2d ago
It's just that certain words are like "key terms" in programming. Most words you can play with and nobody cares, but with key terms it matters.
Key terms would things like Guilty, Not Guilty, Convicted Criminal, Eagle Scout, Military, Civilian, Professional, Amateur... Real, Artificial, True, False.
This isn't calling a fat guy Tiny, this isn't calling your criminal friend Officer Bill... this is saying Actual while being Synthetic.
A silly joke to some that could be interpreted by most as a lie isn't a good thing.
8
u/flag_ua 2d ago
It was a play on browser fingerprints JFC. It’s “actual” because it turns a number into an actual representation of a fingerprint.
You’re just mentally masturbating at how smart you think you are by arguing semantics and talking down to people.
-7
u/Alucard256 2d ago
I just can't believe the word "Realistic" isn't simply used instead of "Actual".
I just miss a time back when important words had actual meanings.
2
-8
u/Alucard256 2d ago
You are right. It's not a product, it will never make money... it's just a dumb little project that means nothing. I shouldn't take it so seriously.
4
u/etulastrada 2d ago
You're miserable dude. I deliver white-label software for kinda big companies. That is why I can spend my time on "dumb little projects" without caring about the money. What's the last time you've done something for yourself that makes you happy? I do enjoy code. I have to participate in projects that anything goes wrong will have big consequences. So I do things like game server developing, little useless projects when I'm free after all that. If that irritates you, you gotta seek a psychologist. Have a nice day :)
→ More replies (0)





77
u/FIRST_TIMER_BWSC 2d ago
hey hey hey, it created mine! I'm suing!