FlipperZeroの使い方の話。~NFC使ってみる編~

こんにちは

困ったことに、徐々にFlipper Zeroユーザーが増えてきており、
このサイトの需要も若干増してきてしまったため、
早急に続きを書かねばならぬという使命感を感じました。

というわけで前回の投稿からかなり時間が空いてしまいましたが続きを書いていこうと思います。

NFCカードの読み取り

FlipperZeroでNFCカードの読み取りを行う方法は簡単です。

メニューを開き

「NFC」を選択し

「Read」を選択し

FlipperZeroの背面にNFCカードをかざせば

以下のようにNFCカードの読み取りが可能です。

NFCの種類

NFCカードと言っても実は複数の種類があり、
大きく分けると3種類あります。

  1. Type-A
  2. Type-B
  3. Type-F

TypeCじゃなくてTypeF?と思った方もいらっしゃると思います。

実はこのTypeFはアジア圏の一部の国が主な利用国となっている半独自規格のような規格となっており、
SuiCaなどで利用されている「FeliCa」と呼ばれる規格となっております。

FeliCaの頭文字をとってType-Fです。知らんけど

特に日本国内ではFeliCaが多く利用されており、高速なデータ通信が可能となっており、セキュリティも高いものとなっているらしいです。

Type-A

Type-Aはホテルのルームキーなどでよく利用されている規格となっており、
昔タバコを自動販売機で購入する際に必要だった「taspoカード」などにも利用されております。

なおタバコの自動販売機で実際にFlipper Zeroを利用してタバコが買えるか試そうとしたのですが、taspoが使えるタバコの自動販売機を見つけることができませんでした・・・。

TypeA内にもいくつかの規格があり、よく利用されるものにMIFAREなどがあります。

商業施設や都内の案内板などにある「スマホをかざして利用可能」みたいな利用方法も可能となっており、
URLを書き込んでおくことにより、スマホをかざした際にWEBサイトを表示させることが可能です。

また、NFC Type-Aは比較的安価であり、Amazonなどで10枚1000円とかで販売しています。

ちなみに私はゲスト用のWiFiの接続情報をこのようなタグに書き込みしておいてあり、
来客のスマホで読み込みをしてもらうことで、WiFiに接続できるというような運用を行なっております。

Type-B

TypeBはセキュリティに優れた規格となっており、日本国内では運転免許証やマイナンバーカードに使用されています。

また、通信方式もTypeAと異なるものが採用されており、通信が安定しているという特徴があります。

FlipperZeroでマイナンバーカードをスキャンしたところ、このように表示が行われ、
なんとなく利用ができないんだろうな〜ってことがわかります
(UIDはマスクしてあります)

Type-F

TypeFは上記2つの規格と比べ、高速なデータ通信が行える規格となっており、日本国内で多く利用されています。

最近ではTypeFカードも安くなってきた印象があり、会社の社員証などにもTypeFが入っていたりします。
その社員証を利用してオフィスやデータセンターの入退管理などにも利用されていたりします。

TypeFはカード内にIDmと言う番号が設定されており、この番号は書き換えを行うことができない仕様となっています。

また、このIDmと言う番号はSonyによって流通の管理がされており、
同じ番号が別のカードに書き込まれて流通しないような仕組みになっています。

あともう一つPMmと言うカードの性能などを示しているパラメータが設定されております。

参考情報

Type A

##### 引用

> NFCとは?仕組みやFeliCaとの関係、代表的な規格について解説
> https://ja.komoju.com/blog/nfc/

> Type-Aは、オランダのNXPセミコンダクターズという企業が開発したNFCの規格です。
> ほかの規格と比べて比較的安価で利用できるという特徴があります。

> NFCのType-Aは日本国内でも利用されており、代表的なサービスとしてはたばこの成人識別カード「taspo」に利用されています。

Type B

##### 引用元

> NFCとは?仕組みやFeliCaとの関係、代表的な規格について解説
> https://ja.komoju.com/blog/nfc/

> Type-Bは、アメリカのモトローラという企業が開発したNFCの規格です。CPUが内蔵されており、処理が速くセキュリティ面に優れているという特徴があります。
> NFCのType-Bは日本国内でも利用されており、そのセキュリティの高さからパスポート、運転免許証、住民基本台帳カード、マイナンバーカードなどの身分証明書に利用されています。

