2012-03-12 13 views
5

Próbuję uwierzytelnić znacznik Mifare Ultralight C (zgodny z ISO/IEC 14443-2 i 14443-3 typu A).Uwierzytelnianie Mifare Ultralight C w systemie Android (2.3.6)

Wysyłam polecenie uwierzytelniania za pomocą funkcji MifareUltralight.transceive() dostępnej w systemie Android. Sprawdziłem również NfcA.transceive() (IsoDep wydaje się nie być kompatybilny z tego rodzaju znacznikiem, ponieważ ten obiekt służy do obsługi znaczników ISO/IEC 14443-4 i dlatego nie używam IsoDep.transceive()).

Tak więc, kiedy po raz pierwszy wysyłam polecenie żądania uwierzytelnienia, znacznik odbiera transceive() z AFxxxx ..... gdzie przetwarzam odpowiedź znacznika, a następnie wysyłam kolejny transceive() z odpowiedzią na tę odpowiedź, ale. .. tuż przed wysłaniem transceive() tag jest podłączony, kiedy jest wysyłany otrzymuję ostrzeżenie "tag lost" i "transceive failed".

Ponadto, jeśli spróbuję tego z NfcA, ten sam problem się stanie.

Wreszcie, jeśli spróbuję wysłać jedno polecenie uwierzytelnienia po pierwszej odpowiedzi, otrzymam również ostrzeżenie "Tag lost" z nieudanym transieive.

Więc moje pytanie brzmi:

Dlaczego tag NFC zgubić kiedy wysłać drugą Transceive()? < <

(To nie wydaje się być problemem limitu czasu, ponieważ tuż przed wysłaniem drugiego Transceive() połączenie jest otwarte z tagiem) zrobiłem wszystkie rzeczy w innym wątku z interfejs użytkownika.

Z góry dziękuję!

+0

Zgaduję, że ta odpowiedź (drugi wysłany) nie jest poprawnie uwierzytelniana, a tag nigdy nie odpowiada, więc patrzenie na telefon tak, jak tag został utracony. Spróbuj pisać (4-bajtowe zapisy) kilka razy i sprawdź, czy to działa. Byłby to transcieve (0xA2, 0x06, 0x01, 0x02, 0x03, 0x04), gdzie 0x06 to numer strony. Jeśli to działa, twoja próba uwierzytelnienia byłaby tym, co jest nie tak. –

+0

Po pierwsze, dziękuję za odpowiedź :). Po przeczytaniu uważam, że możesz mieć rację, a problem może polegać na tym, że moja odpowiedź na uwierzytelnienie jest nieprawidłowa, więc spróbuję tego, co mi zaproponowałeś, aby wiedzieć, czy to ma sens. Ale wydaje się być dobrym punktem widzenia. Jeszcze raz dziękuję! ;) Będę pisać tutaj, jeśli pisanie wiele razy było ok, jak tylko go zaimplementuję. – Miguel

+0

Tak, po zrobieniu kilku pism to działa, więc wydaje się, że jest problem z moją prośbą o uwierzytelnienie. Dzięki za pomoc, sprawdzę procedurę żądania, aby znaleźć problem. Dzięki za pomoc! :) – Miguel

Odpowiedz

3

Twoje podejście wydaje się prawidłowe. Jednak zachowanie znacznika wskazuje, że odpowiedź na odpowiedź tagu była niepoprawna. W takim przypadku tag odmawia odpowiedzi. Z punktu widzenia telefonu jest to nieodróżnialne od zniknięcia tagu, więc dostajesz TagLostException.

+0

Tak, może masz rację, postaram się napisać kolejne pisma, które Ben zasugerował, a otrzymamy prawdę o moim błędzie. Dzięki za odpowiedź NFC! – Miguel

+0

Masz powód, sprawdzę procedurę uwierzytelnienia, aby znaleźć przyczynę problemu! Dzięki za pomoc :) – Miguel

+0

Przeglądałem mój algorytm uwierzytelniania i znalazłem jedną przesłankę, która może być błędna. Używam jako domyślny klucz uwierzytelniający wszystkie "0h". Czy to może być problem? - Z góry dziękuję! – Miguel

Powiązane problemy