Giter Site home page Giter Site logo

diversify-project / amiunique Goto Github PK

View Code? Open in Web Editor NEW
681.0 63.0 94.0 7.4 MB

Learn how identifiable you are on the Internet

Home Page: https://amiunique.org/

License: MIT License

ActionScript 0.22% Java 24.88% HTML 19.38% Scala 0.13% JavaScript 53.28% CSS 0.81% TSQL 1.30%
inria kth javascript amiunique privacy fingerprinting insa fp7

amiunique's Introduction

Am I Unique ?

This repository contains all the source code from the AmIUnique.org website.
This application was built using the framework Play 2.3 for the back-end and Bootstrap for the front-end.

Requirements

JDK8 is needed to build the application.

Creation of the database

A database is needed to store the fingerprints. To facilitate the creation process, the "fpDB.sql" file located at the root of the repository contains the structure of the table. You just need to import it with mysqldump or through phpMyAdmin to have everything set up properly. Then, you have to modify the "amiunique-source/website/conf/application.conf" to include your database connection credentials (user and password). Same action required in "amiunique-source /website/conf/META-INF/persistence.xml" to activate the persistence of data.

Launch of the application

Like other play applications, run "./activator run" at the root of the website directory to launch the web application. You will then be able to access your app via "localhost:9000". You may also need to regenerate the Play application secret. To do so, run "play-update-secret" in the Play console.

amiunique's People

Contributors

alejandro-myc avatar antoinevastel avatar bbaudry avatar framartin avatar plaperdr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amiunique's Issues

Firefox plugin gets a bit excited about transient changes

I'm finding that the plugin seems to tell me every few hours that my fingerprint has changed, but all that seems to differ is 'adBlock' status. Now, I have it set so some sites are not blocked while most are, and I wonder whether it is looking a bit too often or something.

If nothing else, perhaps recognising that I have two identical fingerprints that I seem to be toggling between might be advised.

Is Useragent ratio correct?

Hi! Awesome project!

I noticed on various, common browsers on common OS's, User agent ratio always reported < 0.1%. Is that correct? Seems unlikely but could be true so I'd like to verify.

Some examples from three recent (but unique ;) machines:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.46 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36

502 Bad Gateway

This is the error I get when attempting to load any page on the amiunique.org domain.

getting error

I am getting the error run ./activator run from my terminal..
Missing dependency 'object java.lang.Object in compiler mirror', required by /Users/moumitasamanta/.sbt/boot/scala-2.10.5/lib/scala-library.jar(scala/package.class)

scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found.
at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16)
at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:48)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:61)
at scala.reflect.internal.Mirrors$RootsBase.getClassByName(Mirrors.scala:99)
.....

I am using java version
java 10.0.2 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

and in /Users/moumitasamanta/.sbt/boot/
there is two Scala
scala-2.10.5 scala-2.11.7

....
I am new in this domain. I do not know how to resolve the issue. Seeking for a clue ..
Thanks..
Moumita

Use WebGL parameters to improve fingerprinting

The fingerprinting uses a WebGL-rendered image, but does not appear to take in to account the many hardware/driver/implementation-defined WebGL parameters. Take a look at those listed here: http://webglstats.com/

Many parameters like MAX_TEXTURE_SIZE, ALIASED_POINT_SIZE_RANGE, MAX_VARYING_VECTORS, and the availability of the various extensions should provide a lot more identifying information beyond just the pixels in the final rendered image. All this information is available to all sites, and sites like Am I Unique? should make use of them to demonstrate what other fingerprinting libraries are capable of.

High percentages on current website

Disclaimer: This is about amiunique v2, I couldn't find a separate bug tracker for the new version.

If I understand these values correctly, more than 200% of all users in the last 7 days use an english browser and more than 115% use Firefox (For 15, 30 and 90 days these values are above 100% too):

image

This is unlikely to be correct.

TorBrowser always reported as unique

TorBrowser messes up canvas fingerprinting in a way that makes amiunique says the fingerprint is unique, and different, every single time. Sadly it makes amiunique quiet useless with TorBrowser: there is no easy way to know whether the browser is truly unique, or just unique because of the messed up, ephemeral, canvas.

Would you accept a PR which reports Not supported when the canvas result is obviously wrong (like it contains way more or way fewer white pixels than expected) ?

the context of similarity ratios

The similarity ratios describe the components of one's fingerprint in the context of current statistical data. For example, the current data for my browser claim that the user agent "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0" has a current similarity ratio of of 0.13%. The graphs show the context more explicitly, but they hide the current most common statistical value in the database. Showing those values would be even more useful and an act of intellectual honesty.

Languages : ISO 3 letters

Hi,
I'm using Mozilla Firefox in Taqbaylit or Kabyle language and noticed after using AmIunque that the mentionned language is georgian "ka" instead of "kab". The details of the headers are OK on the Details tab.
I'll do more tests later on.
Best regards,

Yes and No answer reversed

After testing your fingerprint the following answer needs to be reversed.

"Are you unique?
Yes! (You can be tracked!)"

This should actually be a "No!"

EDIT: completely wrong, sorry for the confusion..

Adding new metric

Hello,
I have an idea for a new metric. Unfortunately, I have little experience with this framework. I wanted to know if I want to collect a new feature and add it to the application and DB, could you give me some pointers on how to edit the application's code?
Regards and cheers for great work!

