繁体   English   中英

EMV Pidion BIP 1300

[英]EMV Pidion BIP 1300

我目前正在使用PIDION BIP-1300,有没有人有如何检索智能卡芯片价值的例子?

我正在使用C#和BB_EMV.dll ...我找不到任何文档...

这是我正在使用的一种:

EMV emv = new EMV();
byte[] DE_5A;
DE_5A = emv.GetData("DE_5A");

我收到的只是一个充满零的字节数组。

提前致谢!

好的,我不知道BB_EMV是什么,也从未听说过,但是从智能卡读取EMV数据并不容易,我现在就告诉您。

首先,您需要一个好的托管库,该库可以让您在有问题的卡上进行APDU级别的访问,我使用以下库: http : //www.smartcard-api.com/index.shtml

一旦有了它,就可以像添加其他任何托管库一样添加对它的引用,该工具包中包含示例,因此我不打算使用它来详细介绍它,让您自己的代码运行不难。

我有代码,但它是我写的客户版权所以我不能给你它。

一旦您开始向卡发送命令,并且它是支持标准EMV结构的卡,您要做的第一件事就是选择PSE,通常有两种方法可以做到这一点。

1)使用AID选择

从您准备接受的AID(应用程序ID)列表中,将以下命令发送到卡:

0x00,0xA4,0x04,0x00

按照您希望选择的AID进行此操作,对于VISA借记通常是这样

0xA0,0x00,0x00,0x00,0x03,0x10,0x10

这跟随上面的APDU数据作为数据块后跟0x07(数据长度)

你应该得到什么也是

0x9000或0x6100(如果您得到61代码,则意味着您必须使用修改后的参数重做请求,这超出了我在此处编写的范围)

如果在SW1和SW2(卡寄存器)中得到0x9000,则说明您已经成功选择了该AID,并准备对其进行EMV调用。

2)使用DDF名称选择所需的支付应用程序,基本上你使用标准卡选择命令选择“1PAY.SYS.DDF01”如果它是接触芯片和引脚或“2PAY.SYS.DDF02”如果它是非接触式的,这是称为使用PPSE进行选择。

选择付款应用程序后,您需要阅读卡中的处理选项,这将告诉您一些可用信息以及查找位置的信息。

这是通过发出如下所示的read GPO命令来完成的:

0x80、0xA8、0x00、0x00、0x83、0x00

这将返回TLV结构,您必须对其进行解析以获取详细信息。

TLV是一个非常简单的概念,您的数据流分为3组a

标签

长度

因此TLV,

TLV标记可以是1到3个字节长的可变长度,通常虽然您看不到大于2个字节。 如果你的第一个字节与0x1F一起大于31(即设置了第6位或第7位),那么你有一个16位标签,在这种情况下你需要把你刚收到的字节移位8位,然后在序列中添加下一个字节。

就像明智的做法一样,如果将下一个字节除以128,则得到128,那么您的2个字节的长度在1到15位之间,一旦有了TAG和Length,则剩下的下一个字节就是有效负载。

该有效负载可以嵌套,实际上您很可能会在TLV结构中找到TLV结构,因此需要编写一个好的递归解析器。

在您从GPO对象解析数据之后,您可以使用它来查找实际的卡数据,这是您开始阅读PAN和track2等效数据之类的内容请注意,尽管有标准但没有它们都是100%相同的。 大多数卡都有一个自定义数据区,同时请注意,PIN和CVV号码不能直接从卡中获取,而是您会发现在大多数情况下会有加密的PIN或CVV块,这是为了发送到如果回卡连同证卡中的相应证书,发行人将报告输入的订单是否正确。

有些卡可以进行离线PIN验证,但是,沃尔夫冈等级网站上充满了一些可用的各种标准功能和数据通话的重要信息,主要是在GSM SIM卡上,但他确实覆盖了EMV,你可以在这里找到他的网站:

http://www.wrankl.de/

这个主题比我在这里描述的要多得多,这只是冰山一角,但是自从你在6个月前发布这个以来,我猜你现在可能已经取得了一些进展,如果没有,那么我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM