問題タブ [kaitai-struct]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
980 参照

python - Kaitai Struct: 条件付きの計算されたインスタンス

Kaitai Struct にバイナリ構造をリバース エンジニアリングさせようとしています。seqフィールドは意図したとおりに機能しますがinstances、希望どおりに機能していないようです。

私のバイナリ形式には、配列サブheaderフィールドを持つフィールドとして解析する定数のリストを含むヘッダーが含まれています。consts

ただし、次の宣言を使用しようとすると:

これは、[0x40..0x4f] の範囲内にある場合にのみ、index_const配列を調べての値を計算することを目的としています。header.constsidx

私はターゲット言語として Python を使用しており、次のようなコードを生成する必要があると想定しています。

ただし、私が得るものは次のとおりです。

それは私だけですか、明らかな何かが欠けていますか、それとも Kaitai Struct のバグですか?

0 投票する
1 に答える
591 参照

java - Kaitai Struct を使用したオペコードの解析

Kaitai Struct での最初のステップとして、練習として BSON パーサーを実行しようとしています。BSON 要素を解析する .ksy コードは次のようになります。

お気づきかもしれませんが、繰り返しがたくさんあります。if追加の要素タイプを実行するたびに、ブロックを複製する必要があります。さらに悪いことに、基本的にそのようなフィールドごとに 3 回複製する必要があります。

私のターゲット言語は Java です。Kaitai の前は Preon しか試していませんでしたが、次のような条項がありました。

そこで、「プレフィックス」の値に基づいて、これら 2 つの要素を自動的に取得します。カイタイでできるんですか?

0 投票する
1 に答える
592 参照

python - Python: Kaitai Struct で ID3v1 タグを読み取る

Kaitai Struct に MP3 の ID3v1 タグ形式を解析させようとしています。標準によると、これは特定のオフセットにある固定形式の構造ですが、このオフセットはファイルの先頭からではなく、末尾から計算されるというトリックがあります。

タグの基本的な.ksy概要は次のとおりです。実際に変更してはならないのは当然だと思います。

そして、ファイルの最後まで128バイトから読み取る方法についての私の素朴な考えは次のとおりです。

簡単な Python テスト スクリプトで試してみます。

ただし、その負の量を Python の File オブジェクトに直接渡すように見えるためseek()、失敗します。

トレースバック (最後の最後の呼び出し): ファイル "try-id3.py"、6 行目、print(f.id3v1_tag) ファイル "id3v1_1.py"、171 行目、id3v1_tag self._io.seek(-128) ファイル " kaitaistruct.py", line 29, in seek self._io.seek(n) IOError: [Errno 22] Invalid argument

他のいくつかの同様に非常識なアイデアの後、回避策を見つけました。pos引数を省略.ksyして、スクリプト内の適切な位置を手動で探すことができます。

これは機能しますが、本当にハックな気がします:( Kaitai StructとPythonでそれを行うより良い方法はありますか?

0 投票する
1 に答える
107 参照

windows - Windows レジストリ データベースの解析

この質問を参考に、Kaitai Web IDEを使用して Windows レジストリ データベース ハイブ ファイル形式を解析しようとしていますが、問題が発生しました。私が最も興味を持っているハイブはで、90 MB を超えています。c:\windows\system32\config\software

Kaitai Web IDE にロードしようとすると、最初の 0x97d680 バイトしかロードされません。他のすべてが切り捨てられているようです。

私の最初の推測では、おそらくそれはある種のブラウザの制限です。0x97d680 バイトは 10 進数で 9950848 です。実際、グーグルで調べたところ、最近のブラウザでは「ローカル ストレージ」と呼ばれるものに 10 MB の制限があることがわかりました。

Windows 10 で Google Chrome 56.0.2924.9 を使用しています。この制限を緩和するにはどうすればよいですか?

0 投票する
1 に答える
355 参照

python - 前の要素に応じてアイテムを解析する

コンテキストを説明するために、DICOM ファイルを解析していますが、Transfer Syntax エントリを使用して暗黙的または明示的な解析を使用するかどうかを判断するのに苦労しています。しかし、簡略化された構文を定義するので、dicom の知識は必要ありません。

一連のエントリがあり、各エントリにはgroup number、および のdata部分があります。グループ番号は常に として表されu2ますが、データはさまざまなタイプにすることができu2ますu4。エントリの順序は任意ですが、 のエントリはすべてgroup number == 2先頭に配置する必要があります。のすべてのエントリgroup number == 2のデータ型は ですu2が、後続のデータ部分は異なる場合があります。

ここで難しい部分があります:これとまったく同じエントリが以前に存在した場合にのみ、を持つすべてのアイテムgroup number != 2がデータ型を持ちます。u4

たとえば、Python では、次のように解析します。

kaitai-struct を使用してこれを達成する方法はありますか?

0 投票する
1 に答える
826 参照

hex - 16 進ダンプの解析

最近、任意のバイナリ形式を処理するkaitai 構造体に出会いました。16 進ダンプがあります。つまり、解析したいファイルがあり、データのマッピングのためにkaitaiのWeb IDEでビジュアライザーを使用すると、16 進形式になっています。 16 進数データを 16 進数に戻す ビジュアライザーを使用するときに、データを 16 進数から変換して正確な 16 進数データを取得する方法はありますか。

たとえば、これを 3335363330 と考えてから、再び 33 33 33 35 33 36 33 33 33 30 にマッピングします。

前もって感謝します