All Projects → mattbrailsford → imprintjs

mattbrailsford / imprintjs

Licence: MIT License
[INACTIVE] Javascript library for browser fingerprinting

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to imprintjs

CycleTLS
Spoof TLS/JA3 fingerprints in GO and Javascript
Stars: ✭ 362 (+370.13%)
Mutual labels:  fingerprint, fingerprinting
Fingerprintjs
Browser fingerprinting library with the highest accuracy and stability.
Stars: ✭ 15,481 (+20005.19%)
Mutual labels:  fingerprint, fingerprinting
refingerprint
A more refined fingerprinting module based on Fingerprint2.js
Stars: ✭ 34 (-55.84%)
Mutual labels:  fingerprint, fingerprinting
Fingerprintjs
Browser fingerprinting library with the highest accuracy and stability.
Stars: ✭ 15,481 (+20005.19%)
Mutual labels:  fingerprint, fingerprinting
Vytal
Browser extension to spoof timezone, geolocation, locale and user agent.
Stars: ✭ 1,449 (+1781.82%)
Mutual labels:  fingerprint, fingerprinting
blog-nojs-fingerprint-demo
A demo for the no-JavaScript fingerprinting article
Stars: ✭ 443 (+475.32%)
Mutual labels:  fingerprint, fingerprinting
browserrecon-php
Advanced Web Browser Fingerprinting
Stars: ✭ 29 (-62.34%)
Mutual labels:  fingerprint, fingerprinting
aztarna
aztarna, a footprinting tool for robots.
Stars: ✭ 85 (+10.39%)
Mutual labels:  fingerprinting
nmap vscan
nmap service and application version detection (without nmap installation)
Stars: ✭ 105 (+36.36%)
Mutual labels:  fingerprint
portsscan
A web client port-scanner written in GO, that supports the WASM/WASI interface for Browser WebAssembly runtime execution.
Stars: ✭ 68 (-11.69%)
Mutual labels:  fingerprinting
hassh-utils
hassh-utils: Nmap NSE Script and Docker image for HASSH - the SSH client/server fingerprinting method (https://github.com/salesforce/hassh)
Stars: ✭ 41 (-46.75%)
Mutual labels:  fingerprinting
GestureLock
手势解锁 指纹解锁,兼容绝大数手机
Stars: ✭ 89 (+15.58%)
Mutual labels:  fingerprint
sourceafis-net
Fingerprint recognition engine for .NET that takes a pair of human fingerprint images and returns their similarity score. Supports efficient 1:N search.
Stars: ✭ 43 (-44.16%)
Mutual labels:  fingerprint
WifiIndoorPositioning
🚀 Evaluation of Location of the device using RSSI values of Access Points and Reference point which are made from Wi-Fi readings
Stars: ✭ 83 (+7.79%)
Mutual labels:  fingerprinting
external-protocol-flooding
Scheme flooding vulnerability: how it works and why it is a threat to anonymous browsing
Stars: ✭ 603 (+683.12%)
Mutual labels:  fingerprinting
AudioAlign
Audio Synchronization and Analysis Tool
Stars: ✭ 80 (+3.9%)
Mutual labels:  fingerprinting
fingerprint-gui
Use fingerprint readers with a Linux desktop environment
Stars: ✭ 47 (-38.96%)
Mutual labels:  fingerprint
Rcpi
Molecular informatics toolkit with a comprehensive integration of bioinformatics and cheminformatics tools for drug discovery.
Stars: ✭ 22 (-71.43%)
Mutual labels:  fingerprint
xxhashdir
⚡Fast filysystem fingerprinting using xxHash
Stars: ✭ 47 (-38.96%)
Mutual labels:  fingerprint
R30X-Fingerprint-Sensor-Library
Arduino library for R30X series optical fingerprint scanners.
Stars: ✭ 13 (-83.12%)
Mutual labels:  fingerprint

ImprintJS Logo

A javascript library for browser fingerprinting.

Demo

Installation

Simply include imprint.min.js in your HTML page. It has no other dependencies.

<script type="text/javascript" src="imprint.min.js"></script>

Usage

To create a fingerprint, instantiate a new instance of the ImprintJs class and call getFingerprint passing in a list of tests you wish to run. The getFingerprint method returns a javascript Promise which once all tests have run, returns the generated fingerprint.

<script type="text/javascript">
    
    var browserTests = [
        "audio",
        "availableScreenResolution",
        "canvas",
        "colorDepth",
        "cookies",
        "cpuClass",
        "deviceDpi",
        "doNotTrack",
        "indexedDb",
        "installedFonts",
        "language",
        "localIp",
        "localStorage",
        "pixelRatio",
        "platform",
        "plugins",
        "processorCores",
        "screenResolution",
        "sessionStorage",
        "timezoneOffset",
        "touchSupport",
        "userAgent",
        "webGl"
    ];

    imprint.test(browserTests).then(function(result){
      console.log(result);
    });

</script>

Supported Tests

Out of the box, ImprintJS comes with the following tests

  • audio
  • availableScreenResolution
  • canvas
  • colorDepth
  • cookies
  • cpuClass
  • deviceDpi
  • doNotTrack
  • indexedDb
  • installedFonts
  • installedLanguages [experimental, inconsistent results]
  • language
  • localIp
  • localStorage
  • mediaDevices [experimental, inconsistent results]
  • pixelRatio
  • platform
  • plugins
  • processorCores
  • publicIp [external request]
  • screenResolution
  • sessionStorage
  • timezoneOffset
  • touchSupport
  • userAgent
  • webGl

Custom Tests

If you'd like to add your own custom test, you can register a new test like so

imprint.registerTest("testAlias", function(){
	return new Promise(function(resolve) {
	    var value = ""; // Some code to perform a test
		return resolve(value);
	});
});

All tests must have an alias, and a factory method that creates a javascript Promise that performs the actual test. We use promises to allow for async tests. On completion, the promise should always resolve. If a value cannot be determined, simply resolve with an empty string.

Known issues

  • Some versions of Firefox for Android report inccorrect screen.height / screen.width values as they subtract the browser chrome when they shouldnt do resulting in inconsistant screenResolution test values. No current workaround. Issue 1120452
  • Firefox for Android reports a color depth of 24 instead of 32 as they percieve the last 8 bits as being alpha and so shouldn't be concidered as part of the color depth. As a workaround, we treat all 32 bit colorDepths as 24 bit. Issue 424386

Acknowledgement

ImprintJS is based heavily on code from a number of libraries, namely

ImprintJS logo modified from fingerprint icon by Lloyd Humphreys from the Noun Project

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].