「Felica programming」の編集履歴(バックアップ)一覧はこちら

Felica programming」(2006/04/01 (土) 10:42:21) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

<ul> <li>やりたいこと</li> </ul> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>Felicaを使ったプログラミング</p> <p>最終的にはLinuxで動くこと</p> </blockquote> <ul> <li> <div>やったこと</div> </li> </ul> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>Pasoriの入手</p> </blockquote> <p>とりあえず、UFJカードに入ってPasoriを手に入れる。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>libpasori</p> </blockquote> <p> フリーのソフトを探す。プログラミングできそうなのはlibpasori。linux版もWindows版もある。</p> <p> まずは、WindowsXPにlibpasoriを入れる。Cygwinも入れる。コンパイルには、LibUsbが必要とのことで、Windows用のを入れる。</p> <p><a href= "http://libusb-win32.sourceforge.net/">http://libusb-win32.sourceforge.net/</a></p> <p> インストーラ付のexeをダウンロードして実行。テストプログラムも走る。でも、実はソースも必要なので、落とす。ソースからのmakeは一発で通った。</p> <p> このままだと、installされない。installのところを読むとbinarypackageをダウンロードするみたい。</p> <br> <p> ううむ、良く読むと、2種類の使い方があって、それぞれinstallの方法が違う。しかも、DeviceDriverの方は、libusb.infを修正しろと書いてあるのに、そんなファイルは存在しない。でも、開発用に必要なのはこっちのような感じだ。</p> <p> ホームページのドキュメントが、バージョン0.1.7なのに、最新版は0.1.10.1なので、内容を比較すると、infファイルは自動で作られるみたいで、そのためのexeファイルっぽいのがある。実行すると、infファイルができた。</p> <p> 良く分からないので、installはせずに、libpasoriのフォルダに直接usb.hとlibusb.aをおいて、-I.-L.をつけてコンパイルしたら、warningは出るものの、一応動いたくさい。</p> <p>SFCardPeeperをダウンロードして、内容を比較してみる。</p> <p><a href= "http://www014.upp.so-net.ne.jp/SFCardFan/">http://www014.upp.so-net.ne.jp/SFCardFan/</a></p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>改造</p> </blockquote> <p> 一応、IDm、PMmは表示できるようにした。でも、カードの表面に書いてあるIDと違うんだよね。なんとなく気持ち悪いので、対応がないか探す。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>2chに、EdyのNo.を表示するVBAがあった。</p> <p><font color="#FF0000" size= "4">■◇FeliCaでソフトを作りまくるスレ◇■</font></p> <p><a href= "http://pc8.2ch.net/test/read.cgi/tech/1100532582/">http://pc8.2ch.net/test/read.cgi/tech/1100532582/</a></p> </blockquote> <p dir="ltr">正規のDLL経由でEdyのNo.を表示している。</p> <p dir="ltr"> これを見ると、サービスコード0x110b、対象ブロック0x8000、0x8001でReadBlockWithoutEncryptionというのを実行すると良いらしい。(でもうまくいかないよおお)</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr">この辺、結構2chに情報が散在している。</p> <p dir="ltr"><font size="4"><font color="#FF0000">【</font><b style= "COLOR: black; BACKGROUND-COLOR: #ffff66">FeliCa</b><font color= "#FF0000">】Suica&Edyを語れ</font></font></p> </blockquote> <p dir="ltr"> ううむ、でも情報は結構ばらばら。さすがに公開情報ではないので、少しずつHackしたり、関係者が少しずつばらしたりしているような感じ。最終的に使うときは、SDKを入手しないといけないみたい。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr">実験</p> </blockquote> <p dir="ltr"> libpasoriのサンプルを修正して、EdyのIDを読もうとするが失敗。仕方ないので、USBをスヌープする。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr"><a class="l" onmousedown="return clk(this.href,'res','1','')" href="http://sourceforge.net/projects/usbsnoop/"><font color= "#551A8B">SourceForge.net: <b>Usb</b> Sniffer for Windows</font></a></p> </blockquote> <p dir="ltr"><font size= "2">で、良く見ると、IDmの上位1桁目が違うぞ。何で?正しく動く方はIDmが「11」で始まるのに、libpasoriの方は「01」で始まる。(後は同じ)試しに、直接IDmを「11」で問い合わせてみると、確かに成功して、EdyNoが返ってくる。で、もう少し調べると、IDmを調べるコマンドが少し違う。</font></p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr"><font size="2">SFCard Peeper</font></p> <p dir="ltr">0000: 00 00 ff 07 f9 5c 06 00 fe 00 00 00 a0 00</p> <p dir="ltr">libpaso</p> <p dir="ltr">(send) send:00 00 FF 07 F9 5C 06 00 FF FF 00 00 A0 00</p> </blockquote> <p dir="ltr"> これらの違いは、Edyと知ってのPollingか、知らないでのPollingかの違いのようだ。</p> <p dir="ltr"> 正式ソフトを調べると、FFFFを投げるのは、リーダ/ライタの自己診断プログラム。後は、Edyの場合はfe00、Suicaの場合は0003を使っている。このIDmを使えば、EdyではEdyNo.を知ることができる。SFCardPeeperは、ここを変えながらカードの種類を判別しているみたい。FFFFで正しいIDmが返ってこないのは、バグか仕様か分からない。1bitだけの違いだから仕様かもしれない。</p> <p dir="ltr"> で、EdyNo.を読むことはできるようになった。Suicaも読みたいが、情報がない。裏に書いてあるIDが読めるような気がするけど、、、。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr">注記</p> </blockquote> <p dir="ltr">FE 00 等の部分は、FeliCaSystemCodeと呼ばれる部分で、Pollingコマンドに置いて、指定されたSystemCodeを持つFeliCa以外は応答を返しません。ただし、FFは特別な意味を持って、ワイルドカードを意味します。つまり二桁ともFFとすると、SystemCodeがなにであっても応答を返すことになります(一部例外があります)。カードが論理分割されている場合、論理分割されたカード毎にSystemCodeを持ちます。System Code FE00は、FeliCa共通領域と呼ばれるもので、FeliCa共通で利用されるアプリケーション(Edyなど)が利用しています。おサイフケータイは主にFeliCa共通領域で構成されています(モバイルSuicaを入れると、論理分割さされ、サイバネ領域が現れます)。IDmの先頭4バイトは何番目の論理カードかを意味しています。SystemCodeFFFF で Pollingを行うと、一番若い論理カードのIDmを返すため、'0'になります。一般的にFeliCa共通領域は2番目の論理カードに割り当てることが多いため、SystemCodeFFFF で Polling を行うと '1' が返ります。</p> <p><br></p> <p dir="ltr"> 次は、Javaから使えるようにする方法を調べる。</p> <p dir="ltr"> と思ったけど、その前にlinuxで調べることにした。ところがうまくいかない。</p> <ul dir="ltr"> <li> <div>libpasori + libusb + vine3.2(kernel2.4) でエラーになる。</div> </li> </ul> <p> 最終的には、usbfsに対してlibusbからioctlを出したところで、EINVALのエラーになる。試しに、linuxのkernelをデバッグしようとして、該当しそうなEINVALを返している辺りを修正して再構築するが、状況は変化せず。kerneldebugの方法が今ひとつ分からずあきらめモード。</p> <p> 今度は、最初に戻って、Javaからのアクセス方法を調べる。jUSBとJSR-80とあるようだけど、後者の方が最近もactivityがあるようなので、JSR-80でトライ。基本的には、linuxが前提。サンプルプログラムはすぐに動作確認完了。ところが、pasoriの初期化のデータを送るところでとまる。データ転送には色々あるみたいで、どれをどう使えばよいか不明。調査中。</p> <p> Javaでは、Windowsではパスの設定を少しいじれば動いた。Linuxでも、パスの設定が違っていても、エラーメッセージがそうはでないのではまったけど、結局動いた。(詳細を書かないと意味ないか、、、)</p> <p> Linuxで、libpasoriはすぐには動かない。何故か、8バイトずつしか読めない。エラーがEINVALなので良く分からなかったが、8バイトずつにしたら動いた。</p> <p><br> <br></p>
<ul> <li>やりたいこと</li> </ul> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>Felicaを使ったプログラミング</p> <p>最終的にはLinuxで動くこと</p> </blockquote> <ul> <li> <div>やったこと</div> </li> </ul> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>Pasoriの入手</p> </blockquote> <p>とりあえず、UFJカードに入ってPasoriを手に入れる。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>libpasori</p> </blockquote> <p> フリーのソフトを探す。プログラミングできそうなのはlibpasori。linux版もWindows版もある。</p> <p> まずは、WindowsXPにlibpasoriを入れる。Cygwinも入れる。コンパイルには、LibUsbが必要とのことで、Windows用のを入れる。</p> <p><a href= "http://libusb-win32.sourceforge.net/">http://libusb-win32.sourceforge.net/</a></p> <p> インストーラ付のexeをダウンロードして実行。テストプログラムも走る。でも、実はソースも必要なので、落とす。ソースからのmakeは一発で通った。</p> <p> このままだと、installされない。installのところを読むとbinarypackageをダウンロードするみたい。</p> <br> <p> ううむ、良く読むと、2種類の使い方があって、それぞれinstallの方法が違う。しかも、DeviceDriverの方は、libusb.infを修正しろと書いてあるのに、そんなファイルは存在しない。でも、開発用に必要なのはこっちのような感じだ。</p> <p> ホームページのドキュメントが、バージョン0.1.7なのに、最新版は0.1.10.1なので、内容を比較すると、infファイルは自動で作られるみたいで、そのためのexeファイルっぽいのがある。実行すると、infファイルができた。</p> <p> 良く分からないので、installはせずに、libpasoriのフォルダに直接usb.hとlibusb.aをおいて、-I.-L.をつけてコンパイルしたら、warningは出るものの、一応動いたくさい。</p> <p>SFCardPeeperをダウンロードして、内容を比較してみる。</p> <p><a href= "http://www014.upp.so-net.ne.jp/SFCardFan/">http://www014.upp.so-net.ne.jp/SFCardFan/</a></p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>改造</p> </blockquote> <p> 一応、IDm、PMmは表示できるようにした。でも、カードの表面に書いてあるIDと違うんだよね。なんとなく気持ち悪いので、対応がないか探す。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p>2chに、EdyのNo.を表示するVBAがあった。</p> <p><font color="#FF0000" size= "4">■◇FeliCaでソフトを作りまくるスレ◇■</font></p> <p><a href= "http://pc8.2ch.net/test/read.cgi/tech/1100532582/">http://pc8.2ch.net/test/read.cgi/tech/1100532582/</a></p> </blockquote> <p dir="ltr">正規のDLL経由でEdyのNo.を表示している。</p> <p dir="ltr"> これを見ると、サービスコード0x110b、対象ブロック0x8000、0x8001でReadBlockWithoutEncryptionというのを実行すると良いらしい。(でもうまくいかないよおお)</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr">この辺、結構2chに情報が散在している。</p> <p dir="ltr"><font size="4"><font color="#FF0000">【</font><b style= "COLOR: black; BACKGROUND-COLOR: #ffff66">FeliCa</b><font color= "#FF0000">】Suica&Edyを語れ</font></font></p> </blockquote> <p dir="ltr"> ううむ、でも情報は結構ばらばら。さすがに公開情報ではないので、少しずつHackしたり、関係者が少しずつばらしたりしているような感じ。最終的に使うときは、SDKを入手しないといけないみたい。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr">実験</p> </blockquote> <p dir="ltr"> libpasoriのサンプルを修正して、EdyのIDを読もうとするが失敗。仕方ないので、USBをスヌープする。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr"><a class="l" onmousedown="return clk(this.href,'res','1','')" href="http://sourceforge.net/projects/usbsnoop/"><font color= "#551A8B">SourceForge.net: <b>Usb</b> Sniffer for Windows</font></a></p> </blockquote> <p dir="ltr"><font size= "2">で、良く見ると、IDmの上位1桁目が違うぞ。何で?正しく動く方はIDmが「11」で始まるのに、libpasoriの方は「01」で始まる。(後は同じ)試しに、直接IDmを「11」で問い合わせてみると、確かに成功して、EdyNoが返ってくる。で、もう少し調べると、IDmを調べるコマンドが少し違う。</font></p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr"><font size="2">SFCard Peeper</font></p> <p dir="ltr">0000: 00 00 ff 07 f9 5c 06 00 fe 00 00 00 a0 00</p> <p dir="ltr">libpaso</p> <p dir="ltr">(send) send:00 00 FF 07 F9 5C 06 00 FF FF 00 00 A0 00</p> </blockquote> <p dir="ltr"> これらの違いは、Edyと知ってのPollingか、知らないでのPollingかの違いのようだ。</p> <p dir="ltr"> 正式ソフトを調べると、FFFFを投げるのは、リーダ/ライタの自己診断プログラム。後は、Edyの場合はfe00、Suicaの場合は0003を使っている。このIDmを使えば、EdyではEdyNo.を知ることができる。SFCardPeeperは、ここを変えながらカードの種類を判別しているみたい。FFFFで正しいIDmが返ってこないのは、バグか仕様か分からない。1bitだけの違いだから仕様かもしれない。</p> <p dir="ltr"> で、EdyNo.を読むことはできるようになった。Suicaも読みたいが、情報がない。裏に書いてあるIDが読めるような気がするけど、、、。</p> <blockquote dir="ltr" style="MARGIN-RIGHT: 0px"> <p dir="ltr">注記</p> </blockquote> <p dir="ltr">FE 00等の部分は、FeliCaSystemCodeと呼ばれる部分で、Pollingコマンドに置いて、指定されたSystemCodeを持つFeliCa以外は応答を返しません。ただし、FFは特別な意味を持って、ワイルドカードを意味します。つまり二桁ともFFとすると、SystemCodeがなにであっても応答を返すことになります(一部例外があります)。カードが論理分割されている場合、論理分割されたカード毎にSystemCodeを持ちます。SystemCodeFE00は、FeliCa共通領域と呼ばれるもので、FeliCa共通で利用されるアプリケーション(Edyなど)が利用しています。おサイフケータイは主にFeliCa共通領域で構成されています(モバイルSuicaを入れると、論理分割さされ、サイバネ領域が現れます)。IDmの先頭4バイトは何番目の論理カードかを意味しています。SystemCodeFFFFでPollingを行うと、一番若い論理カードのIDmを返すため、'0'になります。一般的にFeliCa共通領域は2番目の論理カードに割り当てることが多いため、System Code FE 00で Polling を行うと '1' が返ります。</p> <p><br></p> <p dir="ltr"> 次は、Javaから使えるようにする方法を調べる。</p> <p dir="ltr"> と思ったけど、その前にlinuxで調べることにした。ところがうまくいかない。</p> <ul dir="ltr"> <li> <div>libpasori + libusb + vine3.2(kernel2.4) でエラーになる。</div> </li> </ul> <p> 最終的には、usbfsに対してlibusbからioctlを出したところで、EINVALのエラーになる。試しに、linuxのkernelをデバッグしようとして、該当しそうなEINVALを返している辺りを修正して再構築するが、状況は変化せず。kerneldebugの方法が今ひとつ分からずあきらめモード。</p> <p> 今度は、最初に戻って、Javaからのアクセス方法を調べる。jUSBとJSR-80とあるようだけど、後者の方が最近もactivityがあるようなので、JSR-80でトライ。基本的には、linuxが前提。サンプルプログラムはすぐに動作確認完了。ところが、pasoriの初期化のデータを送るところでとまる。データ転送には色々あるみたいで、どれをどう使えばよいか不明。調査中。</p> <p> Javaでは、Windowsではパスの設定を少しいじれば動いた。Linuxでも、パスの設定が違っていても、エラーメッセージがそうはでないのではまったけど、結局動いた。(詳細を書かないと意味ないか、、、)</p> <p> Linuxで、libpasoriはすぐには動かない。何故か、8バイトずつしか読めない。エラーがEINVALなので良く分からなかったが、8バイトずつにしたら動いた。</p> <p><br> <br></p>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー