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文字列を検索します。
検索結果は、元のファイル内の絶対オフセットと抽出された文字列のペアのリストとして返されます。
- 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。
- 戻り値の型:
- 例外:
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 バイトごとに整形された文字列として返します。
- converter.bin_parser_to_be_tested.load_bin_file(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 が指定されない場合、デフォルトで型のバイトサイズが使用されます。
- パラメータ:
- 戻り値:
読み取られた配列要素のリスト。
- 戻り値の型:
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 が指定された場合。