- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 C 语言,所以我没有 Java 工具和自动解析 APDU 命令响应的所有函数。我想读取所有类型的智能卡。我必须解析 GET PROCESSING OPTIONS 的响应并获取每张卡的 AFL(访问文件定位器)。
我有三种不同情况的三张牌:
77 12 82 2 38 0 94 c 10 2 4 1 18 1 1 0 20 1 1 0 90
77 12 82 2 39 0 94 c 18 1 1 0 20 1 1 0 28 1 3 1 90
80 a 1c 0 8 1 1 0 18 1 2 0 90
案例A)
我有三种不同的 AFL:10 2 4 1
、18 1 1 0
、20 1 1 0
所以我发送 00 B2 SFI P2 00
其中 SFI 是 10>>3 (10 是第一个 AFL 的第一个字节)并且 P2 是 SFI<<3|4 这样我得到了正确的 PAN 代码我的卡。
案例 B)
我有三种不同的 AFL:18 1 1 0
、20 1 1 0
、28 1 3 1
。所以我发送 00 B2 SFI P2 00
以与案例 A 相同的方式构建,但我得到每个 AFL 的响应 6A 83。
案例 C)我有两个不同的 AFL: 8 1 1 0
, 18 1 2 0
但我无法自动解析它们,因为之前的响应没有相同的 TAG。如果我使用那些 AFL 就可以了,我可以获得卡的 PAN 代码。
如何使用通用方法读取正确的 AFL,以及如何使用这些 AFL 发出正确的命令?
最佳答案
这里是AFL的解码:
您通常会得到 4 字节的倍数的 AFL。将您的完整 AFL 分成 4 个字节的 block 。让我们以 1 个 Chunk 为例:AABBCCDD
AA -> SFI(解码说明如下)
BB -> 此 SFI 下的第一条记录
CC -> 此 SFI 下的最后记录
DD -> 离线数据认证涉及的记录(暂不供您使用)
以你为例 10 02 04 01 18 01 01 00 20 01 10 00
block 是 10 02 04 01, 18 01 01 00, 20 01 10 00
10 02 04 01 -->取第一个字节 10 : 00010000 从 MSB 中取初始 5 位 --> 00010 表示 2 : 表示 SFI 2
Taking 2nd Byte 02 : SFI 2 下的第一条记录是 02
占用第 3 个字节 04:SFI 2 下的最后一条记录是 04
由于没用,所以不包括4字节解释
总结:SFI 2 包含记录 2 到 4
读取记录命令将如何形成:
APDU 结构:CLA INS P1 P2 LE
CLA 00
INS B2
P1 (Rec No)02 (SInce 在这个 SFI 2 初始记录中是 02)
P2 (SFI) SFI 02 : 以 5 位二进制数字 00010 表示 SFI,然后在末尾附加 100 : 00010100 : 十六进制 14所以 P2 是 14
LE 00
APDU 读取 SFI 2 Rec 2 : 00 B2 02 14 00
用于读取 SFI 2 Rec 3 的 APDU:00 B2 03 14 00
APDU 读取 SFI 2 Rec 4 : 00 B2 04 14 00
现在,如果您尝试阅读 Rec 5,由于此 Rec 不存在,在这种情况下您将获得 SW 6A83。
对所有 block 使用相同的过程来识别可用的记录和 SFI通过这个机制,你可以编写函数来解析 AFL
关于apdu - 芯片 EMV - 为每张智能卡获取 AFL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50157927/
进行 EMV 在线交易 (ARQC) 时,EMV 设备需要与发行人(或网关)通信以获得批准/拒绝。我在写POS软件,需要支持EMV,所以需要支持这个交互。我似乎无法回答的是,EMV 设备通过互联网直接
我想知道是否可以使用配备IC读卡器的POS设备更改EMV卡的PIN码。或者,如果该功能仅为 ATM 保留。 如果可以通过 POS 设备实现,需要发出哪一系列命令才能更改 PIN。 最佳答案 EMV 离
我正在从事一个项目,该项目要求我解析从万事达卡购买交易中收到的 EMV 数据标签。我正在使用 EMVCo 的 EMV V4.3 Books,并且可以通过 MasterCard Connect 访问 M
我正在尝试从 VISA 卡读取信用卡数据,但无法成功。在互联网资源中,我发现对于 MASTER 卡,我们可以使用 1PAY.SYS.DDF01 文件选择 PSE 目录,然后阅读记录。但是对于 VISA
我在读取 german CashCards(也称为 Geldkarte)中的 IBAN 号码时遇到了一些问题。我可以与我的卡通信,并从中获取一些信息。但我不知道我必须向卡发送哪个 commandApd
有人可以解释一下以下 EMV key 的用法吗: - MDK加密 key -MDK MAC - MDK AC 这些 key 与MAK-AC、MK-SMI、MK-SMC有何关系 我在 EMV 第 2 册
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我正在为 Android 开发一个支付应用程序。我已经阅读了所有四本 EMV 书籍(4.3 版),这些书籍用于实现与终端通信的协议(protocol)。我还从 Mastercard 购买了终端模拟器套
我试图找出 EMV 标准化推荐的通过 NFC 传输支付信息的加密类型。我浏览了 the specification ,但找不到有关此主题的任何提示。我知道卡制造商在他们的卡本身上提供了一些加密技术,部
我正在开展一个项目,该项目需要 EMV 卡的安全消息传递来保护发送到 EMV 卡或从 EMV 卡接收的数据。 根据 EMV 第 3 册第 6.3.2 节: 据我了解,我们可以在每个命令/响应对上使用“
我正在开发 VeriFone VX 终端的接口(interface)。虽然,这确实是一个普遍的 EMV 问题。我们的处理器的下限为零,因此它将始终在线发送。但是,如果它发生变化,您如何知道(哪些标签)
我正在研究 EMV 技术,并寻找终端和发行者之间的通信(请求/响应)以进行授权/在线 PIN 检查。 我知道离线数据验证仅在终端上进行检查,然后终端将数据发送给发行者。我想知道授权过程需要发送哪些数据
有谁知道发行者脚本处理流程应该如何在 VeriFone 密码键盘上工作?据我了解,卡处理器在 9f18 标签中发回脚本。标有 71 标签的脚本将在第二次生成 AC 之前处理,标有 72 标签的脚本将在
我是 EMV 技术新手,使用 java 作为我的首选语言。我正在尝试执行外部身份验证命令,但收到错误 6982。在我的外部身份验证命令中,我应该将 cmac 和主机密码作为我的数据字段传递,但我不知道
我正在尝试与显然是根据 EMV 规范实现的 SAM 进行通信。每当我问他们问题时,开发人员只会向我推荐 EMV 书籍。一瘸一拐地通过 EMV 卡和终端规范后,我终于设法一个接一个地发送命令,并使用 C
基本上是标题,但在更广泛的上下文中:终端是否有办法验证 AIP 是否真的由卡发送,而不是在中间人攻击中被替换? 最佳答案 简短的回答 - 是的。SDA 被“嵌入”在 ICC 公钥恢复过程中。如果卡中存
我希望为应用程序添加功能,以读取 EMV 信用卡的公开可用信息。我正在开发的应用程序已经支持 NFC,它目前正在从非信用卡类型读取信息。 这是我过去没有的经验,所以我有点不确定从哪里开始。 我已经能够
我正在研究 POC,以测试使用 EMV 概念的销售点应用程序 - 芯片和 PIN 信用卡。 过去是否有性能对此进行过测试?如果是这样,如何在性能测试期间模拟刷卡。在 EMV 中,每次刷卡都会创建一个唯
我已经按照“Visa 非接触式支付规范 v2.0.2”中的规定完成了 qVSCD(Quick Visa 智能借记卡/信用卡)的开发路径,并已成功地用 C 语言实现了所有步骤。但是他们没有具体说明如何实
我在 EMV 卡上工作,我的新任务是将磁条数据与芯片数据进行比较。当我读出来的时候。 Mag和chip中应该常见的数据是:- PAN、持卡人姓名、到期日。 在这里,我有一些困惑:- 单个数据如 潘 存
我是一名优秀的程序员,十分优秀!