该存储库包含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的约束。因此,该存储库的存在归功于那些努力将这些卡公开反向工程的个人。该项目的开发中使用了以下资源: