收藏
回答

MifareClassic.transceive 验密失败,求帮助

在进行M1 s50卡的读写开发,但是在验密过程一直失败

验密指令:[0x60, 0x04, 0x55, 0xED, 0xA1, 0x3F,0xC3, 0x37, 0x21, 0xA4, 0x12, 0x68]

秘钥和ID号是正确的,(ps:但是ID号随便写什么,都和返回结果没关系)

返回结果是 {errMsg: "transceive:ok", data: ArrayBuffer(1)} data里面是 00

其他的命令比如读、写、选卡等的话 可以成功 但是操作也是无效的,返回的结果大概是这种[-78000000000000000]

回答关注问题邀请回答
收藏

2 个回答

  • I could fran
    I could fran
    2021-09-11

    我的问题和您类似,读取 mifare classic 的标签,验密结果是 [0],读取数据块的结果是 [10, -78]

    尝试添加了 isConnected 的判断,结果是 { isConnected: false, errMsg: "isConnected:ok", errno: 0 }

    执行读取命令,transceive 方法的参数应该是多少?似乎需要 4 个字节是吗?

    上面这些返回值应当如何解释?正确的情况返回值是多少呢?

    您是怎样解决问题的?可以详细说说吗

    2021-09-11
    有用
    回复
  • 水风轻
    水风轻
    2021-04-26

    问题解决了,所有的读写卡验密操作前 必须先isconnected

    2021-04-26
    有用
    回复 3
    • 福广
      福广
      2021-07-05
      后续的读写是 在 isconnected success 函数中执行吗?
      2021-07-05
      回复
    • 福广
      福广
      2021-07-05
      let dataBytesArray = [


        [0x60, 0x01, 0x43, 0x30, 0x2e, 0xe2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
        [0x30,0x01, 0x43, 0x30, 0x2e, 0xe2],
      ];    
      nfcA.isConnected({
            success: function () {
              console.log("isConnected success: step:", step)
              let dataBytes = dataBytesArray[step];
              let dataBuffer = new Int8Array(dataBytes).buffer
              nfcA.transceive({
                data: dataBuffer,
                success: function (res) {
                  console.log("发送数据成功2", dataBytes, ", 接收数据如下:", res)
                  transceiveCallBack(nfcA, ++step)
                },
                fail: function (err) {
                  console.log('发送数据失败2', dataBytes, "err:", err);
                }
              })
            },
            fail: function (err) {
              console.log('isConnected failed');
            }
          })
      我将 transceive 放到 isConnected sunccess 里面执行也不行
      2021-07-05
      回复
    • 梦什么想
      梦什么想
      2023-09-08回复福广
      解决了吗我一直验证失败,0x60,密钥,卡号是对的
      2023-09-08
      回复
登录 后发表内容
问题标签