问题标签 [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 回答
179 浏览

kaitai-struct - Kaitai Struct - 可选块或属性

我的系统必须能够解析两种非常相似的输入数据。

  • 如果数据来自队列,则它具有以下结构:
  • 如果数据来自文件,则它具有以下结构:

我目前的代码如下:

我的想法是只创建一个适用于这两种方法的 .ksy 文件。我怎么才能得到它?它基本上是file_header可选的,但我没有办法做到这一点。有人可以帮我吗?

0 投票
1 回答
120 浏览

c# - 更好地理解 Kaitai Struct 的 32 位转换器

我是二进制解释的新手,想确保我理解我正在查看的数据。特别是我正在查看小端序中的 2 个字节:

在此处输入图像描述

这是一个时间戳,它在对象树中显示以下值:

在此处输入图像描述

在转换器中显示:

在此处输入图像描述

对我来说“正确”的值是未分配的 i32le 值 1599082994,它对应于 2020 年 9 月 2 日星期三晚上 9:43:14 的 UTC 时间戳。

我想我有两个主要问题:

  1. 我如何告诉 Kaitai Struct 将字节解析为 i32le,以便在对象树中显示 1599082994,而不是 i16le 值 4594?

  2. 如何将字节 f2 11 转换为 32 位未分配值。当我尝试运行以下基本 c# 程序时,我无法将这些字节转换为 32 位未分配值,但确实成功地将它们转换为 16 位未分配值。

或者我猜秘密问题3,我看这一切都错了吗?

0 投票
1 回答
54 浏览

kaitai-struct - 问题:如何在kaitai中写`010 switch and if`

我非常喜欢 kaitai 结构,我需要在 kaitai 中重写 010 二进制模板之一。我在我的 010 模板中发现了类似于以下的结构,我想知道如何在 kaitai 中处理它。

例如:1

例如:2

0 投票
1 回答
76 浏览

python - 从 kaitai struct 获取所有类型的平面图

我用 kaitai struct 在 python 中生成了一个简单的解析器。现在我想实现类似于 kaitai web ide 在十六进制视图(https://ide.kaitai.io/devel/)中所做的事情,将类型逐字节映射到二进制。如何使用解析器来实现这一点?一个小片段会很有用。

0 投票
1 回答
339 浏览

json - Kaitai Struct 转储到 json

我需要一个像“ksc”这样的命令行,它可以接受参数“二进制文件”和“yaml文件”并将其转储为json格式。WebIDE 通过“ExportToJson”做同样的事情,但我需要命令行中的相同功能。

谢谢你

0 投票
1 回答
107 浏览

yaml - Kaitaistruct 代码中的异常 - 解析错误:未定义

我是凯泰的新手,请帮我解决这些异常。

代码:

我得到的例外:

0 投票
0 回答
84 浏览

python - 在 Python 中使用 Kaitai Struct 解析二进制文件

我想创建一个快速的 python 脚本,给定一个二进制文件(.bin)和一个 kaitai 结构文件(.ksy),它会给我 json 格式的数据,就像 webide 所做的那样。我是 kaitai 结构的新手,并且已经阅读了文档以了解它们,但我似乎没有找到 python 库的任何资源,所以我不确定如何去做。感谢您提前提供任何帮助。

0 投票
0 回答
44 浏览

python - Kaitai Struct:将参数传递给另一个 .kys 文件

我对编码比较陌生,目前我正在尝试用 kaitai 解析一些二进制文件。正在解析的文件大多具有相似的标题,但有些不同,需要相应地处理。所以我创建了 main.ksy,它导入了子文件 ver01.ksy、ver02.ksy 等。对于这个项目,不幸的是,这个文件结构非常固定,我无法更改它。

现在在每个 verXX.ksy 文件中都有一个基于主文件 seq 中的参数的条件。

在子文件中调用函数时,是否有一种简单的方法可以访问此参数?主文件如下所示:

其中一个 verXX 文件如下所示:

现在我想将参数 myvar 传递给 ver01.ksy 文件中的函数 ver_01。我尝试在括号中添加参数,如下所示:

然后通过以下方式在 ver01.ksy 中调用它:

但这不起作用并给了我错误:

ver_01:/seq/0/repeat-expr:无法在 ver_01 上下文中访问“主文件”

我在用户指南中也找不到任何关于将参数传递给不同 .ksy 文件的信息。有人知道如何传递参数 myvar 吗?对不起,这是我第一次在这里发帖

编辑:忘了提:编译为 .py

0 投票
0 回答
28 浏览

kaitai-struct - kaitai-struct-compiler 生成与 webIDE 不同的文件

我正在尝试使用 kaitai-struct 解析 PE 文件。为了从 java 中的 .kys 文件生成文件,我使用的是 0.9 版本的 kaitai-struct-compiler。当我尝试解析文件时,它会引发一些解析异常,但在 kaitai 的 webIDE(https://ide.kaitai.io/)中它工作得很好。

鉴于我只使用最新版本,webIDE 为同一个 .kys 文件生成不同文件的原因是什么?

0 投票
0 回答
55 浏览

precision - 如何正确使用 Kaitai-Struct 解码这些数据?

我想知道是否有更好的方法来使用 kaitai-struct 解码以下内容。

数据规范

我有按以下顺序存储的可变长度数据:

如果 lsblo为 1:

否则:

如您所见,如果 lsblo为 1 则hi高 32 位lo编码为双精度(ieee-754 64 位双精度),否则hi不存在且高 32 位lo编码为 int(32 -位有符号整数)。

什么(有时)有效

这是我能够想出的,但这是一个丑陋的黑客。abs(e-1023) >= 32由于被迫使用位移而不是使用幂函数,它也无法正常工作(1 << x instead of 2^x)