日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NFC基础知识学习

發(fā)布時間:2023/12/9 编程问答 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NFC基础知识学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景知識

近場通信(Near Field Communication,簡稱NFC),是一種新興的技術(shù),使用了NFC技術(shù)的設(shè)備(例如移動電話)可以在彼此靠近的情況下進(jìn)行數(shù)據(jù)交換,是由非接觸式射頻識別(RFID)及互連互通技術(shù)整合演變而來的,通過在單一芯片上集成感應(yīng)式讀卡器、感應(yīng)式卡片和點對點通信的功能,利用移動終端實現(xiàn)移動支付、電子票務(wù)、門禁、移動身份識別、防偽等應(yīng)用。NFC可以理解為是RFID的一個子集。目前手機(jī)比較火的“碰一碰”功能就依托于該技術(shù)。
ISO/IEC 14443定義了TypeA、TypeB兩種卡片讀寫標(biāo)準(zhǔn):

Type A型卡在讀寫機(jī)上向卡傳送信號時,是通過13.56MHz的射頻載波傳送信號。其采用方案為同步、改進(jìn)的Miller編碼方式,通過100%ASK傳送;當(dāng)卡向讀寫機(jī)具傳送信號時,通過調(diào)制載波傳送信號。使用847kHz的副載波傳送Manchester編碼。
而Type B型卡在讀寫機(jī)具向卡傳送信號時,也是通過13.56MHz的射頻載波信號,但采用的是異步、NRZ編碼方式,通過用10%ASK傳送的方案;在卡向讀寫機(jī)具傳送信號時,則是采用的BPSK編碼進(jìn)行調(diào)制。

對比兩種卡型,可以看出,Type B型與Type A型卡相比有以下優(yōu)勢:

(1)芯片具有更高的安全性。接收信號時,不會因為能量損失而使芯片內(nèi)部邏輯及軟件工作停止。
(2)支持更高的通訊速率。Type A最大的數(shù)據(jù)通訊速率為150Kbit/s -200Kbit/s ,應(yīng)用10%ASK技術(shù)的Type B至少可支持400Kbit/s 的速率。
(3)外圍電路設(shè)計簡單。讀寫機(jī)具到卡以及卡到讀寫機(jī)具的編碼方式均采用NRZ方案,電路設(shè)計對稱,設(shè)計時可使用簡單的UARTS。
(4)抗干擾能力強。負(fù)載波采用BPSK調(diào)制技術(shù),較Type A方案降低了6dB的信號聲。

在ISO/IEC 14443-3規(guī)定了TYPEA,TYPEB 的防沖突機(jī)制。二者防沖突機(jī)制的原理完全不同。前者是基于BIT沖突檢測協(xié)議,后者則是通過字節(jié)、幀及命令完成防沖突。防沖突機(jī)制使非接觸式IC卡能進(jìn)行并行操作,及在多張卡同時進(jìn)入有效操作區(qū)后,可對其進(jìn)行有條不紊的操作,這樣就使 選定卡片的數(shù)據(jù)不受其它卡數(shù)據(jù)干擾,攜帶有多種卡的用戶可不必尋找正確的一張卡,只用算法編程,讀寫機(jī)具即可自動做到選取正確的一張卡進(jìn)行后續(xù)操作。這樣方便了操作,提高了應(yīng)用的并行性,也提高了系統(tǒng)的速度。

關(guān)于兩種類型的卡片的分類:

. ├── TypeA卡 │ ├── MifareOne(市面上的卡大部分都是M1卡,廣泛應(yīng)用于公交、地鐵、門禁等諸多領(lǐng)域) │ │ ├── S50 (容量:1K) │ │ ├── S70 (容量:4K) │ │ └── ... │ ├── NTAG │ │ ├── NTAG213(容量:180Bytes 可讀寫:144Bytes) │ │ ├── NTAG215(容量:540Bytes 可讀寫:504Bytes) │ │ ├── NTAG216(容量:924Bytes 可讀寫:888Bytes) │ │ └── ... │ ├── UID卡(M1模擬卡,可以隨意修改UID) │ └── ... └── TypeB卡└── CPU卡(如居民二代身份證、部分銀行卡等)

