===== Application HTA =====
Un fichier .hta est une application web. On peut intercaler du code batch dedans, j'ai trouvé ce fichier en farfouillant sur le net, à adapter selon vos besoins. Ce script permet de saisir la nouvelle clé windows via une petite fenêtre web, la clé est ensuite récupérée par le script batch et envoyée à windows via slmgr (qui est lui même un script VB…).
* **test.hta** HTA GUI Form
===== Réactiver le "menu F8" sur Windows 10 =====
==== Système courant ====
bcdedit /set {default} bootmenupolicy legacy
==== Système "offline" ====
C'est à dire depuis un WinPE par exemple. Ne pas oublier de mettre la lettre de lecteur qui correspond à la partition "Réservé au système" du système cible.
bcdedit /store C:\Boot\BCD /set {default} bootmenupolicy legacy
===== Définir le fond d'écran via CMD =====
La première ligne défini le fond d'écran, la deuxième actualise.
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "X:\chemin\image.jpg" /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
===== Nettoyer windows =====
Attention, il vaut mieux fermer toutes vos applications avant d'effectuer un nettoyage de Windows.
==== Temporaires avec PowerShell ====
Cette commande va supprimer tous le contenu (récursivement) des dossiers indiqués dans la variable **$tempfolder**.
$tempfolders = @("C:\Windows\Temp\*", "C:\Windows\Prefetch\*", "C:\Documents and Settings\*\Local Settings\temp\*", "C:\Users\*\Appdata\Local\Temp\*")
Remove-Item $tempfolders -force -recurse
==== Désinstaller les AppX ====
Ouvrir PowerShell en tant qu'admin
Désinstaller toutes les appx, pour tous les users
Get-AppxPackage -allusers * | Remove-AppxPackage -allusers
Désinstaller toutes les appx, pour l'user courant
Get-AppxPackage * | Remove-AppxPackage
Désinstaller définitivement les appx, pour tous les users
# commande originale
Get-AppxProvisionedPackage -Online | where {$_.PackageName -like $app} | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
# commande à tester
Get-AppxProvisionedPackage -Online * | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
[[https://www.pdq.com/blog/remove-appx-packages/|source]]
===== Purger le spooler d'impression =====
Ca peut arriver que la couche impression soit buguée sur Windows. Une des astuces consiste à nettoyer le spooler en stopant le service, supprimant le contenu du tampon, et redémarrer le service. Le tout se fait dans un CMD lancé en Administrateur.
net stop spooler
DEL /F /S /Q %systemroot%\System32\spool\PRINTERS\*
net start spooler
===== Réseau =====
==== Réinitialiser la couche réseau ====
netsh winsock reset all
netsh int ip reset
==== Voir son IP publique ====
Méthode “normale” (on voit le serveur DNS, et l'IP publique)
nslookup myip.opendns.com resolver1.opendns.com
Méthode plus complexe (on ne voit que l'IP publique, peut être utile dans un script)
for /F "tokens=2 skip=4 delims= " %a in ('nslookup myip.opendns.com resolver1.opendns.com ^2^>NUL') do @echo %a
===== Utilisateurs et mots de passe =====
==== CMDs ====
^Action^Commande|
|Créer un utilisateur et son mot de passe (idem changement mdp)|
net user [login] [pass] /add
|
|Créer un utilisateur et son mot de passe sur le domaine|
net user [login] [pass] /add /domain
|
|Passer l'utilisateur admin du poste|
net localgroup administrators [login] /add
|
|Activer le compte administrateur|
net user administrateur /active:yes
|
|Supprimer un utilisateur|
net user [login] /delete
|
^switch^action^
|/fullname:"Nom Prenom"|Créer un user dont le nom complet est "Nom Prenom"|
|
==== Supprimer un mot de passe inconnu ====
=== Méthode "utilman" ===
À partir de Windows Vista.
* démarrer sur un live usb/cd de linux ou windows
* aller dans c:\windows\system32\
* renommer cmd.exe > cmd.old
* renommer utilman.exe > cmd.exe
* renommer cmd.old > utilman.exe
* redémarrer sur windows
* Windows + U cela va ouvrir utilman.exe qui est en fait le cmd.exe qu’on a renommé
* taper net user [username] “” pour définir un mot de passe vide (= le supprimer).
* C’est terminé. Redémarrer sur le live pour renommer les fichiers dans le sens inverse.
* Si cette technique n'a pas fonctionner on peut aussi créer un utilisateur admin en suivant les commandes ci-dessous…
=== Méthode linux (avec chntpw) ===
Cette technique peut être effectuée depuis une distro installée ou démarrée en Live (CD/USB).
== Installation de chntpw ==
Archlinux / Manjaro
sudo pacman -Sy chntpw
Debian / Ubuntu / Mint
sudo apt install chntpw
== Monter la partition ==
Si vous démarrer sur un Live, la partition Windows sera probablement /dev/sda2 (la sda1 étant celle “Réservé au système”). Attention si c'est un Windows installé en GPT/EFI il y a de forte chance pour que ce soit la sda3 ou sda4, je suggère donc de commencer par lister avec fdisk.
sudo mkdir /mnt/windows # création du point de montage
sudo fdisk -l # on repère la partition windows (c'est généralement la plus grosse)
sudo mount /dev/sda2 /mnt/windows
== chntpw ==
sudo chntpw /mnt/windows/Windows/System32/config/SAM -i
===== Autre =====
==== Cacher une fenêtre ====
Le processus reste visible dans le gestionnaire des tâches, mais la fenêtre est complètement cachée. Nous prenons dans tous les exemples le programme notepad.exe
=== Méthode VB ===
Utiliser le script VB suivant :
* **hide-notepad.vbs**
Dim WShell
Set WShell = CreateObject("WScript.Shell")
WShell.Run "Notepad.exe", 0
Set WShell = Nothing
=== Méthode PS ===
La méthode powershell s’effectue avec la commande PS suivante :
Start-Process -WindowStyle hidden -FilePath Notepad.exe
[[https://winaero.com/blog/run-a-program-hidden-in-windows-10/|source]]
==== Cacher un processus ====
Le processus ne serait pas visible par le gestionnaire de tache…. par contre je galère vraiment à trouver des infos la dessus. J'ai trouvé [[https://www.adlice.com/runpe-hide-code-behind-legit-process/|ce code]] mais je ne sais pas du tout comment l'exploiter. Apparemment Sony avait développé un rootkit pour ça… mais je ne trouve pas grand chose d'exploitable non plus.
==== Taille d'un dossier (PS) ====
"{0:N2} MB" -f ((Get-ChildItem .\DOSSIER -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB)