【发布时间】:2020-01-17 16:28:03
【问题描述】:
我正在尝试使用 SCP03 在 eUICC 上进行相互身份验证。当我向卡发送外部身份验证命令时,我收到了它的响应:AF8023026985,我相信 SW = 6985。
谁能告诉我我错过了什么?
这就是我在 Python 3 中生成外部身份验证命令的方式:
extAuthCmdBase = '8482330010'
initialStrForMac = 16 * '00' + extAuthCmdBase + hostCryptogram
C_MAC = aes.CMAC(initialStrForMac, sMAC)
extAuthAPDU = extAuthCmdBase + hostCryptogram + C_MAC[:16]
len_apdu = hex(len(extAuthAPDU))[2:].upper().zfill(2)
expExtAuthAPDU = 'AE80' + '22' + len_apdu + extAuthAPDU + '0000'
【问题讨论】:
-
我看到很多包含十六进制数字的字符串,我希望在其中使用字节,例如。 G。在 initialStrForMac 中,'00' 必须替换为 '\x00'。鉴于这会影响每一个命令:你在哪里隐藏了到二进制的转换?
-
感谢您的评论@guidot。
16*''00'到16*\x00'的转换发生在aes.CMAC()中,我将十六进制字符串转换为bytes.fromhex(hexString)。
标签: smartcard sim-card emv globalplatform