web-dev-qa-db-ja.com

Powershellでのバイナリファイルの読み取り/解析

バイナリファイルを解析しようとしていますが、どこに行けばよいのか助けが必要です。 「バイナリファイルの解析」、「バイナリファイルの読み取り」、「バイナリ内のテキストの読み取り」などをオンラインで探していますが、運がありません。

たとえば、このテキストをこのバイナリファイルから読み取るにはどうすればよいですか?どんな助けでも大歓迎です。 PowerShellを使用しています。

enter image description here

25
user1151295

固定または推定可能な位置にテキストを含むバイナリファイルがあるようです。 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をインストールした場合、既にインストールされています。

31

文字列だけを探している場合は、SysInternalsの strings.exe ユーティリティを確認してください。

6
Keith Hill

Get-Content -Encoding byteを介してファイルを読み込むことができます。しかし、それをどのように解析するのかわかりません。

3
mrwh1t3