i guess something about fingerprinting would help a lot.
That exists already too, also written by qod, and some other(s) too, look in the Tutorials Index