FeliCaカード ブロック構造及びデータ書き込み

このQ&Aのポイント
  • FeliCaカードのブロック構造とデータ書き込みについての質問です。
  • ユーザーが任意に設計できる150ブロックを全てのデータ書き込み領域として使用することは可能なのか?
  • システムコードとサービスコード、およびブロックデータの読み込みについて調査しています。
回答を見る
  • ベストアンサー

FeliCaカード ブロック構造及びデータ書き込み

題名のままなんですが、ご教授をお願いします。 尚、下記質問に対しては「FeliCa 4K」をベースとします。 (1)~(3)参考資料:http://www.e-garde.co.jp/rfid/felica/ (1)ユーザーがカード購入時に任意に設計できる150ブロック をすべてのデータ書き込み領域として使用することは不可能なのか? (2)論理的にカードのシステムは1つだけの場合。 システムコードは必ずしも必要なのか? (3)「サービスコード(16バイト)」は150ブロック内に保存されてしまうのか? 保存された場合自由に設計できるのは149ブロックになるということでしょうか? かつ、「システムコード」も同様に150ブロック内に保存されてしまうのでしょうか? (4)参考資料:http://www.sony.co.jp/Products/felica/business/tech-support/st_command.html (4)カードにデータを書き込む際、 ポーリング→サービス存在確認→相互認証 を行なってから必ず「ブロックデータの読み込み」は必要なのでしょうか? 例えば、150ブロックすべてを履歴を保存する領域として利用する ためだけのカードが存在する場合専用のシステムコードを作り そのシステムコードを持ったカードを補足した場合 ポーリングでシステムコードを要求 ↓ 履歴保存のシステムコードと一致 ↓ サービスコードでブロック数確認 ↓ 相互認証 ↓ カード存在確認 ↓ ブロックデータ書き込み というのは可能でしょうか? 上記文章からわかるように素人です。 できればFeliCaカードの構造やプログラムに 関する書籍などご存知でしたら教えて下さい。 ご回答よろしくお願いいたします。

  • anubs
  • お礼率63% (118/187)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

(1) 強引に使おうと思えば可能です。一般的には定義ブロックに最低1ブロックを使用するので149ブロックになります。 (2) 必要です。無ければ他システムのカードとの区別が出来ません。  またカードリーダーもこの手順でないと動作しないはず。 (3) サービスコードはユーザーブロック、システムコードはシステム定義ブロックになります。 (4) 出来ない事はありませんが一般的ではなくかつ危険な手法です。   カードの初期設定を高速かつ大量に行うようなとき以外はやるべきではないでしょう。 FelicaカードについてはWEbサイトで見られるような概要以外はほとんどが非公開です。 詳細資料やサンプルプログラムについてはSONYや他のベンダなどと守秘義務契約を結んでの提供になります。 それ以外だとSonyなどが開催するプログラミングセミナー等に参加するくらいしかありません。

anubs
質問者

お礼

ご回答いただき、誠にありがとうございます。

anubs
質問者

補足

ご回答いただき有り難うございます。 >出来ない事はありませんが一般的ではなくかつ危険な手法です。 「危険」とはどう行ったものでしょうか? お手数でなければ教えて頂けませんでしょうか? よろしくお願いいたします。

