bin_parser_to_be_tested プログラム仕様

バイナリファイル探索ヘルパー。

このモジュールは、未知のバイナリファイルを探索し、解析するための様々なユーティリティを提供します。 既知の数値や文字列の検索、オフセットの異なる型での検査、表示可能なASCII文字列の抽出、 および候補オフセット周辺のバイト列ダンプなどの機能が含まれています。 必要に応じて、アラインメントを考慮したステップでの検索も可能です。

関連リンク: bin_parser_to_be_tested.py 技術ドキュメント

例:

# リトルエンディアンのfloat32値 (120.0) を、アライメントを考慮した典型的なスキャンで検索 python bin_parser_to_be_tested.py search test.raw --type float32 --value 120.0 --endian little --step 4 --tolerance 1e-3

# 上記と同じだが、全ブルートフォーススキャン python bin_parser_to_be_tested.py search test.raw --type float32 --value 120.0 --step 1

# 生のバイト列からテキストフラグメントを直接検索 python bin_parser_to_be_tested.py search test.raw --type str --value DEVICE

# 表示可能なASCII文字列をリストアップ python bin_parser_to_be_tested.py strings test.raw --min-length 4

# 指定されたオフセットで複数の候補型として値を読み取る python bin_parser_to_be_tested.py inspect test.raw --offset 0x120 --types float32,int16,uint16,str --sizes 4,2,2,32

# 配列を読み取る python bin_parser_to_be_tested.py array test.raw --offset 0x200 --type float32 --count 16 --step 4

converter.bin_parser_to_be_tested.find_ascii_strings(bin_data: bytes, istart: int = 0, ilast: int | None = None, min_length: int = 4) List[Tuple[int, str]][ソース]

バイナリデータから表示可能なASCII文字列を検索します。

検索結果は、元のファイル内の絶対オフセットと抽出された文字列のペアのリストとして返されます。

パラメータ:
  • bin_data (bytes) -- 検索対象のバイナリデータ。

  • istart (int) -- 検索を開始するオフセット(インクルーシブ)。デフォルトは0。

  • ilast (Optional[int]) -- 検索を終了するオフセット(インクルーシブ)。デフォルトはデータの末尾。

  • min_length (int) -- 検出する文字列の最小長さ。

戻り値:

(オフセット, 文字列) のタプルリスト。

戻り値の型:

List[Tuple[int, str]]

converter.bin_parser_to_be_tested.get_data(bin_data: bytes, offset: int, size: int, vartype: str, endian: str = 'little', varname: str | None = None, str_mode: str = 'ascii_prefix')[ソース]

バイナリデータ内の指定されたオフセットから特定の型のデータを読み取ります。

数値型の場合は struct モジュールを使用し、文字列型の場合は str_mode に応じて抽出します。

パラメータ:
  • bin_data (bytes) -- データを読み取る元のバイナリデータ。

  • offset (int) -- データの読み取りを開始するオフセット。

  • size (int) -- 読み取るバイト数。

  • vartype (str) -- 読み取るデータの型(例: "float32", "uint16", "str")。

  • endian (str) -- エンディアンの指定 ("little" または "big")。デフォルトは"little"。

  • varname (Optional[str]) -- 読み取るデータの名前(エラーメッセージ用)。オプション。

  • str_mode (str) -- vartype が "str" の場合の文字列抽出モード。"ascii_prefix", "c_string", "fixed" のいずれか。デフォルトは"ascii_prefix"。

戻り値:

読み取られたデータ値。読み取りに失敗した場合はNone。

戻り値の型:

object

例外:

ValueError -- オフセット/サイズが範囲外、サポートされていない型、または無効な str_mode が指定された場合。

converter.bin_parser_to_be_tested.hex_dump(bin_data: bytes, offset: int, length: int = 64, width: int = 16) str[ソース]

バイナリデータの一部を16進数とASCII文字でダンプします。

指定されたオフセットから length バイトを読み取り、width バイトごとに整形された文字列として返します。

パラメータ:
  • bin_data (bytes) -- ダンプする元のバイナリデータ。

  • offset (int) -- ダンプを開始するオフセット。

  • length (int) -- ダンプするバイト数。デフォルトは64。

  • width (int) -- 1行に表示するバイト数。デフォルトは16。

戻り値:

整形された16進数ダンプ文字列。

戻り値の型:

str

converter.bin_parser_to_be_tested.load_bin_file(file_path: str) bytes[ソース]

指定されたバイナリファイルを読み込み、その内容をバイト列として返します。

パラメータ:

file_path (str) -- 読み込むバイナリファイルのパス。

戻り値:

ファイルの内容を表すバイト列。

戻り値の型:

bytes

converter.bin_parser_to_be_tested.read_array(bin_data: bytes, offset: int, vartype: str, count: int, endian: str = 'little', step: int | None = None) List[object][ソース]

バイナリデータ内の指定されたオフセットから、連続するデータ要素の配列を読み取ります。

vartype が "str" の場合はサポートされません。 step が指定されない場合、デフォルトで型のバイトサイズが使用されます。

パラメータ:
  • bin_data (bytes) -- 配列を読み取る元のバイナリデータ。

  • offset (int) -- 配列の読み取りを開始するオフセット。

  • vartype (str) -- 配列要素の型(例: "float32", "uint16")。"str" はサポートされません。

  • count (int) -- 読み取る要素の数。

  • endian (str) -- エンディアンの指定 ("little" または "big")。デフォルトは"little"。

  • step (Optional[int]) -- 要素間のバイト単位のストライド。指定されない場合、型サイズが使用されます。オプション。

戻り値:

読み取られた配列要素のリスト。

戻り値の型:

List[object]

例外:

ValueError -- vartype が "str" の場合。

converter.bin_parser_to_be_tested.search_data(bin_data: bytes, itop: int, ilast: int, size: int, vartype: str, endian: str, value, tolerance: float = 1e-06, rtol: float = 0.0, step: int = 1, varname: str = 'not given', str_encoding: str = 'ascii') List[int][ソース]

バイナリデータ内で指定された値(数値または文字列)を検索し、一致するオフセットのリストを返します。

数値型の場合、step バイトずつスキャンします。 文字列型の場合、生のバイト列のサブストリング検索を実行します。

パラメータ:
  • bin_data (bytes) -- 検索対象のバイナリデータ。

  • itop (int) -- 検索を開始するオフセット(インクルーシブ)。

  • ilast (int) -- 検索を終了するオフセット(インクルーシブ)。

  • size (int) -- 読み取るバイト数。

  • vartype (str) -- 検索するデータの型(例: "float32", "str")。

  • endian (str) -- エンディアンの指定 ("little" または "big")。

  • value (Any) -- 検索するターゲット値。

  • tolerance (float) -- 浮動小数点数比較の絶対許容誤差。デフォルトは1e-6。

  • rtol (float) -- 浮動小数点数比較の相対許容誤差。デフォルトは0.0。

  • step (int) -- スキャンステップサイズ(バイト単位)。デフォルトは1。

  • varname (str) -- 検索するデータの名前(エラーメッセージ用)。デフォルトは"not given"。

  • str_encoding (str) -- 文字列検索の場合に value をバイト列にエンコードするためのエンコーディング。デフォルトは"ascii"。

戻り値:

一致する値が見つかったオフセットのリスト。

戻り値の型:

List[int]

例外:

ValueError -- step が1未満、サポートされていない型、または型と一致しない size が指定された場合。