nfcpy環境下でPaSoRiを通して取得したType4Tagの固有IDの一意性について
Windows10で構築した上記環境において、NFCタグの固有ID(IDm)を用いて利用者を識別するシステムを作っています。
(IDを用いることによるシステムのセキュリティ低下は、一旦 度外視させてください)
学生証や交通ICカードはType3Tag (FeliCa Standard)のため、tag.idmあるいはtag._nfcidとすれば固有IDを取得できます。一方で、スマホのようなType4Tag (Type4ATag, Type4BTag)については、tag.identifierやtag._nfcidで取得するID(正確にはuidでしょうか)は、読み取りの度に異なる値になります。
同じタグであればいつ読み取っても一意にするためには、どのようにすればよいかご教示くださいますと嬉しいです。
IDmを取得するソースコード
python3
1# coding:utf-8 2 3import nfc 4import binascii 5 6for i in range(2): 7 8 with nfc.ContactlessFrontend("usb") as clf: 9 tag = clf.connect(rdwr={'on-connect': lambda tag: False}) 10 11 if tag.TYPE == 'Type3Tag': 12 idm = binascii.hexlify(tag.idm).decode() 13 idm2 = binascii.hexlify(tag._nfcid).decode() 14 elif tag.TYPE == 'Type4Tag': 15 idm = binascii.hexlify(tag.identifier).decode() 16 idm2 = binascii.hexlify(tag._nfcid).decode() 17 18 print('Trial', i) 19 print('\tTag type :', tag.TYPE) 20 print('\tCard IDm1:', idm) 21 print('\tCard IDm2:', idm2) 22
出力結果
Type3Tagでは2回の試行で同一のIDmが得られます
Trial 0 Tag type : Type3Tag Card IDm1: 01xxxxxxxxxxxxxx (16桁の16進数ID, 伏せてあります) Card IDm2: 01xxxxxxxxxxxxxx Trial 1 Tag type : Type3Tag Card IDm1: 01xxxxxxxxxxxxxx Card IDm2: 01xxxxxxxxxxxxxx
一方で、Type4Tagでは2回の試行で異なるIDが得られます
Trial 0 Tag type : Type4Tag Card IDm1: 08yyyyyy (16桁の16進数ID, 伏せてあります) Card IDm2: 08yyyyyy Trial 1 Tag type : Type4Tag Card IDm1: 08zzzzzz Card IDm2: 08zzzzzz
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/24 03:03
2021/06/24 03:30
2021/06/24 04:39 編集
2021/06/24 06:46