2012-03-12 20 views
5

Tôi đang cố xác thực thẻ Mifare Ultralight C (ISO/IEC 14443-2 và 14443-3 loại A tương thích).Xác thực Mifare Siêu nhẹ C trong Android (2.3.6)

Tôi gửi lệnh xác thực bằng chức năng MifareUltralight.transceive() được cung cấp trong Android. Tôi cũng đã kiểm tra NfcA.transceive() (IsoDep có vẻ không tương thích với loại thẻ này vì đối tượng này là để xử lý các thẻ ISO/IEC 14443-4 và đó là lý do tại sao tôi không sử dụng IsoDep.transceive()). Vì vậy, khi tôi lần đầu tiên gửi lệnh yêu cầu xác thực thẻ trả lời transceive() với AFxxxx ..... nơi tôi xử lý câu trả lời thẻ và sau đó tôi gửi một transceive() khác với câu trả lời cho câu trả lời đó nhưng. .. ngay trước khi gửi thẻ transceive() được kết nối, khi nó được gửi, tôi nhận được cảnh báo "thẻ bị mất" và "không thể chuyển đổi được".

Ngoài ra, nếu tôi thử với NfcA, cùng một vấn đề sẽ xảy ra.

Cuối cùng, nếu tôi cố gắng gửi một lệnh xác thực sau câu trả lời đầu tiên, tôi cũng nhận được cảnh báo "Thẻ bị mất" với lỗi chuyển đổi.

Vì vậy, câu hỏi của tôi là:

Tại sao thẻ NFC bị lạc khi tôi gửi Transceive thứ hai()? < <

(Nó dường như không phải là một vấn đề thời gian chờ vì chỉ trước khi gửi Transceive thứ hai() kết nối được mở với thẻ) tôi làm tất cả những thứ trong một chủ đề khác nhau từ giao diện người dùng.

Cảm ơn trước!

+0

Đoán của tôi là phản hồi (lần gửi thứ hai) không xác thực đúng và thẻ không bao giờ phản hồi, do đó tìm đến điện thoại như thẻ bị mất. Hãy thử viết (ghi 4 byte) một số lần và xem nó có hiệu quả không. Nó sẽ được chuyển tải (0xA2, 0x06, 0x01, 0x02, 0x03, 0x04) trong đó 0x06 là số trang. Nếu điều đó hoạt động thì nỗ lực của bạn trong việc xác thực sẽ là những gì sai. –

+0

Đầu tiên, cảm ơn câu trả lời của bạn :). Sau khi đọc nó tôi nghĩ rằng bạn có thể đúng và vấn đề có thể là trả lời của tôi để xác thực là không chính xác, vì vậy tôi sẽ cố gắng những gì bạn đề nghị tôi biết nếu điều này có ý nghĩa. Nhưng, có vẻ là một quan điểm tốt. Cảm ơn bạn lần nữa! ;) Tôi sẽ đăng ở đây nếu viết một số lần là ok ngay khi tôi triển khai. – Miguel

+0

Có, sau khi thực hiện một số tác phẩm nó hoạt động, do đó, nó có vẻ là một vấn đề với yêu cầu xác thực của tôi. Cảm ơn sự giúp đỡ của bạn, tôi sẽ kiểm tra quy trình yêu cầu của tôi để tìm ra sự cố. Cảm ơn sự giúp đỡ của bạn! :) – Miguel

Trả lời

3

Cách tiếp cận của bạn có vẻ đúng. Tuy nhiên, hành vi của thẻ cho biết rằng phản hồi của bạn đối với câu trả lời của thẻ là không chính xác. Trong trường hợp đó, thẻ từ chối trả lời. Từ quan điểm của điện thoại, điều này không thể phân biệt được với thẻ đã biến mất, vì vậy bạn có được TagLostException.

+0

Vâng, có thể bạn nói đúng, tôi sẽ cố gắng tạo ra những tác phẩm liên tiếp mà Ben đề xuất và chúng tôi sẽ nhận được thông báo lỗi của tôi. Cảm ơn bạn đã trả lời NFC guy! – Miguel

+0

Bạn có lý do, tôi sẽ kiểm tra quy trình xác thực của tôi để tìm những gì sai! Cảm ơn sự giúp đỡ của bạn :) – Miguel

+0

Tôi đã xem xét thuật toán xác thực của mình và tôi đã tìm thấy một tiền đề có thể sai. Tôi sử dụng như khóa xác thực mặc định tất cả "0h". Có thể đó là vấn đề? - Cảm ơn trước! – Miguel