Type F

##### 引用元

> FeliCaとは | FeliCaってなに? – ソニー
> https://www.sony.co.jp/Products/felica/about/

> かざすだけで高速データ送受信
> 1枚のカードに、ICチップとアンテナを搭載。対応のリーダー/ライターにかざせば、約0.1秒でデータの読み書きができます。
> さらに、非接触方式なのでケースに入れたまま使えて便利です

> 高いセキュリティー
> ISO/IEC 15408 EAL5+以上を取得(最新のFeliCa Standard ICチップ群)。
> カード内のバリューや電子マネー、個人情報などの大切な資産を、悪質な攻撃から守ります。

> [PASMO] FeliCa から情報を吸い出してみる – FeliCaの仕様編 [Android][Kotlin]
> https://qiita.com/Yasuaki23/items/3109df682af2a7032f8d

> IDm について
> IDm (製造ID/Manufacture ID) とは、通信相手のカードを識別するためのIDです。
> Polling(後述します)レスポンスの レスポンスコード に続く 8バイトの値です。
> 上位2バイトを 製造者コード、続く6バイトを カード識別番号 と呼びます。

> PMm について
> PMm (製造パラメータ/Manufacture Parameter) とは、通信相手の性能を識別するためのパラメータです。
> Polling(後述します)レスポンスの IDm に続く 8バイトの値です。
> 上位2バイトを ICコード、続く6バイトを 最大応答時間パラメータ と呼びます。

FlipperZeroで利用可能なNFC

FlipperZeroでは、TypeAとTypeFの一部機能が利用可能となっておりますが、TypeBは利用することができません。

基本的にTypeAとTypeFのカードをスキャンして、エミュレーションを行う事が可能ですが、
FeliCaの暗号領域内にはアクセスできず、暗号化されている規格のTypeA(Mifare classicなど)を
利用する際には鍵をブルートフォースして解析する必要があります。

FlipperZeroの公式ドキュメントに詳細がありますのでご参考までに。
▼ Reading NFC cards
https://docs.flipper.net/nfc/read

NFCカードリーダー

NFCのカードリーダーで有名なものと言えば、Felicaを作ったSonyが出している、
PaSoRiというカードリーダーが有名です。

もっともポピュラーだと思われるPaSoRiはRC-S380という物で、よくDIYでNFCを利用する時に
ラズベリーパイなどと一緒に利用されているような気がします。

https://www.sony.co.jp/Products/felica/consumer/products/RC-S380.html

DIYで入退出管理や、スマートロックなどに

一般的なNFCの動作種類

NFCは基本的3つの動作モードを備えています。

  1. リーダーライターモード
  2. カードエミュレーションモード
  3. P2P通信モード

また、SonyのFeliCaのページへ行くと4つ目のモードとして、

  1. ワイヤレスチャージモード

が定義されています
が、今回は解説しません。

https://www.sony.co.jp/Products/felica/NFC/forum.html

リーダーライターモード

リーダーライターモードは、名前の通りNFCタグを読み書きするモードです。

上記で話したカードリーダーなどは基本的にこのモードにしか対応していなかったりします。

カードエミュレーションモード

カードエミュレーションモードはNFCタグのようにふるまうモードです。

スマホをSuiCaのカードのようにふるまわせるアレとかでつかわれています。

他にもNFC Toolsなどといったアプリを利用するとこのモードでNFC TypeAの
NFCタグのように使うことなどが可能です。

P2P通信モード

NFCデバイス同市で通信を行い、データのやり取りを行うモードです。

使ったことありませんが

FlipperZeroでできること

FlipperZeroでは、リーダーライターモードと、カードエミュレーションモードが利用可能です。

リーダーライターモードで読み取りを行ったビルの入館証を、SDカード内に保存しておき、
カードエミュレーションモードでカードをエミュレートし、入館を行うなども可能です。
(許可を得て実証実験を行ったこともありますので本当に入館できてしまう建物は実在します)

カードエミュレーションモードでカードリーダーに対してMFKey32攻撃などを行い、
MIFARE Classicのキーを復元することが可能だったりします。

また、NFCタグのデータを手動で作成したり、FlipperZero内のバイナリエディタを起動し、
保存を行ったNFCタグのデータを書き換えてエミュレートしたりも可能です。
これについては後述します。

