Disable anti-privacy elements in Microsofts Windows 10
Yorick Barbanneau 32a89d1368 Update README 7 months ago
modules.d Add DisableFeatures module 7 months ago
README.md Update README 7 months ago
cleanW10.ps1 Error message details display with Write-Debug 7 months ago
launcher.cmd First commit 2 years ago

README.md

Clean Win10

CleanW10 est un script powershell pour rendre Windows plus respectueux de la vie privée de son|ses utilisateur(s) - Utilisatrice(s). Il réalise tout un tas d’actions afin de désactiver, supprimer, modifier des composant du système et applications tierces.

Ce script est avant tout destiné aux utilisateurs avancés, il réalise beaucoup d’actions normalement réservées aux GPO (version pro et entreprise de Windows mais accessible) via la base de registre, ou autre (désactivation de services par exemple)

Actions réalisées

CleanW10 réalise beaucoup d’actions, en voici une liste non exhaustive :

  • Désinstallation d’applications universelles (ModernApp) pour l’utilisateur et en version provisionnée. Attention, Windows Store sera aussi supprimé.
  • Blocage d’applications dans le pare-feu Windows (explorer, Cortana, Edge). Attention, vous ne pourrez plus utiliser Edge.
  • Blocage d’adresse IP Microsoft connue pour récolter des données de télémétrie. Attention, des IP utilisées pour Skype et Outlook seront bloquées.
  • Blocage de noms de domaine appartenant à Microsoft connus pour récolter des données
  • Désintallation de OneDrive
  • Désactivation des comptes Microsoft. Attention, si vous utilisew des comptes Microsoft sous Windows 10, transformez-le en compte local AVANT de lancer CleanW10.
  • Désactivation des droits pour les applications (caméra, localisation, synchronisation des contacts / calendriers etc.)
  • Modifications des paramètres relatifs au programme d’amélioration de l’expérience utilisateur (apprentissage de la saisie clavier, envoi de rapports d’erreurs …)
  • Désactivation des services relatifs aux données personnelles / de télémétrie.
  • Supression des tâches planifiées problématiques pour les données personelles

Lancer le CleanW10

Par défaut, Windows n’autorise pas l’execution de script powershell non signé ou dont il ne connait pas la signature. Pour exécuter ce script, Il est donc conseillé d’exécuter la commande suivante dans une fenêtre powershell en mode administrateur :

Set-ExecutionPolicy unrestricted

Vous pouvez cependant lancer launcher.cmd en tant qu’administrateur.Il se chargera de basculer la politique de sécurité relative à powershell, de lancer CleanW10 puis de la remettre à son état initial.

Options de la ligne de commande

voici les options du script en ligne de commande :

CleanW10.ps1 -module <path> -dir <path> -debug

-module

Avec cette option vous pouvez executer un seul module. Le paramètre est suivi par le chemin complet du fichier module.

-dir

Cette option donne le chemin complet vers le répertoire contenant les modules à executer, par défaut ./modules.d/. Elle est imcompatible avec -module

-debug

Affiche des information de debug en plus des messages relatifs au script.

Comment ça marche?

Le script fonctionne à partir de modules sous forme de fichiers écrits en JSON. Un module contient un ensemble d’actions à réaliser ainsi que leurs paramètres. Voici un exemple de fichier module :

{
    "name" : "Block Telemetry IPs",
    "description" : "Block IPs relative to Microsoft telemery.",
    "actions" :
    [
        {
            "_comment" : "Block telemetry IPS",
            "action" : "FwBlockOutputIP",
            "file" : "telemetry.txt"
        },
        {
            "_comment" : "Block IP relative to Skype and Messenger",
            "action" : "FwBlockOutputIP",
            "file" : "skype-msn.txt"
         }
    ]  
}

Chaque module contient un nom (name), une description (description) et une série d’actions à réaliser (actions).

Une action contient une instruction à réaliser (ici FwBlockOutputIP), éventuellement un commentaire (_comment) puis un ou plusieurs paramètre(s) en fonction de l’action. Voici une liste des actions disponibles :

Liste des actions

BlockHost

