Tôi đã tải xuống các phần NFC từ AOSP và tôi đang tìm phương pháp được Android sử dụng để tạo UID ngẫu nhiên được sử dụng bằng mô phỏng thẻ. Mục tiêu của tôi là sửa UID thay vì có một cái khác nhau mỗi lần có một giao tiếp với mục tiêu. Tôi tìm thấy bên trong mô-đun "libnfc-nci" tệp "nfa_ce_act.c" chứa tệp này:Giả lập thẻ NFC Android với UID cố định
void nfa_ce_t3t_generate_rand_nfcid (UINT8 nfcid2[NCI_RF_F_UID_LEN])
{
UINT32 rand_seed = GKI_get_tick_count();
/* For Type-3 tag, nfcid2 starts witn 02:fe */
nfcid2[0] = 0x02;
nfcid2[1] = 0xFE;
/* The remaining 6 bytes are random */
nfcid2[2] = (UINT8) (rand_seed & 0xFF);
nfcid2[3] = (UINT8) (rand_seed>>8 & 0xFF);
rand_seed>>=(rand_seed&3);
nfcid2[4] = (UINT8) (rand_seed & 0xFF);
nfcid2[5] = (UINT8) (rand_seed>>8 & 0xFF);
rand_seed>>=(rand_seed&3);
nfcid2[6] = (UINT8) (rand_seed & 0xFF);
nfcid2[7] = (UINT8) (rand_seed>>8 & 0xFF);
}
Phương thức này tạo UID cho thẻ FeliCa. Tôi không thể tìm thấy một cho thẻ ISO14443 (MIFARE) mà tạo ra một khởi đầu UID với 0x08 theo mặc định. Theo Martijn Coenen, như được giải thích trong G + Post của mình, đó là điều có thể xảy ra.
Xin lỗi, tôi nhận thấy nhiều người muốn điều này, nhưng không thể có trong phiên bản chính thức. (Bạn có thể làm điều đó với một số hack AOSP). Lý do là HCE được thiết kế xung quanh hoạt động nền. Nếu chúng tôi cho phép ứng dụng đặt UID, mọi ứng dụng có thể muốn đặt UID của riêng họ và không có cách nào để giải quyết xung đột. Chúng tôi hy vọng rằng với HCE, cơ sở hạ tầng NFC sẽ chuyển sang các cấp cao hơn của ngăn xếp giao thức để thực hiện xác thực thay vì dựa vào UID (dù sao cũng dễ dàng sao chép). https://plus.google.com/+MartijnCoenen/posts/iX6LLoQmZLZ
Có ai biết cách đạt được điều đó không?
Cảm ơn
Tìm thấy bất kỳ giải pháp nào cho đến nay? –