问题标签 [tlv]

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 投票
2 回答
885 浏览

c# - 任何人都可以识别这种类似 Json 的 TLV 数据格式吗?

我目前正在开展一个项目,该项目涉及将遗留数据库迁移到新模式。旧数据库有已下订单的记录和包含购物车的单列。

问题是购物车的格式我不熟悉,有点像 JSON,但显然是某种 TLV 格式。

如果可能,我需要以下其中一项

  • 任何人都可以识别格式吗?
  • 有谁知道将在 C# 中解析它的库?
  • 一个关于如何自己解析它的代码示例

格式示例:

或以下为空订单

0 投票
1 回答
5118 浏览

asn.1 - 在 EMV 事务中为 GET PROCESSING OPTIONS 命令解析 PDOL

我正在尝试构建一个格式正确的 GET PROCESSING OPTIONS 命令以发送到非接触式 EMV 卡。这篇文章非常有帮助,但我只需要了解更多细节。

在解析 PDOL 时,假设每个标签的长度为 2 个字节,然后是预期返回的数据的大小是否安全?

例如,PDOL9F66049F02069F37049F1A02分为 9F66 049F02 06等,每个都有 2 个字节标签和 1 个字节用于数据值的预期长度。

解析时假设每个标签的长度为 2 个字节是否安全?

0 投票
1 回答
2043 浏览

encode - 手动读取编码 asn 文件

  1. 如何手动读取编码 asn 文件?
  2. 什么是标签长度值,有好的教程吗?

在以下示例中,我阅读了每个示例,但没有为我清理,任何人都可以帮助阅读每个示例:

  1. 30 82 02 10 04 01 56 …(更多字节)

第一个字节是二进制的 00110000。前两位是 00,所以类又是 0。第三位是 1,所以它是结构化的。最后五位是 10000,所以标签是十进制的 16。下一个字节是 82 十六进制,即 130 十进制,即 128 + 2,接下来的 2 个字节给出长度。它们是 02 10,以“大端”格式解释为 2*256 + 16 = 528。接下来的 528 个字节,从 04 01 56 开始,包含内容。

  1. 东风82 02 05 12 34 56 78 90

第一个字节是二进制的 11011111。前两位是 11,所以这是第 3 类——私有。下一位是 0,所以这是原始的。其余五位全为 1,因此实际标签从第二个字节开始。第二个字节有一个前导,而第三个字节没有,所以标签是通过取这两个字节(二进制的 10000010 00000010),去掉它们的前导位得到十四位 00000100000010,并将其解释为二进制数来构造的. 因此,标签是十进制的 258。下一个字节是 05,小于 128,所以这是内容的实际长度。接下来的 5 个字节(12 34 56 78 90)是内容。

  1. 30 80 04 03 56 78 90 00 00

第一个字节 30 是我们以前见过的。它是通用类,结构化,标签为 16。下一个字节是 80,所以长度一开始是未知的。内容是所有后续字节,直到(但不包括)前两个连续的零字节。所以内容是04 03 56 78 90,我们可以从内容中算出长度是5。

示例参考

0 投票
1 回答
825 浏览

c - 如何从 c 中的 ingenico 设备获取 apdu 命令日志?

我正在研究 Ingedev 以在C.

如何使用 Ingenico 设备从非接触式 EMV 卡交易中读取应用协议数据单元 (APDU)?

是否可以从设备和卡之间交换的 TLV 树数据中检索到 APDU?如果是这样,这将如何实现?

0 投票
1 回答
865 浏览

javacard - 读取 JavaCard Classic 上的 TLV 编码数据

我想阅读 Java 卡上的 TLV 编码证书(NXP JCOP J3D081、JCOP 版本 2.4.2、Java 卡版本 3.0.1 Classic)。

成功创建了 cap 文件,但是当我尝试在卡上安装它时,出现 gpshell 错误:

load() 返回 0x80206A80(6A80:错误数据/命令数据中的值不正确。)

我使用 JCDK 3.0.3 中的罐子,这通常适用于椭圆曲线等。TLV 的东西有什么不同?

使用的小程序代码(不使用 BERTLV 东西时安装良好):

我使用以下 ant build.xml 创建了 cap 文件:

使用的 build.properties:

所以怀疑上限是用 api_connected.jar 编译的,但是从工具包中删除文件并没有改变任何东西。

任何帮助,将不胜感激。在此先感谢,托马斯

0 投票
0 回答
953 浏览

java - TLV(类型-长度-值)验证设计模式

