Чтение/анализ двоичных файлов с помощью Powershell

Я пытаюсь разобрать двоичный файл, и мне нужна помощь в том, куда идти. Я ищу в Интернете "разбор двоичных файлов", "чтение двоичных файлов", "чтение текста внутри двоичных файлов" и т.д., И мне не повезло.

Например, как бы я прочитал этот текст из этого двоичного файла? Любая помощь приветствуется. Я использую powershell.

enter image description here

Ответы

Ответ 1

Кажется, что у вас есть двоичный файл с текстом в фиксированной или иначе выводимой позиции. Get-Content может помочь вам, но... Он попытается разобрать весь файл на массив строк и тем самым создать массив "мусора". Кроме того, вы не знаете, из какой позиции файла была определенная "веревка символов".

Вы можете попробовать классы .NET File для чтения и Encoding для декодирования. Это всего лишь строка для каждого вызова:

# 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)

В вашем реальном случае вы, вероятно, пройдете массив байтов в цикле, который найдет начало и конец определенной последовательности строк, и используя эти индексы, чтобы указать диапазон байтов, который вы хотите извлечь из текста, с помощью GetString.

Методы .NET, о которых я упоминал, доступны в .NET Framework 2.0 или выше. Если вы установили PowerShell 2.0, у вас уже есть его.

Ответ 2

Если вы просто ищете строки, посмотрите strings.exe из SysInternals.

Ответ 3

Вы можете прочитать в файле через Get-Content -Encoding byte. Я не уверен, как его разобрать.