該存儲庫包含SK-AD3卡分配器Python API。 API對於SK-AD3的大部分功能都實現了高級終點。重要的是要立即註意到SK-AD3執行兩組不同的操作。第一組操作是用於操縱設備的機械組件和傳感器的本機命令(將卡移到捕獲框,讀取堆疊器的狀態等)。第二組操作與與RFID卡的通信有關(目前此API僅支持與Desfire EV1卡的通信)。第一組操作涉及與分配器的串行通信。第二組操作涉及通過與分配器的串行連接與RFID卡通信。因此,該項目公開了兩個API,一個用於基本的SK-AD3操作,另一個用於RFID操作。但是,由於RFID通信是通過分配器代理的,因此Desfire API依賴於適當的基本分配器代碼的資源。
導入模塊,創建分配器對象並使用它來初始化SK AD3是相當直觀的。每個命令都返回可用於檢查設備狀態的響應。
from SK_AD3_Card_Dispenser import SK_AD3
dispenser = SK_AD3 ( 'COM7' )
response = dispenser . init ()
if response . is_successful ():
print ( response . status ())可以像這樣發出的基本機械命令,例如將卡移至給定位置(例如“ RF”位置):
response = dispenser . move_card ( 'RF' )卡片處於“ RF”位置後,您可以激活卡並開始通信。這是如何激活A型RFID卡並獲得其UID的一個示例:
response = dispenser . activate_RF_card ( 'type_a' )
if response . is_successful ():
response = dispenser . get_card_uid ()
uid = response . data [ 'uid' ]
# Do something with uid某些RFID操作需要身份驗證。 SK AD3在卡級別和應用程序級別上執行外部身份驗證。您需要根據卡上的設置進行身份驗證。身份驗證響應對象將方便地持有生成的會話密鑰,該密鑰可用於加密通信和敏感的RFID命令。
response = dispenser . aes_authenticate ( SUPER_SECRET_AES_MASTER_KEY )
if response . is_successful ():
session_key = response . data [ 'session_key' ]一旦經過適當的身份驗證,就可以使用內置預設在卡上創建應用程序:
from SK_AD3_Card_Dispenser . file_objects . application import PermissiveDesfireApplication
my_app = PermissiveDesfireApplication ([ 0xAB , 0xCD , 0xEF ])
dispenser . create_application ( my_app )文件也是如此:
from SK_AD3_Card_Dispenser . file_objects . file import PermissiveStandardDataFile
my_file = PermissiveStandardDataFile ([ 0x00 ])
dispenser . select_application ([ 0xAB , 0xCD , 0xEF ])
dispenser . create_standard_data_file ( my_file ) 或者,如果您有特定的需求,則可以將通用APDU發送到卡。下面的代碼等同於上述代碼,除了send_raw_apdu將以整數列表而不是Response對象的形式返回原始命令包:
dispenser . send_raw_apdu ([ 0x90 , 0x5A , 0x00 , 0x00 , 0x03 , 0xAB , 0xCD , 0xEF , 0x00 ])
dispenser . send_raw_apdu ([ 0x90 , 0xCD , 0x00 , 0x00 , 0x07 , 0x00 , 0x00 , 0xEE , 0xEE , 0x10 , 0x00 , 0x00 , 0x00 ])Python 3(建議)。
該項目將APDU UTILS用作Git子模塊。使用---recurse-submodules標誌克隆該項目,以確保包括APDU UTILS。以下模塊還需要安裝在您的環境中:
跑步
pip install -r requirements.txt
更新您的依賴項。
DESFIRE EV1卡的文檔受NDA的約束。因此,該存儲庫的存在歸功於那些努力將這些卡公開反向工程的個人。該項目的開發中使用了以下資源: