トップページ⇒tech
373コメント142KB

FeliCa でソフトを作りまくるスレ 2ブロック目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/05/14(水) 07:24:15
felicalib
http://felicalib.tmurakam.org/

libpasori
http://libpasori.sourceforge.jp/

前スレ
■◇FeliCa でソフトを作りまくるスレ◇■
http://pc11.2ch.net/test/read.cgi/tech/1100532582/
0002デフォルトの名無しさん2008/05/14(水) 16:51:57
2
0003アホ2008/05/14(水) 17:21:56
3
0004デフォルトの名無しさん2008/05/16(金) 18:00:37
SDKを使わずにフリー領域への読み書き成功age
0005デフォルトの名無しさん2008/05/19(月) 00:28:39
3月に東京ビッグサイトで入手したAdvanced Card systemのACR122で読み書き成功。
felica,type a/b,NFC forum type1が読み書き可能。
ドライバを組み込み、スマートカードとして開く。
・ポーリング
CmdDataByte = 0;
CmdData[CmdDataByte++] = 0xff; //class
CmdData[CmdDataByte++] = 0x00; //ins
CmdData[CmdDataByte++] = 0; //p1
CmdData[CmdDataByte++] = 0; //p2
lenpt = (BYTE)CmdDataByte++; //len、後で設定
//REQCコマンドの発行
CmdData[CmdDataByte++] = 0xD4;
CmdData[CmdDataByte++] = 0x4A;
CmdData[CmdDataByte++] = 0x01;
CmdData[CmdDataByte++] = 0x01; //212kbps FeliCa
//Felicaコマンド、REQC
CmdData[CmdDataByte++] = 0x00; //コマンドコード
CmdData[CmdDataByte++] = SystemCode[0];
CmdData[CmdDataByte++] = SystemCode[1];
CmdData[CmdDataByte++] = 0x00; //RFU?
CmdData[CmdDataByte++] = TimeSlot; //タイムスロット?
CmdData[lenpt] = (BYTE)CmdDataByte - lenpt - 1; //len
m_SCLastErrorCode = ::SCardTransmit(m_hCard,SCARD_PCI_T0,CmdData,CmdDataByte,NULL,ResultCode,&ResultCodeByte);
if(m_SCLastErrorCode != SCARD_S_SUCCESS){
//エラー
}
else if(*ResultCode != 0x61){
//エラー
}
0006デフォルトの名無しさん2008/05/19(月) 00:29:18
続き
//コマンド応答を取得する
CmdDataByte = 0;
CmdData[CmdDataByte++] = 0xff; //class
CmdData[CmdDataByte++] = 0xC0; //ins
CmdData[CmdDataByte++] = 0; //p1
CmdData[CmdDataByte++] = 0; //p2
CmdData[CmdDataByte++] = ResultCode[1]; //len
m_SCLastErrorCode = ::SCardTransmit(m_hCard,SCARD_PCI_T0,CmdData,CmdDataByte,NULL,ResultCode,&ResultCodeByte);
if(SCARD_S_SUCCESS != m_SCLastErrorCode){
//エラー
}
ptr = ResultCode;
tagnum = ptr[2];
m_FindCardNum = 0;
m_CurrentCardIndex = 0;
ptr += 6;
for(i=0;i< tagnum;++i){
m_FindCardInfo[m_FindCardNum].Type = ACS_CARD_TYPE_FELICA;
memcpy(m_IDm,&ptr[0],8);
memcpy(m_PMm,&ptr[8],8);
m_FindCardNum++;
ptr += 16; //?
}
0007デフォルトの名無しさん2008/05/28(水) 23:54:27
IO-DATA の USB2-NFC を買って試してみた。

PaSoRi とは API が違うようで、felicalib ではアクセスできない模様(あたりまえか)

EdyViewer をちょっと調べてみたところ、オリジナルの EdyViewer にちょっとばかり
改造が入っている。EdyViewer.exe と同じディレクトリに felicatonfc.dll という DLLが
あって、こいつが felica.dll の API を NFC(?)ドライバの API に変換しているっぽい。
0008デフォルトの名無しさん2008/06/08(日) 18:25:19
ほっしゅ
0009デフォルトの名無しさん2008/06/16(月) 12:15:25
edy
0010デフォルトの名無しさん2008/06/16(月) 20:59:59
felicalib
0011デフォルトの名無しさん2008/06/18(水) 14:38:06
質問です。
SDKのLiteとRC-S860を学校の研究室で購入したのですが、Liteだけでカードのサービスコードやブロック数などの書き換えは可能なのでしょうか?
問い合わせでは入退室管理程度ならLiteで可能との返答がきたのですが…。
現行システムは昔購入したSDKについていたサンプルカード(システムコード:0x0000)で動きます。
新しく購入したRC-S860の現在の内容は、システムコードが0xFFFF(ワイルドカード)でサービスエリアはまったく定義(設定?)されてない状態です。

