长亭百川云 - 文章详情

一步步教你制作移动式银行卡信息读取器

物联网IoT安全

32

2024-07-13

我先上图吧,看看你是不是感兴趣:

侧面图:

正面图: 

拿着它扫了一下我姥姥的裤兜:

过了几秒,手机收到一封邮件!

如果看到这你兴奋了,那么接着往下看看:

背景:半年前,我从网上看到一个视频,讲的大概是一个人站在了一个人的旁边,待了几秒,然后就知道了那个人的银行卡信息了,而且不仅是银行卡信息,甚至连持卡人的姓名,身份证号都有。我看完之后,当时就惊呆了。现在的人都这么牛了吗?于是不假思索的也从网上买了一个一模一样的NFC读卡器,幻想着自己也可以这么厉害。可是货一到,热情就没了,因为当时以为很简单,哪知研究了一下竟不知从哪下手。不过好在也没浪费,拿着它配了个钥匙。就这样一晃半年过去了……最近我又看到了这个NFC读卡器,然后还找到了自己大学时期买的树莓派,心想着,是不是可以结合一下。最终功夫不负有心人,花了好几天的时间,终于把它们拼起来了!

设备:充电宝(5v输出)、树莓派(3代)、NFC读卡器(ACR122U-A9)、手机(具备热点功能)

语言:python3

流程:大概就是用充电宝充当树莓派的电源,然后把NFC读卡器连接到树莓派,并在树莓派里面执行读取银行卡的程序,读取到银行卡信息后树莓派通过手机开的热点网络将银行卡信息发送到自己的邮箱,于是手机上就能看到银行卡相关信息了。

难点:主要是如何通过NFC读卡器,从银行卡里读数据。需要通过读卡器给银行卡发送什么数据,对银行卡返回的数据做怎样的处理。

写代码前准备:虽然看着下面主代码不多,但其实里面要学很多知识,尤其是关于金融集成电路(IC)卡规范里面的内容,当时反反复复看了一个通宵才弄明白了一些。我们在写代码前大致是要先找到NFC读卡器说明文档和银行卡相关规范,了解其工作过程。NFC读卡器发送请求数据给银行卡,然后银行卡响应数据,发送和响应的这些数据都是十六进制表示的,在银行卡规范中均有详细说明。知道了命令之后,就是测试。测试我们用ACR122U读卡器配套的工具(ACR122UTool,可在官网下载,下面资源包中也有)就行,该工具可以发送十六进制命令,然后会显示出响应的十六进制格式的字符串,这个字符串是TLV格式的,直接看看不懂,需要再解析一下,这时便可使用工具EMV TLV查询分析器(下面资源包中已有)。你把得到的字符串直接复制上去,它会给你解析好,这样你看起来就清晰一些了。不过解析出来的依旧是十六进制,这些个十六进制的字符其实是字节串,这时候需要用python给转码一下,转成gb2312(不要问我怎么知道要转成这个格式的,因为我是挨个测试出来的……)就可以看到字母或中文了。最后把这一系列过程用python写出来就行了。

ACR122UTool截图:

将上面的结果复制去空格粘贴到EMV TLV查询分析器中分析:注:最后的'90 00'不要复制,因为这是这个工具的状态信息,9000表示返回成功。

我们看到十六进制字符串已经被解析成一段一段了,每段都有其特殊的意义,我们把其中的value转码成gb2312,就能看到字母或汉字了。

主程序代码:

#coding=utf-8

‍执行以上代码前需安装pyscard库:

sudo apt-get install pcscd git python3-setuptools swig gcc libpcsclite-dev python3-dev

(注:windows用户可直接执行 pip3 install pyscard 安装)

程序及资料: NFC资料代码

后记:其实上面的演示,你只要有个NFC读卡器就行,这个是最重要的,然后我的python程序是在window10上写的,之后放到了树莓派中。所以上面提到的exe文件工具,如果你是苹果电脑打不开,可能得另想办法。然后我最后面写的参考文章你也可以看看,里面有很多东西也是很重要的,不然你可能会看不懂我在说什么。这个NFC读卡器只针对带有芯片的银行卡,纯磁条卡不行。你使用这个信息读取器读取银行卡时,有时候会碰到持卡人姓名,证件号没有的情况,而且其实这种是大多数的情况,这因为银行在建卡时没有把这些数据写入。PBOC3.0目前的规范是不强制录入持卡人信息,据说PBOC4.0就是建议不要录入持卡人信息,而我们现在正处于PBOC3.0到PBOC4.0之间的阶段。

声明:本软件不得用于商业及非法用途,仅做学习交流使用。

参考文章:

使用Python读取银行卡信息

附A:如何关闭ACR122U读卡器刷卡蜂鸣声。有时候我们想神不知鬼不觉的扫一下银行卡,所以我们得把这个声音关掉。 

  1. 打开ACR122UTool.exe 

  2. 点击Reader Commands -> New Connection 

  3. 点击Send Commands -> Direct Command 

  4. 在Data in的命令框中输入:FF00520000 

  5. 点击Send Direct,即操作完成,此时再放上银行卡声音已经没了。 

(另:如需恢复声音,执行FF0052FF00即可。)

(注:以上内容可参考文档API-ACR122U-CN-2.04.pdf,上文资料里已包含。)

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2