# Windows

# Activation Windows avec KMS spico



# Access Linux filesystems in Windows and WSL 2

https://devblogs.microsoft.com/commandline/access-linux-filesystems-in-windows-and-wsl-2/

# Powershell

# Disk Comandline

wmic diskdrive list brief

# Diskpart



# Profile

Le script chargé de base est dans la variable

`$PROFILE`

Contexte -	Scope	Emplacement

Utilisateur courant - 
Shell courant	Affecte uniquement l'utilisateur actuel et la session PowerShell en cours	
```
$PROFILE = C:\Users\{NomUtilisateur}\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
```

Utilisateur courant -
Tous les shells	Affecte l'utilisateur actuel mais tous les hôtes PowerShell (Windows PowerShell, VS Code, etc.)	
```
$PROFILE.AllUsersCurrentHost = C:\Users\{NomUtilisateur}\Documents\PowerShell\Profile.ps1
```

Tous les utilisateurs -
Shell courant	Affecte toutes les sessions PowerShell pour tous les utilisateurs	
```
$PROFILE.AllUsersCurrentHost = C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
```

Tous les utilisateurs -
Tous les shells	Affecte tous les utilisateurs et tous les hôtes PowerShell	
```
$PROFILE.AllUsersAllHosts = C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
```

# Profile : Examples

```powershell
##write-host "+$("-"*21)" -fore yellow -NoNewline
##write-host "  " -BackgroundColor blue  -NoNewline
##write-host "  " -BackgroundColor white -NoNewline
##write-host "  " -BackgroundColor red   -NoNewline
##write-host "$("-"*21)+" -fore yellow
##write-host "Â¦ Bonjour " -fore yellow -NoNewline
##write-host ("$env:username").padright(38," ") -fore green -NoNewline
##write-host " Â¦" -fore yellow 
##write-host "Â¦ Vous Ãªtes connectÃ© sur le PC " -fore yellow -NoNewline
##write-host ("$env:computername").PadRight(17," ") -fore green -NoNewline
##write-host " Â¦" -fore yellow 
##write-host "+$("-"*48)+" -fore yellow


#Variables 
#$MyIPpub      = (Invoke-WebRequest -uri "http://ifconfig.me/ip").Content
$ObjNet       = gwmi win32_networkadapterconfiguration
$MyIPlocal    = Get-NetIPConfiguration -IfIndex "56" 
$MyIPlocal    = $MyIPlocal.IPv4Address | Select-Object IPAddress
$MyIPlocal    = $MyIPlocal.IPAddress
$disk = D:\Documents\WindowsPowerShell\espace_disque_dispo.ps1


##Function
function disk(){

Get-WmiObject -Class Win32_LogicalDisk | 
    Select-Object -Property DeviceID, @{
       label='FreeSpace'
       expression={($_.FreeSpace/1GB).ToString('F2')}
    }
}

#Affichage Début Cage
write-host "╒$("═"*48)╕" -fore gray

#Nom de l'Utilisateur
write-host "│ Utilisateur connecté : " -fore gray -NoNewline
write-host ("$env:username").padright(23," ") -fore white -NoNewline
write-host " │" -fore gray 

#Nom de la Machine
write-host "│ Nom de la machine : " -fore gray -NoNewline
write-host ("$env:computername").PadRight(26," ") -fore white -NoNewline
write-host " │" -fore gray 
################################IP ADDR####################################
#IP Publique
#Write-Host "│ IP publique : " -fore gray -NoNewline
#Write-Host ("$MyIPpub").PadRight(32," ") -fore White -NoNewline
#Write-Host " │" -fore gray

#IP Local
Write-Host "│ IP local : " -fore gray -NoNewline
Write-Host ("$MyIPlocal").PadRight(35," ") -fore White -NoNewline
Write-Host " │" -fore gray
################################DISK####################################
#Espace Disponible Disque C:
write-host "│ Espace Disk Disponible " -fore gray -NoNewline
write-host $disk.DeviceID[0] -fore gray -nonewline
write-host (" "+$disk.FreeSpace[0]+ "Go").PadRight(21," ") -fore white -nonewline
write-host " │" -fore gray

#Espace Disponible Disque D:
write-host "│ Espace Disk Disponible " -fore gray -NoNewline
write-host $disk.DeviceID[1] -fore gray -nonewline
write-host (" "+$disk.FreeSpace[1]+ "Go").PadRight(21," ") -fore white -nonewline
write-host " │" -fore gray

#Espace Disponible Disque J:
write-host "│ Espace Disk Disponible " -fore gray -NoNewline
write-host $disk.DeviceID[2] -fore gray -nonewline
write-host (" "+$disk.FreeSpace[2]+ "Go").PadRight(21," ") -fore white -nonewline
write-host " │" -fore gray


#Affichage Fin Cage
write-host "╘$("═"*48)╛" -fore gray
```

