Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ubercookie — Démo éducative d'evercookie montrant comment les techniques de stockage du navigateur et de cache HTTP peuvent ré-identifier de manière persistante un visiteur. | Kitploit
Outils/GitHubGitHub/elpy1/ubercookie
OSINT (Renseignement de Sources Ouvertes)Évasion IDS/IPSSécurité WebProtection de la Vie PrivéeApprentissage et ÉducationUsurpation d'Empreinte Numérique
GitHubelpy1/ubercookie

ubercookie

Démo éducative d'evercookie montrant comment les techniques de stockage du navigateur et de cache HTTP peuvent ré-identifier de manière persistante un visiteur.

Voir le dépôt
1124il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

🍪 ubercookie

Une démonstration éducative de la façon dont les sites web vous identifient de manière persistante — et pourquoi « effacer vos cookies » ne suffit plus.

ubercookie place un seul identifiant aléatoire dans 12 vecteurs de stockage différents du navigateur à la fois. Chaque fois que vous visitez, il les lit tous, prend un consensus et réécrit l'identifiant partout. Effacez un seul stockage — ou même tous vos cookies — et les survivants le réaniment silencieusement. Le site vous montre, en langage clair, exactement où votre identifiant se cache et combien de fois il a reconnu votre navigateur.

C'est la même idée derrière le classique evercookie de Samy Kamkar — construit ici comme un outil pédagogique ouvert et transparent axé sur la résurrection du stockage et la persistance des supercookies.

[!IMPORTANT] Ce projet suit intentionnellement le visiteur, dans un but de sensibilisation. Il est uniquement first-party, ne stocke qu'un identifiant aléatoire, des compteurs de visites, des horodatages de première/dernière visite, et des étiquettes de source de récupération, ne partage rien avec des tiers, et fournit un véritable bouton « Oubliez-moi ». Ne le réutilisez pas pour suivre des personnes à leur insu ou sans leur consentement — c'est le contraire du but. Voir Éthique.


Ce qu'il démontre

VecteurTypeNécessite JS ?Effaçable depuis JS ?Ce qu'il enseigne
document.cookieclientouiouiLe traceur de base
localStorageclientouiouiSurvit à l'effacement des cookies
sessionStorageclientouiouiRedondance par onglet
IndexedDBclientouiouiUne base de données entière que les gens oublient de vider
Cache API (caches)clientouiouiStockage programmable, distinct des précédents
window.nameclientouiouiPersiste entre les navigations
OPFS (Origin Private File System)clientouiouiUn système de fichiers en bac à sable que les nettoyages manuels oublient
Service Worker + CacheclientouiouiUn script en arrière-plan ressort l'identifiant, même hors ligne
Cookie serveur (HttpOnly)serveurnonvia le serveurInvisible pour JS, toujours envoyé à chaque requête
Supercookie ETagserveurnonvidage du cache uniquementIdentifiant renvoyé dans If-None-Match
Supercookie Last-Modifiedserveurnonvidage du cache uniquementIdentifiant encodé dans la date de la ressource mise en cache
Cache HTTP (script avec identifiant intégré)serveurnonvidage du cache uniquementIdentifiant intégré dans un fichier cache immutable

En plus de cela, la page demande au navigateur un stockage persistant (navigator.storage.persist()), ce qui exempte les copies IndexedDB / Cache / Service Worker / OPFS de l'éviction automatique — les rendant encore plus difficiles à éliminer.

Les trois vecteurs basés sur le cache sont la punchline de la persistance : ils vivent dans le cache HTTP du navigateur, donc JavaScript (y compris notre propre « Oubliez-moi ») ne peut pas les supprimer — seul le vidage du cache de votre navigateur le peut. C'est ainsi que l'identifiant revient d'entre les morts.

Une description complète des vecteurs de stockage implémentés, plus l'idée du supercookie HSTS qui s'intègre encore à ce projet, se trouve dans docs/techniques.md.


Architecture

ubercookie/
├── backend/            FastAPI — server-side vectors + the observation log (SQLite)
│   └── app/
│       ├── main.py     endpoints: /api/visit, /api/whoami, /api/etag-id,
│       │               /api/lastmod-id, /api/cache-id.js, /api/clear-cookie,
│       │               /api/forget
│       ├── store.py    "we've seen this browser N times" memory
│       └── ids.py      mint/validate the 32-hex tracking id
└── frontend/           Vanilla JS + Vite — the dashboard and the client vectors
    └── src/ubercookie/
        ├── index.js    orchestrator: read-all → consensus → respawn → report
        └── vectors/    one self-contained module per storage vector

Comment fonctionne une visite (frontend/src/ubercookie/index.js) :

  1. Lire tous les vecteurs en parallèle.
  2. Consensus — choisir l'identifiant sur lequel la plupart des vecteurs s'accordent (ou aucun, si vous êtes nouveau).
  3. Rapport au serveur, qui crée un identifiant frais si vous n'en aviez pas, enregistre la visite et définit le cookie HttpOnly.
  4. Résurrection — écrire cet identifiant unique dans tous les vecteurs qui en étaient dépourvus.

Démarrage rapide

Nécessite Python ≥ 3.11 (avec uv) et Node ≥ 18.

make install        # backend deps (uv) + frontend deps (npm)

# then, in two terminals:
make backend        # FastAPI on http://localhost:8000
make frontend       # Vite on  http://localhost:5173  (proxies /api → :8000)

Ouvrez http://localhost:5173 et observez-vous être suivi. Ouvrez DevTools, supprimez quelques stockages, cliquez sur Re-scanner, et regardez-les réapparaître.

Ligne unique pour les deux serveurs à la fois : ./scripts/dev.sh

Style production (FastAPI sert le frontend compilé, origine unique)

make build                                   # → frontend/dist
cd backend && uv run uvicorn app.main:app --port 8000
# open http://localhost:8000

Servir les deux depuis une seule origine est la configuration la plus fidèle, car les vecteurs cache/ETag dépendent du véritable cache HTTP de même origine.


Tests

make test           # backend pytest (server-side vector logic + observation log)
make build          # frontend production build

Les tests backend exercent les vecteurs côté serveur et le journal d'observation. Le comportement du navigateur nécessite encore un vrai navigateur pour vérification car plusieurs vecteurs dépendent du stockage d'origine, des Service Workers et du cache HTTP.


Éthique

C'est un outil défensif / de sensibilisation. Directives intégrées dans la conception :

  • Transparence — chaque valeur stockée est affichée à l'utilisateur sur la page.
  • First-party uniquement — aucune requête tierce, aucun suivi inter-sites.
  • Données minimales — un identifiant aléatoire, des horodatages de première/dernière visite, un compteur de visites et des étiquettes pour les vecteurs qui ont récupéré l'identifiant. Aucune donnée personnelle (PII) et rien ne quitte le serveur.
  • Réel désabonnement — le bouton Oubliez-moi efface tout ce qui est accessible et supprime l'enregistrement serveur ; la page est honnête sur ce que seul un vidage du cache peut supprimer.

Veuillez garder tout fork dans le même esprit : utilisez-le pour enseigner aux gens comment fonctionne le suivi afin qu'ils puissent se défendre, pas pour les suivre discrètement.


Licence

MIT — voir LICENSE.

Télécharger l’outil