台湾に行ってきました

22
台台台台台台台台台台 2012/09/08 Fukuoka NFC Hack 4 @treby006

Upload: treby

Post on 24-May-2015

761 views

Category:

Technology


1 download

DESCRIPTION

2012-09-08 Fukuoka NFC Hack 4にて

TRANSCRIPT

Page 1: 台湾に行ってきました

台湾に行ってきました2012/09/08 Fukuoka NFC Hack 4

@treby006

Page 2: 台湾に行ってきました

自己紹介• @treby006• まどろみはじめ

• コミケで本出しました。• 冬も出せるといいな。

Page 3: 台湾に行ってきました

今日のおはなし• 台北滞在• 国際会議参加報告• 台北の ICカード事情、というか実物紹介

• (おまけ) NFC Shieldで FeliCa IDmを読む

Page 4: 台湾に行ってきました

台北の様子• 割と日本と変わらない雰囲気• 食べ物も美味しかったです。• 過ごしやすいところだと思います。• 中国語を少しは知ってた方がいいです。

• 写真の紹介

Page 5: 台湾に行ってきました

国際会議• IEEE ASID2012• Anti-Counterfeiting, Security and Identification

• 「偽造防止やセキュリティ、個人識別」がテーマ• 論文内容

• SNSアカウントと Android NFCを組み合わせて会議等の出席者を管理するシステム(の提案)

• 実際に使用したスライドをご紹介

Page 6: 台湾に行ってきました

反省点• 及第点の発表• 準備不足• 提案のみしかできなかった• 教員のお力を借りた部分が多すぎた

• 余裕を持ったスケジュール設定が大事• 発表慣れすることも大事

Page 7: 台湾に行ってきました

MRT(鉄道 )のシステム• きっぷ• 20~ 50 NTD(約 60~ 150円)• 改札に入るときはかざして、出るときは投入口に入れる• トークン状のMIFARE Ultralight

• データ解析・複製が簡単にできsゴホンゴホン

Page 8: 台湾に行ってきました

MRT(鉄道 )のシステム• 非接触 ICカード(悠遊卡/ EASY CARD)• 500 NTDで 400 NTD分チャージされたものが買える。• 何度でもチャージできる。• カード状のMIFARE Classic 1K

• つまりセキュリティ機能付き

Page 9: 台湾に行ってきました

(おまけ )NFC Shieldで FeliCa IDmを読む• NFC Shieldってなんぞ?• Arduino用のシールド• NXP(MIFAREの企業 )の PN532というチップを搭載• NFC Shield Wiki : http://www.seeedstudio.com/wiki/NFC_Shield• SPIで通信しているのでシリアルモニタが使える!

• ありがちな勘違い• NFC Shieldは NXP製だからMIFAREしか対応してないよ……• ……実際過去に発表した作品(?)、 NFCキャンドルではタグにMIFARE Ultralightを使っていました。• http://www.slideshare.net/treby/nfc-13347078

• 確かに標準ではMIFAREしかサポートされておりません

Page 10: 台湾に行ってきました

問題点• 標準で提供されているライブラリは最低限の機能しか持っていなかったりする• P2Pできねーじゃん!• FeliCa読めないじゃん!

• つまり、ライブラリが整備されていない感じなのです。• PN532のデバイスとしてはできることを、プログラムで実現しようとしたらとても大変

• とはいえいきなり全部は無理なので、まずは FeliCaのIDmを読んでみました( 1 回の RFやり取りで取れます)。

Page 11: 台湾に行ってきました

予備知識• コマンドにはホストコマンドと RFコマンドがある。• ホストコマンド:マイコンとチップの間のコマンド• RFコマンド:各 NFCテクノロジ用のコマンド

• ホストコマンドは RFコマンドを内包している

マイコンボード( Arduino)

チップ( PN532)

タグ・

デバイス

ホストコマンド

RFコマンド

Page 12: 台湾に行ってきました

予備知識• Polling …… FeliCaカードを検出するための RFコマンド• 参考: FeliCaカード ユーザーズマニュアル

• http://www.sony.co.jp/Products/felica/business/tech-support/index.html#Standard01

• InListPassiveTarget …… R/Wが対象のタグやデバイスを探すためのホストコマンド• FeliCaを対象とする場合、 Pollingコマンドを内包する• 参考: PN532 User Manual

• http://www.nxp.com/documents/user_manual/141520.pdf

Page 13: 台湾に行ってきました

現状のコードを読むreadPassiveTargetID 関数

Page 14: 台湾に行ってきました

InListPassiveTargetを知る

PN532 User Manualより

Page 15: 台湾に行ってきました

現在の InListPassiveTarget

• BrTyの部分が 0x00で渡されている→ボーレートが106kbps、つまり Type A 向け• この時、 InitiatorDataは「まるっと」省ける

Page 16: 台湾に行ってきました

現在の InListPassiveTarget

• TargetDataが Type A 仕様なので適当に切りだしている感じ

Page 17: 台湾に行ってきました

余計な部分を削って変更readPassiveTargetID 関数

Page 18: 台湾に行ってきました

変更後の InListPassiveTarget

• BrTyを 0x01(212kbps)、つまり FeliCa 向けに変える• 実際には引数を取ってるため、 Arduinoプログラムをちょこっと変えると良い。

• FeliCaの場合、 InitiatorDataには Pollingコマンドが入る

Page 19: 台湾に行ってきました

Polling

FeliCaカードユーザーズマニュアルより

Page 20: 台湾に行ってきました

変更後の InListPassiveTarget

• ここでいう NFCID2tというのが、 IDmを指す。ちなみにPOL_RESは Pollingコマンドのレスポンスを意味する。

• あとはてけとーに欲しいデータを切り出してあげる

Page 21: 台湾に行ってきました

実際に返ってきたデータを見る

Page 22: 台湾に行ってきました

まとめ• 台湾に行ってきました• カキ氷屋さんの女の子がとても可愛かったです