2012-03-12 20 views
5

Estoy intentando autenticar una etiqueta Mifare Ultralight C (compatible con ISO/IEC 14443-2 y 14443-3 tipo A).Autenticación Mifare Ultralight C en Android (2.3.6)

Envío el comando de autenticación con la función MifareUltralight.transceive() provista en Android. También he comprobado NfcA.transceive() (IsoDep parece no ser compatible con este tipo de etiqueta porque este objeto es para tratar con etiquetas ISO/IEC 14443-4 y es por eso que no uso IsoDep.transceive()).

Entonces, cuando envío por primera vez el comando de solicitud de autenticación, la etiqueta responde al transceptor() con AFxxxx ..... donde proceso la respuesta de etiqueta y luego envío otro transceptor() con la respuesta a esa respuesta. .. justo antes de enviar el transceptor() la etiqueta está conectada, cuando se envía me aparece una advertencia de "etiqueta perdida" y un "error de transceptor".

Además, si lo intento con NfcA ocurre el mismo problema.

Finalmente, si trato de enviar un comando de autenticación después de la primera respuesta, recibo también una advertencia de "Etiqueta perdida" con el fallo del transceptor.

Así que mi pregunta es:

¿Por qué la etiqueta NFC se pierden cuando envío el segundo transceptor()? < <

(No parece que sea un problema de tiempo de espera porque justo antes de enviar el segundo transceptor() la conexión está abierta con la etiqueta) hice todas las cosas en un hilo diferente de la interfaz de usuario uno.

¡Gracias de antemano!

+0

Supongo que la respuesta (el segundo envío) no se autentica correctamente y la etiqueta nunca responde, mirando el teléfono como si se hubiera perdido la etiqueta. Intente escribir (escritura de 4 bytes) varias veces y vea si eso funciona. Sería transcieve (0xA2, 0x06, 0x01, 0x02, 0x03, 0x04) donde el 0x06 es el número de página. Si eso funciona, entonces su intento de autenticación sería lo que está mal. –

+0

Primero, gracias por su respuesta :). Después de leerlo, creo que podría tener razón y el problema podría ser que mi respuesta a la autenticación es incorrecta, así que intentaré lo que me sugirió saber si esto tiene sentido. Pero, parece ser un buen punto de vista. ¡Gracias de nuevo! ;) Voy a publicar aquí si escribir varias veces estuvo bien tan pronto como lo implemente. – Miguel

+0

Sí, después de hacer varias escrituras funciona, por lo que parece ser un problema con mi solicitud de autenticación. Gracias por su ayuda, revisaré mi procedimiento de solicitud para averiguar cuál es el problema. ¡Gracias por su ayuda! :) – Miguel

Respuesta

3

Su enfoque parece ser el correcto. Sin embargo, el comportamiento de la etiqueta indica que su respuesta a la respuesta de la etiqueta fue incorrecta. En ese caso, la etiqueta se niega a responder. Desde el punto de vista del teléfono, esto es indistinguible de que la etiqueta haya desaparecido, por lo que obtienes un TagLostException.

+0

Sí, quizás tengas razón, intentaré hacer las escrituras consecutivas que sugirió Ben y obtendremos la verdad de mi error. Gracias por su respuesta chico NFC! – Miguel

+0

¡Tiene razón, verifico mi procedimiento de autenticación para encontrar lo que está mal! Gracias por tu ayuda :) – Miguel

+0

Estaba revisando mi algoritmo de autenticación y encontré una premisa que podría ser incorrecta. Uso como la clave de autenticación predeterminada todo "0h". ¿Podría ser el problema? - ¡Gracias por adelantado! – Miguel

Cuestiones relacionadas