PowerShell : Introduction au module PSDecode
Sommaire
I. Présentation
PSDecode est un module PowerShell développé par Prateek Kumar Singh et disponible sur GitHub qui vous permettra de décoder différentes informations. Autrement dit, il vous permettra de comprendre certains codes d'erreurs, et notamment il s'avère utile en phase de debug. Grâce à ce module, vous allez pouvoir comprendre ce que signifie tel code de retour HTTP ou encore savoir quelle est l'application qui écoute sur le port 8080 de votre serveur.
PSDecode va, en quelque sorte, vous aider à mieux interpréter certaines informations affichées dans la console PowerShell. Ce qui peut aussi s'avérer pratique pour obtenir une information depuis un serveur en mode core !
II. Installer PSDecode et découvrir ses cmdlets
Comme on a l'habitude de le faire, on va installer le module PSDecode grâce à la commande suivante :
Install-Module PSDecode
Il suffira ensuite de patienter quelques secondes...
À ce jour et dans sa version 0.9.0, le module PSDecode contient 4 cmdlets, la commande ci-dessous nous permet de les lister :
Get-Command -Module PSDecode
Voici à quoi servent ces commandes :
- Get-ErrorDetail : Obtenir des informations complémentaires sur les codes d'erreurs Windows
- Get-HTTPStatusCode : Obtenir une description correspondante à un code de retour HTTP (exemple : 404)
- Get-MACVendor : Obtenir le fabricant d'une ou plusieurs adresses MAC
- Get-Port : Obtenir des informations sur les ports utilisés, par exemple avoir la liste des ports sur écoute sur votre machine et le service associé à chaque port
Passons maintenant à un exemple concret.
III. Quels sont les ports d'écoutes et quels sont les services associés ?
Voilà une bonne question ! L'historique commande netstat nous permettrait d'obtenir une liste des ports d'écoutes sur la machine, tout comme la commande Get-NetTCPConnection. Mais finalement, on ne sait pas quel est le service qui utilise chaque port en écoute !
Voyez par vous-même :
C'est là qu'intervient le module PSDecode et plus particulièrement la commande Get-Port. On va lui piper les ports locaux utilisés et en mode listen, et ensuite le cmdlet va nous retourner : le port, le service qui l'utilise, le protocole et une description. Pratique !
Passons à l'exemple suivant.
IV. Analyser le code de retour d'une page web ?
Lorsque l'on exécute une requête web avec PowerShell, par exemple via Invoke-WebRequest, il y a la propriété StatusCode qui est renvoyée avec le code de statut HTTP suite au chargement de la page cible. Pour obtenir facilement la signification du code depuis la ligne de commande, on peut l'envoyer au cmdlet Get-HTTPStatusCode.
(Invoke-WebRequest www.it-connect.fr).StatusCode
La commande ci-dessus retournera le code HTTP de retourné par le serveur web : 200, 404, 500, etc. Si l'on envoie le résultat au cmdlet du module PSDecode, on obtiendra des détails sur ce code :
(Invoke-WebRequest www.it-connect.fr).StatusCode | Get-HTTPStatusCode
Voici un exemple :
On pourrait aussi tout simplement faire :
200, 404 | Get-HTTPStatusCode
Pour terminer ce tutoriel à la découverte de PSDecode, je vous propose de voir ensemble un dernier cas d'usage.
V. À quel fabricant correspond mon adresse MAC ?
En utilisant le cmdlet Get-MacVendor du module, on va pouvoir afficher le fabricant associé à une adresse MAC. Pour rappel, les trois premiers octets d'une adresse MAC permettent de définir le constructeur de la carte. C'est donc par cette intermédiaire que PSDecode va déduire les informations par rapport à des adresses MAC envoyées en entrée.
Pour tester, on va chercher à obtenir les constructeurs associés aux cartes réseau de votre PC. Pour commencer, on peut lister les cartes réseaux du PC :
Get-NetAdapter
On remarque la propriété "MacAddress" qui a comme valeur l'adresse MAC de chaque carte. On va récupérer cette propriété et l'envoyer à Get-MacVendor via le pipe.
(Get-NetAdapter).MacAddress | Get-MacVendor
On remarquera que si le constructeur est inexistant, comme pour une carte virtuelle (type VPN), il peut y avoir une erreur par manque de correspondance.
On pourrait aussi imaginer charger un fichier complet avec des adresses MAC pour obtenir le constructeur. De manière plus simple, on peut aussi envoyer une ou plusieurs MAC à analyser comme ceci :
"C4-8E-8F-F6-42-1C","C4-8E-8F-F6-42-1B" | Get-MACVendor
Au travers ce tutoriel, on a pu voir quelques exemples d'utilisation, mais il y en a forcément pleins d'autres... Qu'en pensez-vous ? Avez-vous des idées pour l'utiliser ?