我正在考虑实现以下验证场景的最佳模式(如果可能的话来自四本书):

假设有一个对象称为 TLV(类型长度值)。看起来像这样:

该对象可以包括相同类型的子对象,即子TLV。即,Value 字段具有可能包含子 TLV 的 ByteBuffer。
现在需要做的是确保只有特定的子 TLV 可以成为现有 TLV 的一部分。即需要检查主要对象类型只能包括特定的子类型,即子TLV。

TLV 对象是使用 Builder 模式使用流体接口创建的。之后的想法是使用复合模式来构建类似树的东西,即 tlv 内的 tlv。然而,这仍然留下了如何最好地验证这种结构以及这是否是它的最佳设计的问题。

这个问题更多的是关于如何实施适当的验证技术。例如,我正在考虑创建统计关联->其中每个“类型”(整数)数字具有在诸如 List 之类的 java 结构中静态键入的子类型(整数)数字。然后基于对该列表的快速搜索,可以找到剖析的子 TLV 类型是否与静态预键入列表中的类型匹配。这会起作用,但如果有更好/更智能的验证设计模式/技术可以在使用 TLV 和 Java 时依赖,我会感到好奇。也许有一种模式已经被其他人完全用于该目的。

我最初认为它可以工作的另一种方法是依赖 Java 接口并使用它们来将类标记为某种标记,然后遍历子 TLV 的类型来构建它们并确定它们是否实现了特定的接口。现在这意味着我需要手动创建至少一个类来代表我支持的每种不同的 TLV 类型。在我的情况下这是不可行的,因为可能有数千个,而编写代码将是一场噩梦。

非常感谢任何想法/技术。

0 投票
1 回答
1002 浏览

smartcard - TLV 格式的 EMV JavaCard APDU 响应

我有一个简单的 JavaCard HelloWorld 脚本,我在 JCIDE 中使用虚拟阅读器执行它,然后我从 pyapdutool 发送 apdu 命令:00a404000e 辅助然后 80000000 并且我收到 javacard 字符串,一切运行正常。我的问题是:我怎样才能返回一个 tlv 格式的数据而不是那个响应?我在 emv book 4.3 中查找关于此的内容,并且在 google 上也没有找到在 javacard 脚本中实现 emv tlv 标签的单个示例。有人可以让我走上正确的道路来理解这一点吗?

简而言之:我希望能够以这种格式发送响应,例如:6F1A840E315041592E5359532E4444463031A5088801025F2D02656E 然后当我访问http://www.emvlab.org/tlvutils/时能够对其进行解码。

0 投票
4 回答
8400 浏览

c# - 解码 EMV TLV 数据

我正在开发一个支持 EMV 卡的 POS 应用程序。我能够从 TLV 中的 Verifone MX 读卡器读取卡数据,但在将 TLV 数据解码为可读数据时遇到问题。

我能够将数据拆分为 TLV 标签及其值。结果值是十六进制而不是解码文本。

例子:

这是一个示例 TLV 数据(我在这里得到了这个示例 TLV 数据

当我在TLVUtil中检查此 TLV 时,我会以可读格式获取某些标签中的数据(如此处的标签 50)。

我可以在我的应用程序中获得的最接近的是:

我想知道是否有任何方法可以识别需要从十六进制转换为字符串的某些标签,或者.Net 中是否有可以复制TLVUtil工具的 TLV 解析器和解码器。

0 投票
1 回答
8850 浏览

android - 如何解读 Mifare Classic 1K 上的 NDEF 内容

我使用 Android 设备上的 NFC 工具应用程序(通过内置 NFC 阅读器)将文本写入 Mifare Classic 1K 标签。这段文字是“moretto”(我的姓)。

然后,我尝试使用 NFC 阅读器 ACR1255U 和 ACS 提供的库来阅读此文本(NDEF 格式)。

我能够得到以下信息:

读取块 4:FF B0 00 04 10响应:0000030ED1010A5402656E6D6F726574 9000

阅读第 5 块:FF B0 00 05 10响应:746FFE00000000000000000000000000 9000

我知道这FE表示内容的结束,并且6D6F726574746F是我的文本。但是我如何确定文本的开始位置?我很难理解 NXP 文档中描述的 TLV 格式。

0 投票
1 回答
22 浏览

linux - 检查 rtattr 中的长度是否为偶数

在我的内核代码中,我需要解析一些类似 TLV 的属性rtattr。有没有办法验证长度是否正确,即它必须是偶数。有这个宏吗?