MifareOne卡(M1卡)

M1卡常見的卡片型號分為S20卡、S50卡、S70卡等,區(qū)別在于存儲大小不同,以應(yīng)用最廣泛的S50卡為例:

S50分為16個扇區(qū)、每個扇區(qū)4塊(0~3 Block)、共64塊,每塊16個字節(jié)。

按塊號編址為0~63,第0扇區(qū)的塊0用于存放廠商代碼,已經(jīng)固化不可更改。

其它扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,用于存儲數(shù)據(jù),塊3為控制塊,分別存放:

密碼A(6bytes)、存取控制(4bytes)、密碼B(6bytes)

每個扇區(qū)的密碼和存取控制是獨立的,可以根據(jù)實際需要設(shè)定各自的密碼及存取控制。三個控制位以正和反兩種形式存在于存取控制字節(jié)中,決定了該塊的訪問權(quán)限。如果進(jìn)行減值操作,必須驗證KEYA, 如果進(jìn)行加值操作,必須驗證KEYB。

注意:

  • M1卡讀、寫新的扇區(qū)前要先通過認(rèn)證。
  • 在存儲控制前后的密碼KEYA與密碼KEYB讀取出來都為0x00,并不代表該密碼就是0x00,而是對密碼進(jìn)行了保護(hù)。修改認(rèn)證密碼可以防止別人獲取到數(shù)據(jù)。通??ㄆ鰪S時秘鑰為{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}、Android NFC庫通常的讀寫的秘鑰為 {0xD3,0xF7,0xD3,0xF7,0xD3,0xF7}
  • 詳細(xì)參考鏈接:
    Type A型和Type B型卡的主要區(qū)別
    Mifare和CPU卡簡介與比較
    Mifare Classic 破解參考:http://t.zoukankan.com/k1two2-p-5415400.html

    NTAG卡

    NTAG213、NTAG215和NTAG216由恩智浦半導(dǎo)體公司開發(fā),并作為標(biāo)準(zhǔn)NFC標(biāo)簽IC與NFC設(shè)備或NFC兼容型近距離耦合設(shè)備配合,廣泛用于市場應(yīng)用,如零售、游戲和消費電子等。NTAG213、NTAG215和NTAG216(后文通稱為NTAG21x)設(shè)計為完全符合NFC Forum類型2標(biāo)簽和ISO/IEC14443類型A規(guī)范。

    目標(biāo)應(yīng)用包括戶外和印刷媒體智能廣告、SoLoMo應(yīng)用、產(chǎn)品驗證、NFC貨架標(biāo)簽、手機(jī)配套標(biāo)簽。目標(biāo)用例包括戶外智能廣告、產(chǎn)品認(rèn)證、手機(jī)配套標(biāo)簽、藍(lán)牙或Wi-Fi配對、電子貨架標(biāo)簽和名片。還可對NTAG21x存儲器進(jìn)行分段,以同時部署多個應(yīng)用。

    以NTAG216卡片為例:

    EEPROM 以4 字節(jié)為1 個Block 來組織,READ 和WRITE 均以Block 地址作為最小尋址單位,READ 指令中的地址為讀取的起始地址,依次讀出4 個Block 的數(shù)據(jù)。WRITE 指令每次寫入當(dāng)前地址對應(yīng)的Block。

    扣除制造商信息區(qū)和配置信息區(qū)后,用戶可以使用的數(shù)據(jù)空間為Block 04h~E1h,總計222 Blocks,即888 字節(jié)。E2h 存儲Dynamic Lock Bytes。E3h~FBh 為芯片配置信息區(qū),FCh~FFh 為制造商信息區(qū)。整體空間劃分示意圖如下:

    NTAG卡的序列號也就是UID一共有七個,存放在page0, page1中, 其中UID0-UID2在page0中的前三個字節(jié),第四個字節(jié)是卡類型與前3個字節(jié)的UID的BCC異或校驗。UID3-UID6在page1中,UID3-UID6的BCC校驗在page2的第一個字節(jié)。

    BER與TLV

    BER(BasicEncoding Rules)是一種編碼規(guī)格說明,描述如何將 ASN.1 類型的值編碼成字節(jié)串(string of octets)的方法。其他編碼規(guī)則是在BER的基礎(chǔ)上添加新的規(guī)則構(gòu)成,比如 DER。

    TLV是BER編碼的一種,為了使手機(jī)準(zhǔn)確識別出多種或多段NFC標(biāo)簽信息,需要使用TLV格式。BER傳輸語法的格式一直是TLV 三元組 <Tag,Length, Value>, 每一段占一個字節(jié)。其中Value部分可以嵌套另一個 TLV,其格式如下:

    • Tag字段的含義

      Tag分為3部分,最高兩位,第六位和低五位。

      bit8~bit7:組合代表tag所屬類型

      00 通用級 universal class 01 應(yīng)用級 application class 10 規(guī)范級 context-specific class 11 私有級 private class

      bit6:是否具有嵌套的TLV子結(jié)構(gòu)。

      bit5~bit1:如果為全1,則Tag擴(kuò)展至后續(xù)的字節(jié),否則是具體的Tag正文。

      Tag后續(xù)字節(jié):
      bit8:為1時存在后續(xù)字節(jié),為0時不存在后續(xù)字節(jié)
      bit7~bit1:Tag正文

    • Length字段含義:

      首字節(jié)bit8:

      如果為0,則該Length僅有1字節(jié),bit7~bit1值代表Value字段的長度。

      如果為1,則表示長度有擴(kuò)展字節(jié),bit7~bit1值代表后續(xù)擴(kuò)展的字節(jié)數(shù),后續(xù)擴(kuò)展字節(jié)數(shù)表示Value字段的長度。

    • Value字段含義:

      Value數(shù)據(jù)段一般沒有特定的編碼規(guī)則,但在某些場合,如果首字節(jié)的Bit8為1時,需要前補0x00。
      例如,如果Value1=0x74F2,Value2=0xB34A,則需要將Value2重新轉(zhuǎn)換為0x00B34A,對應(yīng)Length長度+1。

    通常,我們將NDEF格式數(shù)據(jù)放在Value數(shù)據(jù)段。

    NDEF (NFC Data Exchange Format)

    NDEF是NFC的一種標(biāo)準(zhǔn)化的數(shù)據(jù)格式,可用于在任何兼容的NFC設(shè)備與另一個NFC設(shè)備或標(biāo)簽之間交換信息。

    數(shù)據(jù)格式由NDEF消息NDEF記錄組成。該標(biāo)準(zhǔn)由NFC論壇維護(hù),可以免費獲得參考,但需要接受許可協(xié)議才能下載。

    NFC數(shù)據(jù)交換格式(NDEF)是一種標(biāo)準(zhǔn)化的數(shù)據(jù)格式,可用于在任何兼容的NFC設(shè)備和另一個NFC設(shè)備或標(biāo)簽之間交換信息。該數(shù)據(jù)格式由NDEF信息和NDEF記錄組成。

    NDEF格式用于存儲和交換信息,如URI、純文本等,使用一種普遍理解的格式。像一些NFC標(biāo)簽可被配置為NDEF標(biāo)簽,由一個NFC設(shè)備寫入可以被任何其他NDEF兼容設(shè)備理解和訪問的數(shù)據(jù)(NDEF記錄)。

    NDEF信息也可以用來在兩個活躍的NFC設(shè)備之間以 "點對點 "模式交換數(shù)據(jù)。通過在通信過程中遵守NDEF數(shù)據(jù)交換格式,那些本來對彼此沒有任何意義或共同語言的設(shè)備能夠以一種有組織的、可相互理解的方式分享數(shù)據(jù)。

    NDEF消息是NDEF記錄的基本 "運輸 "機(jī)制,每個消息包含一個或多個NDEF記錄。

    詳細(xì)NDEF格式可參考:NDEF 技術(shù)規(guī)范

    總結(jié)

    以上是生活随笔為你收集整理的NFC基础知识学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。