NFCカードのデータを手動で作成

頑張れば複雑なデータを作成したりすることも可能ですが、FlipperZeroは操作性が悪く、
データの入力などを行うには適しているとは言えないので、
今回は簡単に、かざしたら自分のホームページが開く名刺代わりに使えるデータを作成します。

余談ですが、Wi-Fiのアクセスポイントに接続するための設定をNFCタグに書き込み、
スマホをかざすだけでアクセスポイントに接続できるみたいな事も可能です。
希望があればそのうち追記します。

手順

メニューを開き

「NFC」を選択し

このページで下の方にスクロールをしていくと、

一番下に「Add Manually」がありますのでこれを開きます

するとこのようにNFCタグの規格を選択する画面が開きますので、
作成したいNFCタグの規格を選択します。

今回はURLくらいのデータしか書き込まないので、ぶっちゃけなんでもいいんですが、
Amazonで10枚700円くらいで売っているNTAG213という規格のNFCステッカーが
目に入りましたので、この規格を利用しようと思います。

NTAG213を選択するとこのようになりました。

が、じつはFlipperZeroからではこのタグの中にURLを設定したりすることができないので、
ここでAndroidさんの登場です。

このNFC Toolsというアプリを利用することで、NFCタグの中にデータを簡単に書き込むことが可能です。

まずはFlipperZeroをエミュレーションモードにしましょう。

この状態でNFC Toolsを起動し、FlipperZeroの背面にかざします。

するとこのようにNFCタグの中身を表示するモードになります。

書き込みモードに変更してください。

レコードを追加を選択し「URL/URI」を選択。

すると入力画面が表示されるので、サイトのURLを入力し、OKを選択します。

選択すると、このように記入予定のURLのデータが記憶され、利用する容量が表示されます。
NTAG213は144バイトの利用がおこなえるので、残り116バイトです。

そしたら「書く/28バイト」を選択する事で、書き込み画面になります。
この状態でFlipperZeroにかざすと、

このように書き込みが行えます。

書き込みを行ったら完成です。
FlipperZeroで「Save」を選択し、名前を付けて保存します。

完了です。

保存を行うとこのようにデータが記録されます。

保存を行ったら今保存したNFCデータを選択し、「info」データを見てみましょう。

するとこのように、先ほど書き込みを行ったURLが表示されています。

この状態で「Emulate」を選択し、スマホにかざしてみましょう。

すると、先ほど見たような表示がおこなわれますので、こちらをひらいてみますと、
このように、先ほど登録したURLが開かれます。

スマホを使わずにバイナリエディタで対応する事もできなくは無いのですが、
難しいしめんどうくさい。なのでスマホで対応しました・・・。

FlipperZeroの使い方なのにスマホ出してゴメン。

保存したNFCカードのエミュレーション

基本的に感覚でわかるとは思いますが、一応解説をします。

メニューを開き

「NFC」を選択し

「Saved」から

目当てのNFCデータを選択します。

後は先ほどの流れと同様に「Emulate」を選択することでNFCタグのエミュレーションを行えます。

保存したNFCのデータ改変

先ほど作成したNFCデータをFlipperZero内のバイナリエディタから改変する方法を軽く紹介します。

確かFlipperZeroには標準ではバイナリエディタは入っておらず、編集を行うことができないので、
FLIPPER LABなどを利用して、FlipperZeroのバイナリエディタである「HEX Editor」を導入します。

次のリンクから、FlipperLabの「HEX Editor」のページをひらき、
FlipperZeroをPCに接続します。
▼ FlipperLab ~ HEX Editor
https://lab.flipper.net/apps/hex_editor

右上のINSTALLをクリックする事でFlipperZeroに「HEX Editor」が導入され、
「Apps」の中の「Tools」に保存されます。

この「HEX Editor」を開き、先ほどと同様に、編集を行いたいファイルを選択します。

するとこのような画面になります。

もうすでにバイナリエディタの編集画面なのであとは気合で頑張ってください。

てかそもそもFlipperLabって何やねんって方向けにそのうち解説します。

【補足】Androidでも頑張ればできます

先ほど出てきたAndroidのNFC Tools(一応iOS版もあります)、
このアプリを利用する事で、リーダーライターモードで結構自由に遊べることがなんとなく伝わっているとおもいます。

参考文献


投稿日

カテゴリー:

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です