- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前可以正确使用 pyscard 与我的智能卡通信,但是当 apdu 大小超过 255 字节时,我需要接收命令的剩余字节。
用什么方法获取 pyscard 中的剩余字节?根据我的理解,sw2 应该是剩余字节数。
def _cmd(self, cl, ins, p1, p2, data=''):
command = '%02x%02x%02x%02x%02x%s' % (cl, ins, p1, p2, len(data),
data.encode('hex'))
data, sw1, sw2 = self.reader.transmit(hex2cmd(command))
return data, sw1 << 8 | sw2
def _cmd_ok(self, *args, **kwargs):
data, status = self._cmd(*args, **kwargs)
if status != 0x9000:
raise Exception('APDU error: 0x%04x' % status)
return ''.join(map(chr, data))
最佳答案
您可能指的是 61xx 状态代码,其中 xx 表示仍然可用的字节数。不幸的是,如果您的卡使用 T=0 进行通信,这只能被认为是理所当然的。然后 GET RESPONSE 将返回下一个数据 block 。一些人提倡,同样也应该使用其他通信协议(protocol),但是一旦涉及安全消息传递,尤其是使用序列计数器,就会出现严重的问题。
最简洁的方法,因为适用于任何命令,是在您的 APDU 中使用扩展长度规范,如果您的卡支持它,但是必须找出这个以及最大缓冲区大小。如果存在 LC,则使用字节零、高字节、低字节然后是 LE 以及高字节、低字节来指定扩展长度。如果没有 LC,则扩展长度指示符(零字节)必须在两字节 LE 规范之前。有关详细信息(一如既往),请参阅 ISO 7816-4。
关于python - 智能卡:pyscard 从 apdu 获取剩余字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21158527/
我有一个 ACR38 阅读器,并且使用 Python2.7。我搜索了使用 python 与读者通信的方法,最后找到了下面的代码 here import sys sys.path.append('D:\
我正在尝试使用 mifare 卡读取序列号。我可以使用 pyscard 的 atr。但是当我使用多张卡时,他会给出相同的 ID。 或者我将数据写入 mifare 卡。但是我该怎么做。我在 ubuntu
我目前可以正确使用 pyscard 与我的智能卡通信,但是当 apdu 大小超过 255 字节时,我需要接收命令的剩余字节。 用什么方法获取 pyscard 中的剩余字节?根据我的理解,sw2 应该是
我是一名优秀的程序员,十分优秀!