diff --git a/README.md b/README.md index 79e1a67..52372fc 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,247 @@ -Win10 privacy helper script -========================== +Clean Win10 +=========== -This Powershell script disable some anti-privacy Windows 10 features. -I created this for my work needs. +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. - * redirect some Microsoft domain known to 0.0.0.0 - * add firewall rules to block some Ms IP used to collect data - * disable some Windows 10 features (Fax, MediaPlayer ...) - * disable somes services - * disable most Modern Apps (because there are useless ...) - * disable some task - * write plenty of reg key to disable some features : - * advertising - * geolocation - * telemetry - * disable apps righs - * disable MS Account for login - * Onedrive - * (...) +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) -### Warning! +# Actions réalisées -Do not use this script if you're logged with a MS Account on your -Windows sesssion. Because this script disable MS Account, your account -may be blocked and you could not login again. +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.) + * 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 -dir -debug +``` + +### -module + +Avec cette option vous pouvez executer un seul module. Le parametre 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. Il y +en a très peu (pour le moment) + +# 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 : + +```JSON +{ + "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``). + +uen action contient une action à 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 nom(s) d'hôte via le fichier hosts, les paramètres de ce +module 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 à ce module +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](fichiers) + + +### FwBlockProgram + +Bloque un ou plusieurs programme(s) dans le pare-feu, les paramètres relatifs à +ce module 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](fichiers) -### Licence +### AddRegKey -Do what you're want with it and feel fre to offer me a beer :) +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 plusiers application(s) universelle(s), 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](fichiers) + +### 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](fichiers) + +### 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](fichiers) + +## 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](fichiers) + +### KillProcess + +Tue un processus, le paramètre est : + + * ``name`` : nom du processus à tuer + +### DelFile + +Supprime un fichier / dossier, les parametres sont : + + * ``path`` : chemin du fichier / dossier à supprimer + * ``recurse``[Booléen] : supprimmer de manière récursive. - facultatif + +### ExecCommand + +Executer un commande, les parametres sont : + + * ``path`` : chemin vers l'exécutable. Celui-ci peut contenur 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 lots. 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. + +Prenom 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).