前回、NDEFクイズと銘打って、自分で作ったNDEFデータをAndroidがNDEFとわかってくれない資料を載せた。
とはいえ、他力本願になりすぎるのも寂しい。
もうちょっと調べておこう。
使ったのは、nfcpy。
私はpythonの使い方はわからないけれども、nfcpyはなんとか使えている。
というのも、サンプルプログラムだけで十分事足りているからだ。
今回は、read_ndef.pyというサンプルを使って、NDEFデータを解析してもらうことにした。
まず、Androidで読んだ方のデータを解析する。
NDEF container present
version = 1.0
writeable = yes
capacity = 208 byte
data size = 113 byte
0000: 91 02 0a 48 73 12 d1 02 04 61 63 01 01 30 00 5a ...Hs....ac..0.Z
0010: 17 46 01 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 .F.application/v
0020: 6e 64 2e 77 66 61 2e 77 73 63 30 44 00 10 4a 00 nd.wfa.wsc0D..J.
0030: 01 10 10 0e 00 31 10 26 00 01 01 10 45 00 0a 31 .....1.&....E..1
0040: 32 33 34 35 36 37 38 39 30 10 03 00 02 00 20 10 234567890..... .
0050: 0f 00 02 00 08 10 27 00 04 31 32 33 34 10 20 00 ......'..1234. .
0060: 06 aa bb cc dd ee ff 10 49 00 06 00 37 2a 00 01 ........I...7*..
0070: 20
Connection Handover Select Message
urn:nfc:wkt:Hs,,12110204616301013000
1st carrier is Wi-Fi (Simple Config)
power = active
Traceback (most recent call last):
File "read_ndef.py", line 220, in <module>
main()
File "read_ndef.py", line 170, in main
print_handover_select(message)
File "read_ndef.py", line 86, in print_handover_select
cfg = WiFiConfigData.fromstring(config_data)
File "/cygdrive/e/Prog/no_backup/nfcpy/nfc/ndef/WiFiSimpleConfig.py", line 150, in fromstring
raise ValueError("expected Version1 attribute")
ValueError: expected Version1 attribute
下の方に、バージョン属性がない、みたいなエラーが出ている。
なるほど、Carrier Configuration Recordのペイロードにデータ長を置いたのがよくなかったようだ。
これはBluetoothのOOBデータ例をまねしたから置いたのだった。
それを外してやりなおすと、うまくいった。
では、同じようにOOBデータ長を外した大きいデータを書き込んで調べてみよう。
NDEF container present
version = 1.0
writeable = yes
capacity = 208 byte
data size = 121 byte
0000: 91 02 0a 48 73 12 d1 02 04 61 63 01 01 30 00 5a ...Hs....ac..0.Z
0010: 17 4e 01 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 .N.application/v
0020: 6e 64 2e 77 66 61 2e 77 73 63 30 10 4a 00 01 10 nd.wfa.wsc0.J...
0030: 10 0e 00 3b 10 26 00 01 01 10 45 00 0e 31 32 33 ...;.&....E..123
0040: 34 35 36 37 38 39 30 31 32 33 34 10 03 00 02 00 45678901234.....
0050: 20 10 0f 00 02 00 08 10 27 00 0a 31 32 33 34 35 .......'..12345
0060: 36 37 38 39 30 10 20 00 06 aa bb cc dd ee ff 10 67890. .........
0070: 49 00 06 00 37 2a 00 01 20 I...7*..
Connection Handover Select Message
urn:nfc:wkt:Hs,,12110204616301013000
1st carrier is Wi-Fi (Simple Config)
power = active
version = 1.0
network = 12345678901234
password = 1234567890
macaddr = aa:bb:cc:dd:ee:ff
security = WPA2-Personal / AES
あれ・・・読めてる・・・。
では、Androidでは・・・読めない。
うーん、謎は深まるばかりである。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。