RFID pcsc

Aus Attraktor Wiki

Version vom 23. Oktober 2012, 01:03 Uhr von Florian (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

PCSC

Card Daemon

Debug

 sudo ./pcscd -a -f

zum starten und traffic beobachten:

 Loading lib v2.06 
 99999999 APDU: FF CA 00 00 00 
 00001642 SW: 04 89 51 C2 FE 20 80 90 00 

APDU sind die Befehle an die Tags, SW sind die Antworten.

Perl

Debian liefert PerlBindings fuer pcsc mit. Hier ein Beispielskript zum lesen von UIDs

 #!/usr/bin/perl
 
 use Chipcard::PCSC;
 use Chipcard::PCSC::Card;
 
 use warnings;
 use strict;
 
 my $hContext;
 my @ReadersList;
 
 my $hCard;
 my @StatusResult;
 my $tmpVal;
 my $SendData;
 my $RecvData;
 
 $hContext = new Chipcard::PCSC();
 die ("Can't create the pcsc object: $Chipcard::PCSC::errno\n") unless (defined $hContext);
 
 @ReadersList = $hContext->ListReaders ();
 die ("Can't get readers' list: $Chipcard::PCSC::errno\n") unless (defined($ReadersList[0]));
 $, = "\n  ";
 $" = "\n  ";
 
 $hCard = new Chipcard::PCSC::Card ($hContext, $ReadersList[0]);
 die ("Can't connect to the reader '$ReadersList[0]': $Chipcard::PCSC::errno\n") unless (defined($hCard));
 
 @StatusResult = $hCard->Status ();
 die ("Can't get card status: $Chipcard::PCSC::errno\n") unless (defined ($StatusResult[0]));
 
 printf "ATR = ";
 foreach $tmpVal (@{$StatusResult[3]}) {
         printf ("%02X ", $tmpVal);
 } print "\n";
 
 $SendData = [0xFF, 0xCA, 0x00, 0x00, 0x00];
 $RecvData = $hCard->Transmit($SendData);
 die ("Can't transmit data: $Chipcard::PCSC::errno") unless (defined ($RecvData));
 
 print "UID = ";
 foreach $tmpVal (@{$RecvData}) {
         printf ("%02X ", $tmpVal);
 } print "\n";
 
 $hCard->Disconnect($Chipcard::PCSC::SCARD_LEAVE_CARD);
 undef $hCard;
 $hContext = undef;

Siehe auch

Diese Seite wurde zuletzt am 23. Oktober 2012 um 01:03 Uhr geändert. Diese Seite wurde bisher 9.463 mal abgerufen.