You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NTAG213密码移除问题:修改AUTH0后卡片无法正常使用

NTAG213 NFC卡片移除密码保护的问题(Flutter flutter_nfc_kit)

使用Flutter的flutter_nfc_kit包开发NTAG213 NFC卡片管理应用,已成功实现密码保护功能,但移除密码保护时遇到以下问题:

  • 将AUTH0页设置为0xFF或0x0F会导致卡片永久不可用(报废)
  • 将AUTH0页设置为0x00无法关闭密码保护
  • 修改后卡片停止响应,无法进行后续操作

移除密码保护的代码片段

Future<bool> removePasswordProtection({
  required List<int> password,
}) async {
  try {
    setStatus('Checking NFC availability...');
    var availability = await FlutterNfcKit.nfcAvailability;
    if (availability != NFCAvailability.available) {
      setStatus('NFC not available');
      return false;
    }

    setStatus('Scanning for NFC tag...');
    setScanning(true);

    var tag = await FlutterNfcKit.poll(
        timeout: const Duration(seconds: 10), androidCheckNDEF: true);

    setStatus('Checking if card is NTAG213...');
    if (!await isNTAG213(tag)) {
      setStatus('Not an NTAG213 card');
      return false;
    }

    setStatus('Attempting authentication...');
    var authCommand = Uint8List.fromList([
      0x1B, // PWD_AUTH command
      password[0],
      password[1],
      password[2],
      password[3]
    ]);

    try {
      var authResponse = await FlutterNfcKit.transceive(authCommand);
      print('Auth Response: ${authResponse.map((e) => e.toRadixString(16).padLeft(2, '0')).join(' ')}');
      if (authResponse.length < 2) {
        setStatus('Authentication failed: Invalid response');
        return false;
      }
    } catch (e) {
      setStatus('Authentication Error: $e');
      return false;
    }

    // Clear password (page 0x2B)
    await FlutterNfcKit.transceive(
        Uint8List.fromList([0xA2, 0x2B, 0xFF, 0xFF, 0xFF, 0xFF]));
    // Clear PACK (page 0x2C)
    await FlutterNfcKit.transceive(
        Uint8List.fromList([0xA2, 0x2C, 0x00, 0x00, 0x00, 0x00]));
    // Modify AUTH0 (page 0x29)
    await FlutterNfcKit.transceive(
        Uint8List.fromList([0xA2, 0x29, 0xFF, 0x00, 0x00, 0x00]));

    setStatus('Password protection reset successfully');
    await FlutterNfcKit.finish();
    setScanning(false);
    return true;
  } catch (e) {
    setStatus('Error: $e');
    await FlutterNfcKit.finish();
    setScanning(false);
    return false;
  }
}

已尝试的操作

  • 通过第3页的能力容器验证卡片为NTAG213
  • 使用有效值清空密码页(0x2B)和PACK页(0x2C)
  • 尝试为AUTH0写入不同值以关闭保护,但仍遇到上述问题

内容的提问来源于stack exchange,提问作者Kamal Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:50:55