Bloque un ou plusieurs noms d’hôtes via le fichier hosts, les paramètres de cette action sont :

  • host : nom d’hote à bloquer
  • file : nom du fichier contenant une adresse IP par ligne pour un traitement par lots. Voir la section (#fichiers-externes)[fichiers]
  • firewall [Booléen] : Bloque la ou les adresse(s) IP relative au nom d’hôte par le module FwBlockOutputIP

Activer ce paramètre permet de bloquer par le firewall certains hôtes pour lesquels Windows ne prends pas en compte le fichier hosts.

FwBlockOutputIP

Bloque une ou plusieurs adresse(s) IP, les paramètres relatifs à cette action sont :

  • ip : adresse IP à bloquer
  • file : nom du fichier contenant une adresse IP par ligne pour un traitement par lot. Voir la section #fichiers-externes

FwBlockProgram

Bloque un ou plusieurs programmes dans le pare-feu, les paramètres relatifs à cette action sont :

  • name : ce paramètre est utilisé pour créer le nom de la règle du pare-feu Windows - facultatif, utilise le chemin complet si absent
  • path : chemin complet vers l’exécutable à bloquer.
  • file : nom du fichier contenant un chemin par ligne pour un traitement par lot. Voir la section #fichiers-externes

AddRegKey

Ajoute ou modifie une clé de registre. Si une clé concerne l’utilisateur courant (HKCU) alors la clé sera ajoutée / modifiée pour tous les utilisateurs mais aussi sur le gabarit de registre pour la création d’utilisateurs. Les paramètres sont :

  • path : chemin vers la clé
  • key : la clé
  • value : la nouvelle valeur - facultatif
  • type : le type de valeur (DWord QWord, Multistring …) - facutlatif, DWord par défaut

DelRegKey

Supprime une clé de registre, les mêmes actions que pour AddRegKey seront réalisées si la clé concerne HKCU. Les paramètres sont :

  • path : chemin vers la clé
  • key : clé à supprimer.

UninstallModernApp

Désintalle une ou plusieurs applications universelles, les paramètres sont :

  • name : nom de l’application à désintaller
  • removeProvisionned [Booléen] : supprimer aussi des application provisionnées (que le système réinstallera pour tout nouvel utilisateur créé)
  • file : nom du fichier contenant un nom d’ application par ligne pour un traitement par lots. Voir la section fichiers externes

DisableService

Désactive un service, les paramètres sont :

  • name : nom du service à désactiver
  • userService [Booléen] : service est lancé en mode utilisateur. Pour désactiver la création du service par utilisateur, la clé de registre userServiceFlag sera modifiée.
  • file : nom du fichier contenant un nom de service par ligne pour un traitement par lots. Voir la section fichiers externes

RemoveSchedukedTask

Désactive une tâche planifiés, les paramètres sont :

  • name : nom de la tache planifiée
  • path : chemin de la tache planifiée - facultatif
  • file : nom du fichier contenant un nom de tâche par ligne pour un traitement par lots. Voir la section fichiers externes

DisableFeature

Désactive une fonctionnalité de Windows (accessible via dism.exe) les paramètres sont :

  • name : nom de la fonctionnalité
  • file : nom du fichier contenant un nom de fonctionnalité par ligne pour un traitement par lot. Voir la section fichiers externes

KillProcess

Tue un processus, le paramètre est :

  • name : nom du processus à tuer

DelFile

Supprime un fichier / dossier, les paramètres sont :

  • path : chemin du fichier / dossier à supprimer
  • recurse[Booléen] : supprimmer de manière récursive. - facultatif

ExecCommand

Executer un commande, les paramètres sont :

  • path : chemin vers l’exécutable. Celui-ci peut contenir des variables d’environnement powershell comme par exemple "$env:systemroot\, Si la
  • arguments : liste des arguments

Fichiers externes

Pour certaines actions il est possible de charger un fichier externe pour du traitement par lot. Ce peut être le cas pour BlockHost par exemple. Il faut alors renseigner le paramètre file dans l’action correspondante avec le nom du fichier à charger, Celui-ci decra se trouver obligatoirement dans un sous-dossier portant le même nom que le fichier module.

Prenons l’exemple du module FW_Hosts.conf, il contient l’action BlockHost avec commr paramètre file hosts.txt, voici donc l’arborescence obtenue :

modules.d\FW_Hosts\hosts.txt
modules.d\FW_Hosts.conf

Licence

Ce script est disponible sous licence Beeware : utilisez, copiez, modifiez, redistribuez comme ça vous chante. Et offrez-moi une bière si l’on se recontre un de ces 4 (et si ça vous chante).