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
相关产品推荐
相关产品推荐

