继续:EMV阅读PAN代码
我在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 9080 a 1c 0 8 1 1 0 18 1 2 0 90 案例A)
我有三个不同的AFL: ,,10 2 4 1
所以我送其中SFI为10 >> 3(10是第一AFL的第一个字节)和P2是SFI << 3 | 4这样我得到了我的卡的正确PAN代码.18 1 1 020 1 1 000 B2 SFI P2 00
案例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但我不能自动解析那些因为没有先前的反应相同的标记.如果我使用那些AFL它工作,我可以得到卡的PAN代码.
如何制作通用的方法来读取正确的AFL以及如何使用这些AFL制作正确的命令?
小智 9
这是AFL的解码:
通常情况下,您将获得4个字节的AFL.将完整的AFL分成4个字节的块.让我们举一个Chunk的例子:AABBCCDD
AA - > SFI(解码如下所述)
BB - >此SFI下的第一个记录
CC - >此SFI下的最后记录
DD - >记录涉及离线数据验证(目前暂不供您使用)
举个例子10 02 04 01 18 01 01 00 20 01 10 00
块是10 02 04 01,18 01 01 00,20 01 10 00
10 02 04 01 - >第1字节10:00010000从MSB获取初始5位 - > 00010表示2:表示SFI 2
第二个字节02:SFI 2下的第一个记录是02
采取第3字节04:SFI 2下的最后记录是04
不包括4字节解释,因为没有用
摘要:SFI 2包含记录2到4
如何形成Read Record命令:
APDU结构:CLA INS P1 P2 LE
CLA 00
INS B2
P1(Rec No)02(此SFI 2初始记录中的SI为02)
P2(SFI)SFI 02:用5个binay数字00010表示SFI,然后在最后附加100:00010100:在Hex 14中所以P2是14
LE 00
APDU读取SFI 2 Rec 2:00 B2 02 14 00
APDU读取SFI 2 Rec 3:00 B2 03 14 00
APDU读取SFI 2 Rec 4:00 PM 04 14 00
现在,如果您将尝试阅读Rec 5,由于此Rec不存在,在这种情况下您将获得SW 6A83.
对所有块使用相同的过程来识别可用的记录和SFI通过此机制,您可以编写解析AFL的函数
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |