用Python读取RFID卡中的唯一ID

1 投票
1 回答
2514 浏览
提问于 2025-04-17 21:55

我有一个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 个回答

3

一旦你连接上了卡片(其实是读卡器),你就可以发送一个标准的命令来从读卡器获取卡片的唯一标识符(UID):

FF CA 00 00 00

撰写回答