関連するQ&A

  • FeliCa ポーリングの間隔

    リーダ/ライタが常時ポーリングを行っているシステムの場合 FeliCa用のリーダ/ライタがFeliCaカードからIDmとPMmを 読み取る「Polling」の間隔はどれくらい短く出来るのでしょうか? 何か制約は有るのでしょうか? 一応、下記サイトの「FeliCaカード ユーザーズマニュアル」は 確認させて頂きましたが、ポーリングの間隔については記載 されていませんでした。 http://www.sony.co.jp/Products/felica/business/tech-support/index.html 御教授御願致します。

  • 携帯電話のFeliCaにてFeliCaカードを読み取る方法は?

    携帯電話のFeliCaにてFeliCaカードを読み取る方法は? 方法がお分かりの方は教えてください。 携帯電話に搭載されたFeliCaを利用してカード型FeliCa(Suica・PASMO・Edy)の残高や利用履歴を参照したいと思っています。 このようなアプリは一般向けに存在するのでしょうか? 以前、どこかの学校で生徒が保有しているFeliCa型の学生証を教職員の携帯電話に搭載したFeliCaにアプリを利用し読み取らせ確認をしているとの情報を聞いたことがあります。 また、自作でオープンアプリを作成することは可能でしょうか? お分かりの方はお教えください。

  • VBAでFelicaを読み書きしたい

    Felica方式のカードにデータをRead/Writeさせたいのですが、SDKはあいにく持ち合わせておりません。 共通領域に対するReadとWriteを考えています。 例えば、VBAからライブラリのようなものを呼び出すとかして読み書きさせるとは不可能でしょうか? またVBAではサンプルコードはまず見ないのですが、どこか参考になるサイトをご存じの方がいればお教え下さい。

  • Felicaポートとパソコン用リーダーなしでEdyのカードのサービス登録をするには?

    Edyのカードを手に入れました。 インターネットで調べてたらサービス登録をするとお得とあったので登録しようとしたところ、Felicaポートとパソコン用リーダーがパソコンについてなかったので、Felicaポートをお持ちでない方のところに「おサイフケータイの認証が必要になります。」と書いてあったので、おサイフケータイをアプリで登録しました。が、これは今私が持っている携帯電話のサービス登録が出来たと言うことで、今持っているカードの登録はできてないということですよね?番号も全く違う番号でした。Felicaポートやパソコン用リーダーは持っていないけど、おサイフケータイではなくEdyカードを使っていきたくてサービス登録したい場合はいったいどうすればいいのですか?返答よろしくお願いします。

  • Felicaを使ったサービス

    Felicaを使ったサービスで今後NFC搭載携帯に対応できるのでしょうか? ある企業からFelica(I携帯電話・スマホ)を使った顧客管理システムの提案を頂いているのですが、 NFCには対応しておらず、知識も足りない為、導入を迷っています。 Felica搭載携帯について (1)現在、NFC搭載携帯電話のほとんどにはFelicaチップが利用されているようですが、NFCチップが搭載された携帯・スマホにはFelicaを使ったサービスの場合、対応できないという認識で間違いないでしょうか?(iphonにはFelicaチップが搭載されないと勝手に思っています。) NFCについて (2)今回、提案いただいたサービスの場合、携帯・スマホともに、まずアプリをダウンロードしなければならない為、お客様へ作業負担を与えるものでした。今後NFC対応のサービスが出てきた場合、Felica対応のサービスと同様にアプリダウンロードが必要なのでしょうか? NFCを利用してストアへ移動する方法もあるかと思いますが、ダウンロード待機の時間を省けると良いと思います。 皆様のお力をお貸しください。 よろしくお願いします。

  • 免許証ICカードにもIDm値ってあるんですか?

    最近免許の更新があったので、更新したところ、中にICチップが入っているとのことでした。試しにFeliCa系のカードリーダで読み込ませてみると12バイト程度の値が出てきました。 FeliCaには製造番号としてIDmというデータを格納する領域があってそれがシリアル番号として使われると聞いたことがあったのですが、免許証の場合もこれに当たる値は存在するのでしょうか? ご存じの方いらっしゃいましたらご教授願います。

  • Linuxの「セクタ」と「データブロック」の違い

    Linuxの本を読んでいたら、 データを保存する領域として「セクタ」と「データブロック」という 二つの単語が出て来ました。 本を読む限り、微妙に意味合いが違っているようなのですが どのように違うのか明確に分かりませんでした。 どなたか分かる方教えて下さい。

  • FeliCaを利用した認証システム

    FeliCaを使用した認証システムを開発しています。 認証方法 (1)PCに個人情報(IDm、名前)の登録を行う。この際、テキストファイル名をIDm(例 01 02 03 05.txt)としファイル内に名前を書き込む。 (2)リーダー/ライターにFeliCaをかざし、IDmを読み取る。 (3)ファイル内の情報を出力させる。 CUIでは、動くのですがGUIで動かすにはどこを替えればいいのでしょうか? 認証というボタン押すと登録された名前を出力させる感じです。 以下にCUIのコードを載せます。 // sample.cpp -*-c++-*- #include <cstdio> #include <cstdlib> #include "felica.h" int main(void); void error_routine(void); void print_vector(char* title, unsigned char* vector, int length); int main(void) { char file[28]; char kawa[6]=".txt"; int i; FILE *fp; int ninzu = 0; char name[100]; //ライブラリの初期化 if (!initialize_library()) { fprintf(stderr, "Can't initialize library.\n"); return EXIT_FAILURE; } //リーダ;ライタの自動認識とオープン if (!open_reader_writer_auto()) { fprintf(stderr, "Can't open reader writer.\n"); return EXIT_FAILURE; } //ポーリングのための宣言 structure_polling polling; unsigned char system_code[2] = {0x00, 0x00}; polling.system_code = system_code; polling.time_slot = 0x00; unsigned char number_of_cards = 0; structure_card_information card_information; unsigned char card_idm[8]; card_information.card_idm = card_idm; //ポーリングとカード情報の取得 if (!polling_and_get_card_information(&polling, &number_of_cards, &card_information)) { fprintf(stderr, "Can't find FeliCa.\n"); return EXIT_FAILURE; } fprintf(stdout, "number of cards: %d\n", number_of_cards); print_vector("card IDm:", card_idm, sizeof(card_idm)); //card_idmをfileに書き込む sprintf(file,"%02x %02x %02x %02x %02x %02x %02x %02x",card_idm[0],card_idm[1],card_idm[2],card_idm[3],card_idm[4],card_idm[5],card_idm[6],card_idm[7]); for(i=23;i<28;i++) file[i]=kawa[i-23]; printf("%s\n",file); if((fp=fopen(file,"r"))==NULL) printf("情報が登録されていません\n"); else{ while(fscanf(fp,"%s",name)==1){ printf("%-10s\n",name); ninzu++; } fclose(fp); } //リーダ。ライタのクローズ if (!close_reader_writer()) { fprintf(stderr, "Can't close reader writer.\n"); return EXIT_FAILURE; } //リーダ。ライタを開放する if (!dispose_library()) { fprintf(stderr, "Can't dispose library.\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } void error_routine(void) { enumernation_felica_error_type felica_error_type; enumernation_rw_error_type rw_error_type; get_last_error_types(&felica_error_type, &rw_error_type); printf("felica_error_type: %d\n", felica_error_type); printf("rw_error_type: %d\n", rw_error_type); close_reader_writer(); dispose_library(); } void print_vector(char* title, unsigned char* vector, int length) { if (title != NULL) { fprintf(stdout, "%s ", title); } int i; for (i = 0; i < length - 1; i++) { fprintf(stdout, "%02x ", vector[i]); } fprintf(stdout, "%02x", vector[length - 1]); fprintf(stdout, "\n"); } どなたかご教授よろしくお願いします。

  • アクセスできなくなったSDカードの保存データを取り出すことはできるので

    アクセスできなくなったSDカードの保存データを取り出すことはできるのでしょうか? デジカメ(GRDigital 3)で写真撮影中、それまでは普通にSDカードに写真記録できていたのに、 突然カメラがフリーズしてしまいました。 その後の撮影では、カメラ内臓メモリには正しく記録できているところからすると、 SDカードに異常が発生したのだと考えています。 家に帰ってパソコンにSDカードを差し込んでみたのですが、 マイコンピュータには「SD / MMC (H:)」と認証はされているのですが、 開こうとすると、 「H:\ にアクセスできません。  デバイスがコマンドを認識できません。」 とエラー表示が帰ってくるだけです。 プロパティを見ても、中に画像データが入っているはずなですが、   種類:リムーバブルディスク   ファイルシステム:未フォーマット   使用領域 0バイト   空き領域 0バイト   容量 0バイト と表示されています。 SDカードをカメラに入れなおしてフォーマットしようともしたのですが、 カメラもSDカードを認識してくれません。 保存してある写真を取り出したいのですが、何か方法はあるのでしょうか? それとも寿命でしょうか?(このSDカードは既に使用5年目です。) お教えいただけるとうれしいです。

  • メモリーカードに3ブロックしか保存できません

    PS2本体でPS1のソフトとPS1用メモリーカード(ソニー純正の15ブロック SCPH-1020)を使っているのですが、ゲームソフトの説明書に「メモリーカード6ブロック使用」と書かれてあるのに3ブロック分しか保存できません。ブラウザ画面で確認したところ、使用されている容量が48KBで空き容量が74KBと表示されていました。空きがまだあるのになぜ保存できないのでしょうか?また、1枚/128KB=15ブロックで単純に計算すると1ブロックは約8.5KBで、現在3ブロックしか使っていないので26KB程度しか使わなくていいはずなのに48KBも使用されているのは何故なんでしょうか?どうか皆さん教えてください。