# PKTMON - Cheat Sheet Administrateur Windows

> PKTMON (Packet Monitor) est un outil natif Windows permettant de capturer et d'analyser le trafic réseau sans installer de logiciel tiers.

---

# Vérifier la configuration actuelle

Afficher les filtres actifs :

```powershell
pktmon filter list
```

Afficher les composants monitorés :

```powershell
pktmon comp list
```

Afficher l'aide :

```powershell
pktmon help
```

---

# Nettoyer les filtres

Supprimer tous les filtres :

```powershell
pktmon filter remove
```

---

# Capturer un port spécifique

## UDP

Capturer le port UDP 20500 :

```powershell
pktmon filter add -p 20500
```

## TCP

Capturer le port TCP 443 :

```powershell
pktmon filter add -p 443
```

Lister les filtres :

```powershell
pktmon filter list
```

---

# Capture temps réel

Démarrer une capture en temps réel :

```powershell
pktmon start --etw -m real-time
```

Arrêter la capture :

```powershell
pktmon stop
```

---

# Capture vers un fichier

Démarrer l'enregistrement :

```powershell
pktmon start --capture --pkt-size 0
```

Arrêter :

```powershell
pktmon stop
```

Fichier généré :

```text
PktMon.etl
```

---

# Export de capture

## Conversion en texte

```powershell
pktmon format PktMon.etl -o Capture.txt
```

## Conversion Wireshark

```powershell
pktmon etl2pcap PktMon.etl -o Capture.pcapng
```

---

# Exemples de lecture

## Trafic entrant

```text
Direction Rx
192.168.1.10.50000 > 10.0.0.10.20500
```

Signification :

```text
Client  : 192.168.1.10
Port    : 50000

Serveur : 10.0.0.10
Port    : 20500
```

Le serveur reçoit un paquet.

---

## Trafic sortant

```text
Direction Tx
10.0.0.10.20500 > 192.168.1.10.50000
```

Le serveur répond au client.

---

## Validation d'un flux fonctionnel

```text
Rx
192.168.1.10.50000 > 10.0.0.10.20500

Tx
10.0.0.10.20500 > 192.168.1.10.50000
```

Interprétation :

```text
✓ Trafic reçu
✓ Application joignable
✓ Réponse envoyée
```

---

# Filtrer par adresse IP

Capturer uniquement une IP :

```powershell
pktmon filter add -i 192.168.1.10
```

Capturer plusieurs IP :

```powershell
pktmon filter add -i 192.168.1.10
pktmon filter add -i 192.168.1.20
```

---

# Capture pour analyse Wireshark

Méthode recommandée :

```powershell
pktmon filter remove

pktmon filter add -p 20500

pktmon start --capture --pkt-size 0
```

Faire le test.

```powershell
pktmon stop
```

Convertir :

```powershell
pktmon etl2pcap PktMon.etl -o Capture.pcapng
```

Ouvrir directement dans Wireshark.

---

# Rechercher une application liée à un port

## UDP

```powershell
Get-NetUDPEndpoint |
Where-Object LocalPort -eq 20500
```

## TCP

```powershell
Get-NetTCPConnection |
Where-Object LocalPort -eq 443
```

---

# Associer un PID à un processus

```powershell
Get-Process -Id 1234
```

Ou :

```powershell
(Get-Process -Id 1234).Path
```

Résultat :

```text
C:\Program Files\Application\App.exe
```

---

# Vérifier rapidement le pare-feu

Règles contenant un port :

```powershell
Get-NetFirewallRule |
Where-Object DisplayName -match "20500"
```

Ports ouverts :

```powershell
Get-NetFirewallPortFilter |
Where-Object LocalPort -eq 20500
```

---

# Workflow recommandé

## 1. Supprimer les filtres

```powershell
pktmon filter remove
```

## 2. Ajouter le port

```powershell
pktmon filter add -p 20500
```

## 3. Démarrer la capture

```powershell
pktmon start --etw -m real-time
```

## 4. Réaliser le test applicatif

## 5. Vérifier

```text
Rx uniquement
```

→ Requête reçue.

```text
Rx + Tx
```

→ Communication bidirectionnelle.

```text
Aucune trace
```

→ Le trafic n'arrive pas sur le serveur.

## 6. Arrêter

```powershell
pktmon stop
```

---

# Commandes essentielles à retenir

```powershell
pktmon filter remove

pktmon filter add -p 20500

pktmon start --etw -m real-time

pktmon start --capture --pkt-size 0

pktmon stop

pktmon format PktMon.etl -o Capture.txt

pktmon etl2pcap PktMon.etl -o Capture.pcapng
```

# Modifier une table de partition GPT vers MBR

shift + F10
diskpart

list disk

SELECT DISK NUM
SELECT DISK 5

Vider le contenu du disk
clean

Puis convertissez la table de partition
convert MBR