SlideShare a Scribd company logo
1 of 39
Download to read offline
避けては通れないバイナリ地獄
- NDEFってなんだろう 山下智樹 / tomorrowkey

12年11月29日木曜日
もくじ

•
•
•
•
•
•
•
12年11月29日木曜日

自己紹介
NDEFって何?
なぜNDEFが重要になる?
もっとNDEFを知ろう
ちょっとRTD
NDEF完成
さらなるNDEFの世界へ…
自己紹介
12年11月29日木曜日
自己紹介

• NFCラボ運営委員
• 山下智樹 / @tomorrowkey
• 株式会社ブリリアントサービス
• バイナリ楽しい!
12年11月29日木曜日
NDEFって何?
12年11月29日木曜日
NDEFとは

• NFC Data Exchange Format
• NFCの通信で使用されるデータ・フォ
ーマット

12年11月29日木曜日
なぜNDEFが重要になる?
12年11月29日木曜日
NFCのモード

• Reader/Writer Mode
• P2P Mode
• Card Emulation Mode

12年11月29日木曜日
どんなモードでも
NDEFは避けて通れない

12年11月29日木曜日
でも、バイナリまで
知ってる必要あるの?

12年11月29日木曜日
各プラットフォームのNDEFについて

• Android SDK API Level 16
•
•
•

一部サポート
PAYLOADについては自作する必要あり
作成はRTD-URIのみサポート、パースはURIに関連するものをサ
ポート

• Windows(SDK for NFC Starter Kit Ver.1.0)
•
•
12年11月29日木曜日

コマンド発行までサポート
NDEFはすべて自作する必要あり
探せばそのへんに
ライブラリ落ちてます

12年11月29日木曜日
避けて通れます

12年11月29日木曜日
趣味です

12年11月29日木曜日
もっとNDEFを知ろう
12年11月29日木曜日
NDEF Message

• NDEFには一つのNDEF Messageが含
まれる

• NDEF Messageには1つ以上の
NDEF Recordが含まれる

構成

12年11月29日木曜日
NDEF Record

構成

12年11月29日木曜日
FLAGS
•

MB(Message Begin)

•

•

ME(Message End)

•

•

255Byte以下のレコードを意味する
PAYLOAD LENGTHが1Byteになる

IL(ID Length)

•

12年11月29日木曜日

分割されたNDEF Messageの一部を意味する

SR(Short Record)

•
•

•

NDEF Messageの終わりを意味する

CF(Chunked Flag)

•

•

NDEF Messageの始まりを意味する

IDが設定されていることを意味する
TNF (Type Name Format)
•
•

TYPEフィールドの種類を表す
3bitの値を設定する

•
•
•
•
•
•
•
•

12年11月29日木曜日

0x00 Empty
0x01 NFC Forum well-known-type
0x02 Media-type as define in RFC2046
0x03 Absolute URI as define in RFC3986
0x04 NFC Forum external type
0x05 Unknown
0x06 Unchanged
0x07 Reserved
TYPE LENGTH

•
•

12年11月29日木曜日

符号なし8bit整数
TYPEフィールドの長さを指定する
PAYLOAD LENGTH

•
•
•

12年11月29日木曜日

SRの値によって長さが変化する
符号なしビックエンディアン
PAYLOADの長さを指定する
ID LENGTH

•
•
•

12年11月29日木曜日

ILの値によって無い場合がある
符号なし8bit整数
IDの長さを指定する
TYPE
•
•
•

TYPE LENGTHによって長さが変わる
TNFの値によって設定値が変わる
0x01 well-known typesだった場合

•
•

U ... URI Record

•

Sp ... Smart Poster

•

12年11月29日木曜日

T ... Text Record

...
ID

•
•
•

12年11月29日木曜日

ILの値によって無い場合がある
ID LENGTHによって長さが変わる
IDを設定することができる
PAYLOAD

•
•
•

12年11月29日木曜日

PAYLOAD LENGTHの値によって長さが
変化する
TNFとTYPEの値によって内容が変わる
well-known typesの仕様書はNFC
Forumに定義されています
ちょっとRTD
12年11月29日木曜日
RTD

• Record Type Definition
• Typeでwell-known-type(0x01)を指定
した場合に使用されるフォーマット

• NFC Forumで仕様書を見ることができ
ます。
•

12年11月29日木曜日

http://www.nfc-forum.org/specs/spec_list/#rtds
RTDの種類

• Text
• URI
• SmartPoster
• Generic Control
• Handover Request / Select / Carrier
• Signature
12年11月29日木曜日
Textだけ紹介

構成

12年11月29日木曜日
Encode

