2012/12/26

[nfc]NDEFクイズの続き - nfcpy

前回、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 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。