在Python中从RFID卡读取唯一的ID



我有一个OmniKey 5321智能卡读卡器和一台安装了Debian的电脑。下面的Python代码读取卡片:

from smartcard.CardMonitoring import CardMonitor, CardObserver
from smartcard.util import *
import sys
class printobserver( CardObserver ):
    def update( self, observable, (addedcards, removedcards) ):
        for card in addedcards:
            print "+Inserted: ", toHexString( card.atr )
        for card in removedcards:
            print "-Removed:  ", toHexString( card.atr )
try:
    print "Insert or remove a smartcard in the system."
    print ""
    cardmonitor = CardMonitor()
    cardobserver = printobserver()
    cardmonitor.addObserver( cardobserver )
    raw_input('Press Enter to exitn')
except:
    print "Unexpected error: ", sys.exc_info()[0]

Python代码运行良好,但是对于许多卡片返回相同的atr标记。给定的atr为:

3B 8F 80 01 80 4F 0C A0 000 000 03 06 03 000 01 000 000 000 000 000 6A

我怎样才能从卡片中读出一些独特的东西呢?我明白我必须发送一些命令,回复将包含UID,但是我如何才能找到这些命令呢?我怎么寄呢?

谢谢!

一旦连接到卡(或实际上是读卡器),您可以发送PC/SC标准化命令,从读卡器获取卡的UID:

FF CA 00 00 00

最新更新