This post presents an implementation of a canvas fingerprint inspired by the Picasso paper written by Elie Bursztein. Contrary to the majority of the canvas presented in this other post, the goal of this canvas is to detect devices spoofing the real nature of their OS or browser. For example, it can be used to detect desktop devices pretending to be iPhones, or to distinguish between real Android devices and Android emulators. If you want to learn more about how it works, I advise you to read the excellent Picasso paper or this blog post by Adtechmadness.

The form below enables you to modify the different parameters used to generate the canvas.

Number of rounds: it corresponds to the number of canvas primitives drawn on the canvas. The primitives available are the following: drawing text, an arc, a Bezier curve, a quadratic curve and an ellipse (not in the original Picasso paper).

it corresponds to the number of canvas primitives drawn on the canvas. The primitives available are the following: drawing text, an arc, a Bezier curve, a quadratic curve and an ellipse (not in the original Picasso paper). Canvas width and height: they correspond to the dimension of the canvas generated in pixels.

they correspond to the dimension of the canvas generated in pixels. Offset and multiplier : these parameters are used by the pseudo-random number generator.

: these parameters are used by the pseudo-random number generator. Font size scale factor : this parameter controls the size of the text drawn on the canvas.

: this parameter controls the size of the text drawn on the canvas. Max shadow blur: it represents an upper bound of the maximum blur that can be applied on the canvas at a given round.

Whenever you click on the generate canvas button, it generates a canvas based on the form parameters, as well as a random seed. The code of the canvas and the demo is available on Github. Note that in addition to the four primitives used in the original Picasso paper, I also added an ellipse primitive.