All Projects → Spirals-Team → FPStalker

Spirals-Team / FPStalker

Licence: AGPL-3.0 license
Repo of code for FPStalker article

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to FPStalker

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 (+245.83%)
Mutual labels:  fingerprinting, fingerprinting-algorithm
website-fingerprinting
Deanonymizing Tor or VPN users with website fingerprinting and machine learning.
Stars: ✭ 59 (+145.83%)
Mutual labels:  fingerprinting, fingerprinting-algorithm
Stream Audio Fingerprint
Audio landmark fingerprinting as a Node Stream module
Stars: ✭ 697 (+2804.17%)
Mutual labels:  fingerprinting
Mercury
Mercury: network metadata capture and analysis
Stars: ✭ 203 (+745.83%)
Mutual labels:  fingerprinting
Windows 10 Hardening
Windows 10 hardening guide without gimmicks
Stars: ✭ 102 (+325%)
Mutual labels:  fingerprinting
Hfinger
Hfinger - fingerprinting HTTP requests
Stars: ✭ 63 (+162.5%)
Mutual labels:  fingerprinting
Tor Fingerprint
Tor Browser and Tails version fingerprint PoC
Stars: ✭ 123 (+412.5%)
Mutual labels:  fingerprinting
Amiunique
Learn how identifiable you are on the Internet
Stars: ✭ 581 (+2320.83%)
Mutual labels:  fingerprinting
Jimagehash
Perceptual image hashing library used to match similar images
Stars: ✭ 228 (+850%)
Mutual labels:  fingerprinting
Creepjs
Creepy device and browser fingerprinting
Stars: ✭ 85 (+254.17%)
Mutual labels:  fingerprinting
Fingerprintjs
Browser fingerprinting library with the highest accuracy and stability.
Stars: ✭ 15,481 (+64404.17%)
Mutual labels:  fingerprinting
Aurio
Audio Fingerprinting & Retrieval for .NET
Stars: ✭ 84 (+250%)
Mutual labels:  fingerprinting
Jekyll Minibundle
A minimalistic asset bundling plugin for Jekyll
Stars: ✭ 65 (+170.83%)
Mutual labels:  fingerprinting
Whatwaf
Detect and bypass web application firewalls and protection systems
Stars: ✭ 1,881 (+7737.5%)
Mutual labels:  fingerprinting
Kirby Sri
Subresource integrity hashing & cache-busting static assets for Kirby
Stars: ✭ 9 (-62.5%)
Mutual labels:  fingerprinting
Scannerl
The modular distributed fingerprinting engine
Stars: ✭ 208 (+766.67%)
Mutual labels:  fingerprinting
Canvasblocker
A Firefox extension to protect from being fingerprinted.
Stars: ✭ 608 (+2433.33%)
Mutual labels:  fingerprinting
Ffck
🦊 & 🧅 hardening
Stars: ✭ 72 (+200%)
Mutual labels:  fingerprinting
Nothing Private
Do you think you are safe using private browsing or incognito mode?. 😄 👿 This will prove that you're wrong.
Stars: ✭ 1,375 (+5629.17%)
Mutual labels:  fingerprinting
waycup
A minimal tool that hides your online assets from online security scanners, researchers and hackers.
Stars: ✭ 100 (+316.67%)
Mutual labels:  fingerprinting

Repo containing the code of FPStalker's paper.

Create virtual environment and install dependencies

Run the command below to create a virtual environment.

virtualenv --python=/usr/bin/python3 myvenv

Then activate the virtual environment.

. myvenv/bin/activate

Finally, install the dependencies.

pip install -r requirements.txt

Database

Create a database that will contain the table that stores the fingerprints. Then, you have two solutions:

  • Run the command below to generate a sql file tableFingerprints.sql with few fingerprints. It contains 15k fingerprints in this table that were randomly sampled from the first half of the raw dataset, i.e. with no filter. The reason we split the table in two files is to overcome the Github storage limit.
tar zxvf extension1.txt.tar.gz; tar zxvf extension2.txt.tar.gz; cat extension1.txt extension2.txt > tableFingerprints.sql
  • Import extensionDataScheme.sql that contains only the scheme of the table to stores the fingerprints.

Change the connection to the database at the top of the main with your credentials.

Get ids of browser instances with countermeasures

python main.py getids

It generates a file called "consistent_extension_ids.csv" in data folder.

Launch evaluation process of a linking algorithm

python main.py auto myexpname nameoflinkingalgo 6

Where "myexpname" is the name of your experiment so that it can be used to prefix filenames, "nameoflinkingalgo" is either eckersley or rulebased, and 6 must be replaced by the minimum number of fingerprints a browser instance need to be part of the experiment.

For the Panopticlick/Eckersley linking algorithm

python main.py auto myexpname eckersley 6

For the rule-based linking algorithm

python main.py auto myexpname rulebased 6

For the hybrid linking algorithm

python main.py automl myexpname 6

In current state, it loads the random forest model contained in the data/my_ml_model. It was generated on the conditions specified in the article, i.e. To train a new model, one just needs to change the load parameter of the train_ml function (in main) to False. In order to optimize the lambda parameter, you just need to launch

python main.py lambda

Benchmark

For the hybrid algorithm:

python automlbench myfilesprefix 4

Where 4 has to be replaced by the number of cores on your machine.

For the rule-based algorithm:

python autorulesbench myfilesprefix 4
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].