• テキストの文字コードを表す
• 0 ... UTF-8
• 1 ... UTF-16
12年11月29日木曜日
RFU

• Reserved For Future Use

12年11月29日木曜日
Language Code Length

• 言語コードの長さを指定する

12年11月29日木曜日
Language Code

•
•
•

言語コードを表す
Language Code Lengthによって長さが変わる
ISO/IANA

•
•
•

12年11月29日木曜日

en ... English
en-us ... English(United States)
ja ... Japanese
Actual Text

•
•
•

12年11月29日木曜日

実際のテキスト
PAYLOADの残り部分
Encodeで指定されたエンコードを使用する
NDEF完成!
12年11月29日木曜日
Hello, World.と書かれたNDEF
•

D1
02
65
2C
72

01
65
6C
20
6C

10
6E
6C
57
64

54
48
6F
6F
2E

FLAGS

•
•
•
•
•

•
•
•
•
•

Message End : 1
Chunked Flag : 0
Short Record : 1
ID Length : 0

TNF : 01(well-known types)
TYPE LENGTH : 1
PAYLOAD LENGTH : 10
TYPE : T
PAYLOAD

•
•
•

12年11月29日木曜日

Message Begin : 1

Encoding : utf-8
Language Code : en
Actual Text : Hello, World.
さらなるNDEFの世界へ
12年11月29日木曜日
まだ始まったばかり

• 紹介したフォーマットはごく一部
• well-known-typeだけでも知っておく
べき

12年11月29日木曜日
おわり

12年11月29日木曜日

More Related Content

What's hot

低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
demuyan
 
ダブル配列の実装方法
ダブル配列の実装方法ダブル配列の実装方法
ダブル配列の実装方法
Higashiyama Masahiko
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
 

What's hot (20)

低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
 
コード品質を保つために心がけたいこと
コード品質を保つために心がけたいことコード品質を保つために心がけたいこと
コード品質を保つために心がけたいこと
 
計算可能実数とは
計算可能実数とは計算可能実数とは
計算可能実数とは
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成
 
ダブル配列の実装方法
ダブル配列の実装方法ダブル配列の実装方法
ダブル配列の実装方法
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
 
Node-red+JSONataでfunction地獄からの卒業
Node-red+JSONataでfunction地獄からの卒業Node-red+JSONataでfunction地獄からの卒業
Node-red+JSONataでfunction地獄からの卒業
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
PEGで構文解析をする
PEGで構文解析をするPEGで構文解析をする
PEGで構文解析をする
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
PFD(Process Flow Diagram)の書き方紹介
PFD(Process Flow Diagram)の書き方紹介PFD(Process Flow Diagram)の書き方紹介
PFD(Process Flow Diagram)の書き方紹介
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみたOPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 

Viewers also liked (6)

FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況FeliCa/NFCの概説とAndroidの対応状況
FeliCa/NFCの概説とAndroidの対応状況
 
UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-UIDのことわかってますか? -フォーマット編-
UIDのことわかってますか? -フォーマット編-
 
About FeliCa Lite(日本語)
About FeliCa Lite(日本語)About FeliCa Lite(日本語)
About FeliCa Lite(日本語)
 
About FeliCa Plug
About FeliCa PlugAbout FeliCa Plug
About FeliCa Plug
 
月刊NDEF 2013年1月号
月刊NDEF 2013年1月号月刊NDEF 2013年1月号
月刊NDEF 2013年1月号
 
About FeliCa Lite-S
About FeliCa Lite-SAbout FeliCa Lite-S
About FeliCa Lite-S
 

More from Tomoki YAMASHITA (10)

Few command line tools for help Android development
Few command line tools for help Android developmentFew command line tools for help Android development
Few command line tools for help Android development
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなく
 
UUID
UUIDUUID
UUID
 
Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみた
 
Android SDK Toolsのおさらい
Android SDK ToolsのおさらいAndroid SDK Toolsのおさらい
Android SDK Toolsのおさらい
 
What is androider
What is androiderWhat is androider
What is androider
 
避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-避けては通れないバイナリ地獄 もっとRTDを-
避けては通れないバイナリ地獄 もっとRTDを-
 
Android NFCアプリハンズオン
Android NFCアプリハンズオンAndroid NFCアプリハンズオン
Android NFCアプリハンズオン
 
NFC QUEST作ったよ
NFC QUEST作ったよNFC QUEST作ったよ
NFC QUEST作ったよ
 
Dialogを使うときはこうしてます
Dialogを使うときはこうしてますDialogを使うときはこうしてます
Dialogを使うときはこうしてます
 

Ndefってなんだろう