まだまだ内部構造が把握できてないのですが、何かヒントだけでもありましたらご教授ください。お願いいたします。
0012デフォルトの名無しさん2008/06/18(水) 22:17:05
>>11
liteではカードの発券はできない。発券の場合、sdkのエンタープライズ版と
発券用のリーダライタが必要
0013デフォルトの名無しさん2008/06/19(木) 08:59:32
>>11

本体
SDK for FeliCa Enterprise(Windows) \1,700,000-
SDK for FeliCa Enterprise(Reference Code) \2,500,000-

年間サポート
SDK for FeliCa Enterprise(Windows) \510,000-
SDK for FeliCa Enterprise(Reference Code) \750,000-

R/W
RC-S462B/492B \34,500 (円/台)

ちなみにEnterpriseに添付されているFormatDesignerではシステムコードの追加・編集は不可能です。
FeliCaカードを作成したい場合は、USCやトッパンフォームズに依頼するのが安くて手っ取り早いでしょう。
ちなみにUSCでカード作成する場合は、
 初期費用
  印刷デザイン 10万
  フォーマット設定 10万
 カード代
  ¥2000/枚 (印刷なしの場合は¥1600)
だそうですよ。

ていうか、Liteは相互認証不可能だからカード作成してもセキュリティエリアには書き込みできないので
入退室管理ならカード作成しなくてもFeliCaのIDmでできるのでは?
0014デフォルトの名無しさん2008/06/19(木) 10:27:02
詳しいレスありがとうございます。

>>12
やはり発券というかカードの内容(システムコード等)を書き換えるのはLiteでは不可能なのですね。
調査不足ではなくて安心しました。

>>13
そ、そんなにかかるのですか…。しかもFFDでも編集は不可能なんですね!
そういえばマニュアルにワイルドカードの一回のみしか変更ができないと記載してあったような気がします。

私も入退室管理のみならIDmをキーにして、DBなどでソフトを構築すればすむ話だろうと思っていたのですが、
卒業研究のボリュームとしては少なすぎるので、ICの特徴である値の保持を使って他に何かできないものか、と
メンバーと話し合い、今回の質問にいたりました。

今回の返答を活かし、また新たに研究内容を検討したいと思います。
ご丁寧にありがとうございました。
0015デフォルトの名無しさん2008/06/19(木) 17:06:12
>>14
まさにその入退室管理を卒研でやってる俺涙目w
0016デフォルトの名無しさん2008/06/20(金) 11:00:26
>>15
が、がんばろう…!
0017デフォルトの名無しさん2008/07/02(水) 11:28:31
保守

システムコードの設定最大数は16個らしい。
携帯FeliCaのシステムコードって後から追加できるのかな?
(EDY、Suicaはシステムコード違うし)
今度確認してみます。
0018172008/07/05(土) 00:07:03
SO903iで初期状態からViewSuicaをセットアップしたところ
システムコード0003が追加されました。
携帯FeliCaはSonyと契約すればシステムコードの追加が可能なようです。

その他の共通領域(EDYのシステムコード)を使用しているFeliCaは
既存の共通領域にサービス定義が追加されるようです。(あたりまえか。。。)
0019デフォルトの名無しさん2008/07/12(土) 16:27:28
WriteWithoutEncryption()をfelicalibクラスに記述してカードに書き込みを行いたいのですが、
参考になるサイト等ありましたら教えていただけないでしょうか?
ちなみにC#.netで開発を行っています。
宜しくお願いいたします。
0020172008/07/12(土) 17:30:11
>>19
SDK所有者なのでfelicalib未経験ですが、
http://sourceforge.jp/projects/felicalib/wiki/CSharp
↑のサンプルソースの、バイト型配列にReadWithoutEncryption
で取得した値を代入している部分を、
WriteWithoutEncryptionにあらかじめ値を入れておいたバイト型
配列を代入するようにすればできるのではないかと思いますが、
どうでしょうか?

参考
http://felicalib.tmurakam.org/refdoc/felicalib_8h.html
0021デフォルトの名無しさん2008/07/12(土) 20:53:49
>>20
ありがとうございます。
今日は用事があってできないので、明日早速試してみます。
0022172008/07/25(金) 08:49:35
保守ついでに日記

古いSDK Pro(Ver1.21)のfelica_for_vb.dllを使ったときに(?)、COMポートを使用するRW(RC-462B)を
USB-RS232C変換機を中継して接続するとopen_reader_writer_autoに失敗する・・・。
変換機はBuffalo製

Tutorialでは変換機入れてもオープンできるので、DLLの違いかな?と・・・。
Autoを使用しないでCOM1を指定してもオープンできず。。

あと最近のメーカーPCに搭載されてるPaSoRi(?)って、お店で見たらPluginsフォルダにファイルが
1個か2個しかないけど、あれで各コマンドが実行できるのだろうか・・・。あ〜試したいけど買う金ない。。。
■ このスレッドは過去ログ倉庫に格納されています