彼らが最初共産主義者を攻撃したとき
▼ 2009/12/01(火) 師走
*1 : 所謂ニコニコダンステラミックスの時間
■BonCasServerをperlに移植した
スマートカードリーダLAN共有システムBonCasLinkのサーバBonCasServerをLinux上で走らせたかったので、perlで書き直してみました。BonCasLinkはソースが公開されてるのでプロトコルがさくっと分かって感謝です。BonCasLinkがやっているコトは簡単にはSCardTransmitを遠隔で叩くことだけなので、こいつの入出力*2をperlで書ければ良いことになる。
で、わたしの環境はDebian lennyなので、libpcsc-perlを入れる*3と、Chipcard::PCSCとChipcard::PCSC::Cardという二つのperl moduleが使用可能になります。
んで、さくっと書いてみたのがbcs-perl.pl。recv一発呼びで大丈夫なんかとか思うことはあるけどLAN環境下で何か動いてるように見える*4ので気にしない!
設定項目は
- 読みに行くカードリーダ
- listenするポート
- bindするIP
$ ./bcs-perl.pl listlistenするポートは特に変えなくてもいい気がします。bindするIPはLAN側のIPにした方が良いかも。
>>List of PC/SC card reader
SCM SCR 3310 NTTCom 00 00
>>EOL
$
ちなみにカードリーダはぐぐるとLinuxでも動くと書いてあったNTT-MEのSCR3310-NTTComを買いました。bcs-perl.plはリーダとしてSCR3310-NTTComを設定してる筈*5。
設定して起動すると、こんな感じに出て待機状態になれば良いんじゃないかなぁ。
$ ./bcs-perl.plあとは、クライアントBonCasStubが繋ぎに来たり接続切れたりしたら随時表示をします。動作確認としてPT2刺したマシンと白凡繋いだマシンから同時にbcs-perl.pl走ったマシンへ繋いでちゃんと二台のマシンで視聴出来たので出来たつもり。
>>Reader:SCM SCR 3310 NTTCom 00 00
>>Card Status:[Card Present][Powered][Ready for PTS]
>>Card ID: xx-xx-xx-xx-xx-xx
>>Begin Listening(0.0.0.0:6900).....
こんな所ですかね。そんな複雑なコトしてないのでpcsc_scanでB-CASが見えてれば動くはずですが、動かなかったらご愁傷様です。間違っても動かないからとBonCasLinkの作者*6に問い合わせないでください。
*2 : zipに添付されてるソースを読むと送受信共にまず先頭1バイトにデータ長が付いている。
*3 : aptitude search pcscで出てきたリストからpcscdとかpcsc-tools等を適当にinstallし、pcsc_scan叩いてB-CASが見えればおk。lennyだとpcsc_scanが/usr/share/pcsc/smartcard_list.txtを更新しろと言うので仰るとおりに更新してやる。
*4 : テストコードに近いので動けばオッケーみたいな気持ち。MSG_WAITALL付けてるから大丈夫だと思うけど。
*5 : リーダが複数台有るなど環境によって変わったりするんだろうかこの文字列。
▼ コメント(0件)
- TB-URL(確認後に公開) http://mono.kmc.gr.jp/~walkure/081/tb/