2011-04-14 167 views
11

我怎樣才能獲得NFC非接觸式讀卡器ACR122U表現爲一個標籤(卡模擬模式)? 招股說明書聲稱該設備可以進行卡片仿真,但SDK似乎沒有提供此功能的示例或文檔。ACR122 - 卡仿真

有誰知道如何做到這一點? 是否需要額外的軟件? 請注意,我的目標平臺是MS Windows。

在此先感謝

+0

也許您可以使用ACR122U的p2p模型,將其設置爲啓動器的模型。我看到你的另一個問題「Android 2.3.3與基於PC的NFC閱讀器的NFC對等通信」,你需要與其他基於PC的應用程序交流。你有沒有實現它?或者你使用ACR122U來實現它? – user556615 2011-04-16 12:25:48

+0

嗨用戶556615,我試圖使用p2p爲了讓Nexus和ACR122U進行通信,但還沒有設法得到任何地方。 – chalad 2011-04-18 06:49:01

+0

嗨,我也嘗試使用p2p溝通Nexus和acr122u,我想使用libnfc來實現它,但沒有管理,我們有同樣的問題,如果你有新的東西,你能告訴我嗎?我的電子郵件:n[email protected] – user556615 2011-04-18 06:57:59

回答

5

對於「卡仿真」,或者換句話說,「配置爲目標,等待啓動器」,請參考這裏:http://code.google.com/p/nfcip-java/source/browse/trunk/nfcip-java/doc/ACR122_PN53x.txt

 
** Command to PN532 ** 
0xd4 0x8c TgInitAsTarget instruction code 
0x00 Acceptable modes 
(0x00 = allow all, 0x01 = only allow to be 
initialized as passive, 0x02 = allow DEP only) 

_6 bytes (_MIFARE_)_: 
0x08 0x00 SENS_RES 
0x12 0x34 0x56 NFCID1 
0x40 SEL_RES 

_18 bytes (_Felica_)_: 
0x01 0xfe 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 
NFCID2 
0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 
? 
0xff 0xff System parameters? 
0xaa 0x99 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11 
NFCID3 
0x00 ? 
0x00 ? 

這是響應時引發劑激活此目標:

 
** Response from PN532 ** 
0xd5 0x8d TgInitAsTarget response code 
0x04 Mode 
(0x04 = DEP, 106kbps) 

讓我知道它是否有效!

+0

感謝您的回覆 - 我試過了,但沒有奏效。我會再給它一次,讓你知道我的進展 – chalad 2011-05-20 08:24:16

+1

這看起來很有前途。有沒有人得到這個成功的工作? – conor 2013-01-27 00:56:06

+0

FF 00 00 00 02 D4 56爲我返回了一個錯誤(63): -/ – Momro 2013-02-28 12:15:01

1

你也可以嘗試發送以下ADPU在HEX把讀者 「卡仿真」 模式:

FF 00 00 00 27 D4 8C 00 08 00 12 34 56 40 01 FE A2 A3 A4 A5 A6 A7 C0 C1 C2 C3 C4 C5 C6 C7 FF FF AA 99 88 77 66 55 44 33 22 11 00 00

+0

Hi Marko,我回來了以下答案:D5 8D 26 1E D4 01 FE A2 A3 A4 A5 A6 A7 32 46 66 6D 01 01 10 03 02 01 04 01 96 90 – chalad 2011-04-21 13:16:07

+0

I'n不知道這意味着什麼,但我從來沒有設法得到一個ID或讀取仿真卡的部門。 – chalad 2011-04-21 13:17:04

+0

任何人都明白這一點?我嘗試了以上 - 獲得了與Chalad相同的響應(使用javax.smartcardio到ACR122U)。將NEXUS S放入ACR122U讀卡器時會出現這種響應。在NEXUS S日誌中,它顯示爲發現P2P目標,但獲得NFCSTATUS FAILED。我想理解TgInitAsTarget的組成部分將是必要的,以進一步進行。 – gamozzii 2011-09-01 06:34:53

0

可以使用LibNFC。它有這樣的示例代碼。

我仍然沒有得到這個不幸的正常工作在Windows中。您可能必須爲特定的驅動程序編譯libnfc。

此外,ACR122u似乎是相當糟糕,許多圖書館的支持。顯然它並不是真正用於這種用途。卡模擬也有一些特殊問題(例如超時)。我們都需要停止ACR122u。我剛剛買了那些很受歡迎,很容易獲得但現在很後悔的東西。

爲了未來的瀏覽器/搜索過這個即將到來:請在libnfc網站的兼容性部分,買東西,他們推薦!

1

用於獲取ACR122(或者更確切地說,它裏面的PN532 NFC控制器芯片)到卡模擬模式時,你會做了解以下信息:

  1. ReadRegister:

    > FF000000 08 D406 6305 630D 6338 
    < D507 xx yy zz 9000 
    
  2. 更新寄存器值:

    xx = xx | 0x004; // CIU_TxAuto |= InitialRFOn 
    yy = yy & 0x0EF; // CIU_ManualRCV &= ~ParityDisable 
    zz = zz & 0x0F7; // CIU_Status2 &= ~MFCrypto1On 
    
  3. WriteRegister:

    > FF000000 11 D408 6302 80 6303 80 6305 xx 630D yy 6338 zz 
    < D509 9000 
    
  4. SetParameters:

    > FF000000 03 D412 30 
    < D513 9000 
    
  5. TgInitAsTarget

    > FF000000 27 D48C 05 0400 123456 20 000000000000000000000000000000000000 00000000000000000000 00 00 
    < D58D xx ... 9000 
    

    xx應等於0x08的。

  6. 通信使用TgGetData的序列,並且TgSetData命令:

    > FF000000 02 D486 
    < D587 xx <C-APDU> 9000 
    

    xx是狀態代碼(應爲0x00成功)和C-APDU是從讀取器發送的命令。

    > FF000000 yy D48E <R-APDU> 
    < D587 xx 9000 
    

    哪裏yy是2 +的R-APDU(響應)和xx的長度的狀態碼(應爲0x00成功)。

+0

當我發送'TgInitAsTarget'我沒有得到任何迴應。答案是空的。你知道原因是什麼嗎?我把這樣的:'{(字節)爲0xFF,0×00,0×00,0×00,×27,(字節)0xD4(字節)0x8C爲0x05,0x04的0x00時,0×12,0x34,0x56儲存,爲0x20,0x00時,爲0x00,0x00時,爲0x00 ,爲0x00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00,0x00時,0×00 ,0x00}' – 2014-07-15 21:02:28

+0

看起來這隻有當我把手機放在閱讀器上時纔有效。任何想法? – 2014-07-15 21:19:09