2

我正在使用 Telpo TPS300 POS 终端尝试从 VISA 银行卡中读取信息。终端带有 C 库,因此发送命令要容易得多。但是,当我运行 SELECT APDU 命令 (00 A4 04 00 )Lc=0 时,它返回以下 18 字节长的十六进制数据,长度低于 6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 01 FF。我阅读了 ISO 7816-4 规范和 EMV 规范,从外观上看,当我尝试选择返回的 DF 名称时,我返回的数据似乎缺少 EMV 规范 11.3.4 中指定的强制性标签 88 之一,即一个带有标签 84 (A0 00 00 00 03 00 00 00) 的,它返回相同的信息。所有其他命令也没有成功,特别是我尝试了 READ RECORD、VERIFY、GET PROCESSING OPTIONS,GET CHALLENGE 并且它们都返回 SW 6D 00(指令代码不受支持或无效)。我只想从卡中检索用户信息并使用 verify 命令执行 PIN 的离线身份验证。

我浏览了网络,但似乎没有人回答我。我已经一次又一次地阅读了关于命令和响应交互的标准 ISO 7816-4 和 EMV 规范,但到目前为止没有运气,因为我不能超越这一步(SELECT 命令响应)

4

1 回答 1

1
I am using the Telpo TPS300 POS terminal to try and read information from a VISA bank Card

正如您所说,您尝试使用空白卡,这里来自卡的信息是正确的。

当您发送诸如 00 A4 04 00 00 之类的选择命令时,它会选择 ISD -发行者安全域并返回 ISD AID 即 A0 00 00 00 03 00 00 00,标签为9F 65,这意味着 -命令消息中数据字段的最大长度

Recv - 6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 01 FF

您收到的内容显示 ISD 的 AID 和标签 9F65 的值。这似乎是正确的。

my returned data seems to be lacking one of the mandatory tag 88 as specified in EMV Specification 11.3.4

当您使用命令选择 PSE 目录时,目录基本文件的标签 88 -SFI 从卡中出来,

00 A4 04 00 0E 315041592E5359532E4444463031 (select PSE command)

如果 PSE 安装在卡中,它将为您提供标签 88。

I tried READ RECORD, VERIFY, GET PROCESSING OPTIONS, GET CHALLENGE and they all return the SW 6D 00 (Instruction code not supported or invalid).

要读取 emv 卡,必须在卡中安装 EMV 应用程序并对其进行个性化设置,然后才能使用命令序列从卡中获取信息。尝试-如何读取 emv 卡它 提供了使用命令序列读取 emv 卡的基本概念。

希望对你有帮助。。

于 2015-11-17T12:33:47.880 回答