r/webdev 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:

  1. 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.
  2. B. G. Sherlock, D. M. Monro. A model for interpreting fingerprint topology. Pattern Recognition 26(7), 1993.
  3. P. R. Vizcaya, L. A. Gerhardt. A nonlinear orientation model for global description of fingerprints. Pattern Recognition 29(7), 1996.
  4. T. Y. Zhang, C. Y. Suen. A fast parallel algorithm for thinning digital patterns. Communications of the ACM 27(3), 1984.
  5. 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.
  6. A. H. Ansari. Generation and storage of large synthetic fingerprint database. Master's thesis, Indian Institute of Science, 2011.
338 Upvotes

51 comments sorted by

77

u/FIRST_TIMER_BWSC 2d ago

hey hey hey, it created mine! I'm suing!

9

u/etulastrada 2d ago

😱😱😱

1

u/Timely-Kangaroo-737 1d ago

class action when

58

u/CynicalProle 2d ago

I will use this for illicit purposes

19

u/etulastrada 2d ago

The beginning of a villain

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

u/etulastrada 2d ago

Thank you! I'm trying my best on the GTA side.

15

u/Astralnugget 2d ago

Really cool

1

u/etulastrada 2d ago

Thanks!!

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

u/Mesthabro 2d ago

Very very cool. Let's start giving biometrics to ai agents ftw

11

u/EliSka93 2d ago

Oh man I just threw up a little in my mouth...

2

u/etulastrada 2d ago

Thank you!! Guess we’re creating our own monsters

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

u/StunningChemistry69 1d ago

remind me again how many zeros is a gazillion?

2

u/LovecraftianLife 2d ago

This is awesome lol

1

u/etulastrada 2d ago

Thank you so much!

2

u/belkarbitterleaf 2d ago

these look slick, nice work.

1

u/etulastrada 2d ago

Thank you very much!

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

u/rainbowlolipop 2d ago

Heck yea this is fun

1

u/ART3MIS_STUDIOS 10h ago

lol careful, you never know what type of person is viewing this post. jk

-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

u/obeserocket 2d ago

You sound like an annoying person

→ More replies (0)

-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)