Display (Screen) Fingerprint

Background

Display device fingerprinting is one of the most basic tried and true data points in any fingerprint script. There are a number of objects available to determine the height and width of the screen, the available height and width, color depth, pixel density, etc. When taken together the outcome is powerful. The downside to this print is that it relatively easy for a user to alter, however most users leave these settings alone.

How It Works

The code below fingerprints the display of the client's device is utilizing via several windows.screen objects. The figure below illustrates the difference between the width/height and the available width/height.

As seen above the available width/height lets you know where the tool bar is positioned (top/bottom, left/right or in rare cases one does not exist). The code collects the width and height along with the available width and height and color depth.

Entropy Estimate: 10.1 bits, though as resolutions increase so will the entropy.

Code

The JavaScript function below fingerprints the display. 

Source Code

function fingerprint_display() {

    "use strict";

    var strSep, strOnError, strScreen, strDisplay, strOut;

 

    strSep = "|";

    strOnError = "Error";

    strScreen = null;

    strDisplay = null;

    strOut = null;

 

    try {

        strScreen = window.screen;

        if (strScreen) {

            strDisplay = strScreen.width + strSep + strScreen.height + strSep + strScreen.availWidth + strSep + strScreen.availHeight + strSep + strScreen.colorDepth;

        }

        strOut = strDisplay;

        return strOut;

    } catch (err) {

        return strOnError;

    }

}

Validation

Unlike other code on the Internet we do everything possible to verify our code for you. In order to minimize problems and maximize compatibility this code has been verified with JSLint and has been extensively tested with over 1100 OS/Browser combinations using BrowserStack.

Reference

Fingerprinting Attacks on Screen Resolution (May 29, 2014). In B3RN3D. Retrieved September 01, 2017, from http://www.b3rn3d.com/blog/2014/05/29/fingerprinting-resolution/

How Unique Is Your Browser? (2010). In Electronic Frontier Foundation. Retrieved September 01, 2017, from https://panopticlick.eff.org/static/browser-uniqueness.pdf