Choose: Simple Style

Fingerprinting AudioContext

║▌║▌│█║▌║│█│█║║║▌│

/Tracking/Fingerprinting/active/audiocontext/

  • $ fingerprint@info:~ echo $AUDIOCONTEXT
  • Name:

    AudioContext

    Original feature purpose:

    The Web Audio API provides a powerful and versatile system for controlling audio on the Web, allowing developers to choose audio sources, add effects to audio, create audio visualizations, apply spatial effects (such as panning) and much more.
    The Web Audio API involves handling audio operations inside an audio context, and has been designed to allow modular routing. Basic audio operations are performed with audio nodes, which are linked together to form an audio routing graph. Several sources — with different types of channel layout — are supported even within a single context. This modular design provides the flexibility to create complex audio functions with dynamic effects. For more details see, e.g., MDN web docs


    FP-Explanation:

    AudioContext Fingerprinting scripts were found in the wild by Steven Englehardt during his study Online Tracking: A 1-million-site Measurement and Analysis (2016). The tracking scripts use OscillatorNodes to create periodic waveforms, such as a sine wave or a triangle wave. The output is passed to different nodes, such as AnalyserNodes, ScriptProcessorNodes, DynamicsCompressorNodes, which process, analyze or alter the incoming audio signals. Intermediate and final outputs are hashed and used as fingerprint. The crafted audio signals depend on the client's browser and system. Clients with different software and hardware shield differences in the created system-dependent audio signals, but the same client will shield the same results.


    FP-Type:

    active

    FP-Categories:

    js, js-attrib, html5, hardware-dependent, software-dependent, consistent

    Counter-measures:

    • Disable Web Audio API
      Description: Disable Web Audio API via browser settings or Addon to block Audio Fingerprinting.

    Publications/References:


  • $ fingerprint@info:~ run audiocontext-demo
  • Demo:

    >> Jump to AudioContext Fingerprinting Demo <<


Audio Fingerprint test taken from AudioContext Fingerprinting Test Page made by Princeton Web Census.

Click here to start the Test

AudioContext Fingerprinting: Results

▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

AudioContext properties Hash: Hit the button above to start the test.
DynamicsCompressor (sum of buffer values): Hit the button above to start the test.
DynamicsCompressor (hash of full buffer): Hit the button above to start the test.
OscillatorNode Hash: Hit the button above to start the test.
Hybrid of OscillatorNode/DynamicsCompressor Hash: Hit the button above to start the test.
Overall AudioContext Fingerprint: Hit the button above to start the test.

Refresh page.

Visualization:

Click this button to get a visualization of your Audio Fingerprinting Test results.

AudioContext Fingerprints

▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

AudioContext properties:

Click this button to start the Audio Fingerprinting Test.

Fingerprint using DynamicsCompressor (sum of buffer values):

Click this button to start the Audio Fingerprinting Test.

Fingerprint using DynamicsCompressor (hash of full buffer):

Click this button to start the Audio Fingerprinting Test.

Fingerprint using OscillatorNode:

Click this button to start the Audio Fingerprinting Test.

Fingerprint using hybrid of OscillatorNode/DynamicsCompressor method:

Click this button to start the Audio Fingerprinting Test.