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

时间:2014-03-12 10:17:28

标签: python smartcard rfid smartcard-reader contactless-smartcard

我有一台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 exit\n')
except:
    print "Unexpected error: ", sys.exc_info()[0]

Python代码运行正常,但为许多卡提供了相同的 atr 标记。给定的atr是:

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

我怎样才能从卡片中读到一些东西?我知道我必须发送一些命令,回复将包含UID,但我怎样才能找到命令?我将如何发送它们?

谢谢!

1 个答案:

答案 0 :(得分:3)

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

FF CA 00 00 00