Running the github source does not give the same fingerprinting output as shown in the web version (https://amiunique.org/fp)

I found that the fingerprinting information shown when running the github sources in this repository does not give the same that is shown from the web version (https://amiunique.org/fp).

See attached files showing fingerprinting information for github (amiunique_github.pdf) and web versions (amiunique_web.pdf)

Is there a latest source I can get which gives similar fingerprinting output as in the web version?

amiunique_web.pdf
amiunique_github.pdf

Issue when trying to compile code

Hi,

I am trying to run the code on my local machine and I am getting the below error:

[error] C:\amiunique\website\app\controllers\FPController.java:346: non-static method generateToken() cannot be referenced from a static context
[error] Crypto.generateToken
[error] C:\amiunique\website\app\controllers\FPController.java:347: non-static method encryptAES(java.lang.String) cannot be referenced from a static context
[error] Crypto.encryptAES
[error] C:\amiunique\website\app\controllers\StatsController.java:28: non-static method decryptAES(java.lang.String) cannot be referenced from a static context
[error] Crypto.decryptAES

Please let me know what could be the issue.

Thanks in Advance!

WebGL images bug

Visiting the fingerprint page multiple times with the same browser and configuration can yield slightly different images for the WebGL test.
The easiest way I've found to replicate this bug is as follows:

  1. Start up Google Chrome in incognito mode.
  2. Visit the fingerprint page and save the WebGL image.
  3. Visit the fingerprint page a second time and save the WebGL image.
  4. Compare the images, and they'll probably be different.
    Incognito mode seems to be important because the image only seems to be different the first time you visit a page (it might have something to do with cookies or cached content).

Attached are the two differing images. The first is from my first page visit, the second from my second visit.
download1
download2

Add GNOME Web browser

GNOME Web (formerly Epiphany) is the default browser of the GNOME desktop for Linux and *BSDs.

Example User-Agent:

Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Safari/605.1.15 Epiphany/605.1.15

More global statistics

I really like the global satistics, but I think it's lacking some data. There is nothing about content encoding, resolution, timezone and others.
Adding them could help users being more anonymous.

[v2] Add deprecated CSS system colors for testing

I recently stumbled an old page on SitePoint which documents the use of (deprecated) CSS system color properties. The combination of those colors might have been used for fingerprinting as well.

Here's an comparison between (tested in KDE Neon, equivalent to Ubuntu 18.04 LTS / Linux):

  • Firefox: Using the "Dark" theme:
    image

  • Google Chrome: with GTK+ Theme + Dark Mode

  • GNOME Web (Epiphany), where Dark Mode (CSS Media query) has not been implemented

image

The combination of those colors differ between browsers and operating systems, possibly due to differences between User Agent Stylesheets (yes they exist). For example, in Firefox Preview (Android 9.0, Samsung One UI 1.0) some of those values are unsupported and return to Black #000000.

Connection error while running the code

The following steps were performed:

  1. Created a local database and imported fpDB.sql using the command mysql -u user_name -p new_database_name < fpDB.sql
  2. Modified the credentials (user and password) in application.conf and persistence.xml files

Java version:

openjdk version "1.8.0_352"
OpenJDK Runtime Environment (build 1.8.0_352-8u352-ga-1~20.04-b08)
OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode)

Scala Version: 2.11.6

On running ./activator run at the root of the website directory I am getting Configuration error.
The stack trace is:

[error] c.j.b.h.AbstractConnectionHook - Failed to obtain initial connection Sleeping for 0ms and trying again. Attempts left: 0. Exception: java.lang.NullPointerException.Message:Could not create connection to database server.
[error] application - 

! @7pkngm5c8 - Internal server error, for (GET) [/] ->

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
	at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94) ~[play_2.11-2.3.10.jar:2.3.10]
	at play.api.Configuration.reportError(Configuration.scala:743) ~[play_2.11-2.3.10.jar:2.3.10]
	at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:247) ~[play-jdbc_2.11-2.3.10.jar:2.3.10]
	at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:238) ~[play-jdbc_2.11-2.3.10.jar:2.3.10]
	at scala.collection.immutable.List.map(List.scala:273) ~[scala-library-2.11.6.jar:na]
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_352]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_352]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_352]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_352]
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) ~[mysql-connector-java-5.1.33.jar:5.1.33]
Caused by: java.lang.NullPointerException: null
	at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2983) ~[mysql-connector-java-5.1.33.jar:5.1.33]
	at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873) ~[mysql-connector-java-5.1.33.jar:5.1.33]
	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1802) ~[mysql-connector-java-5.1.33.jar:5.1.33]
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206) ~[mysql-connector-java-5.1.33.jar:5.1.33]
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234) ~[mysql-connector-java-5.1.33.jar:5.1.33]

Can anyone please help me with what I am missing here?

Web server timesout

% curl -v https://amiunique.org
*   Trying 193.49.213.21:443...
* connect to 193.49.213.21 port 443 failed: Connection timed out
* Failed to connect to amiunique.org port 443: Connection timed out
* Closing connection 0
curl: (28) Failed to connect to amiunique.org port 443: Connection timed out

Detect active ad blockers

Active ad blocker (class blocker) detection:

var active_blocker_detected = false,
    test = document.createElement('div');
test.innerHTML='&nbsp;';
test.className='adsbox';
document.body.appendChild(test);
window.setTimeout(
  function() {
    active_blocker_detected = (test.offsetHeight == 0);
    test.parentNode.removeChild(test);
}, 250);

Separate category of ad blockers (including AdBlock Plus) from those that only block hosts or by URL (Firefox private window, Firefox Focus, Opera content blocker, Safari mobile extension based blockers, Privacy Badger, etc.).

Is the project discontinued?

This project has not received any update for years. there any plans to further develop this unique tool?
If not, I'm looking for a tool with the ability to identify different browsers and devices through browser fingerprinting to use as a base for my work. Do you know of another open source option?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.