web-dev-qa-db-fra.com

Lire / analyser des fichiers binaires avec Powershell

J'essaie d'analyser un fichier binaire et j'ai besoin d'aide pour savoir où aller. J'ai cherché en ligne pour "analyser des fichiers binaires", "lire des fichiers binaires", "lire du texte dans des binaires", etc. et je n'ai pas eu de chance.

Par exemple, comment pourrais-je lire ce texte dans ce fichier binaire? Toute aide serait très appréciée. J'utilise PowerShell.

enter image description here

25
user1151295

Il semble que vous ayez un fichier binaire avec du texte sur une position fixe ou autrement déductible. Get-Content pourrait vous aider, mais ... Il essaiera d'analyser l'intégralité du fichier dans un tableau de chaînes et donc de créer un tableau de "déchets". De plus, vous ne sauriez pas à partir de quelle position de fichier était une "corde de caractères" particulière.

Vous pouvez essayer les classes .NET File pour lire et Encoding pour décoder. C'est juste une ligne pour chaque appel:

# Read the entire file to an array of bytes.
$bytes = [System.IO.File]::ReadAllBytes("path_to_the_file")
# Decode first 12 bytes to a text assuming ASCII encoding.
$text = [System.Text.Encoding]::ASCII.GetString($bytes, 0, 12)

Dans votre cas réel, vous parcourriez probablement le tableau d'octets dans une boucle pour trouver le début et la fin d'une séquence de chaînes particulière et utiliser ces indices pour spécifier la plage d'octets dont vous souhaitez extraire le texte par le GetString .

Les méthodes .NET que j'ai mentionnées sont disponibles dans .NET Framework 2.0 ou supérieur. Si vous avez installé PowerShell 2.0, vous l'avez déjà.

31
Ferdinand Prantl

Si vous recherchez uniquement des chaînes, consultez l'utilitaire strings.exe de SysInternals.

6
Keith Hill

Vous pouvez lire le fichier via Get-Content -Encoding byte. Je ne sais pas comment l'analyser cependant.

3
mrwh1t3