X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FBiblio%2FRFID%2FReader%2Flibrfid.pm;h=9fa3387ed55b4377d442d5f59fe3a242c73af57b;hb=e11f5b0553fa9d3d4366c8e08ed16ccaccd12b83;hp=40005f7741ea8b037dfa75e725f19282065100ef;hpb=75c0bcf89f52d01dd630a27d30e7a4d84219c2b2;p=Biblio-RFID.git diff --git a/lib/Biblio/RFID/Reader/librfid.pm b/lib/Biblio/RFID/Reader/librfid.pm index 40005f7..9fa3387 100644 --- a/lib/Biblio/RFID/Reader/librfid.pm +++ b/lib/Biblio/RFID/Reader/librfid.pm @@ -22,6 +22,10 @@ Due to limitation of L only L and L is supported. +This version uses modidified C which supports +new C<-s> flag which reads sectors 0-3 with C<-k> key and +sectors 4-7 with key from C<-s> option. + However, this code might provide template for integration with any command-line utilities for different RFID readers. @@ -41,7 +45,7 @@ sub _grep_tool { my ( $bin, $param, $coderef, $path ) = @_; warn "# _grep_tool $bin $param\n"; - open(my $s, '-|', "$bin $param") || die $!; + open(my $s, '-|', "$bin $param 2>/dev/null") || die $!; my $sid; my $iso; @@ -72,7 +76,7 @@ sub inventory { _grep_tool 'librfid-tool', '--scan' => sub { my ( $sid, $iso ) = @_; if ( $sid ) { - push @tags, $sid unless defined $sid_iso->{$sid}; + push @tags, $sid; $sid_iso->{$sid} = $iso; } }; @@ -113,6 +117,7 @@ sub read_blocks { } else { read_mifare_keys unless $mifare_keys; +=for unmodified mifate-tool foreach my $sector ( keys %$mifare_keys ) { my $key = lc $mifare_keys->{$sector}; _grep_tool 'mifare-tool', "-k $key -r $sector" => sub { @@ -120,6 +125,11 @@ sub read_blocks { if m/data=\s*(.+)/; }; } +=cut + _grep_tool 'mifare-tool', "-k " . $mifare_keys->{0} . " -s " . $mifare_keys->{4} => sub { + $blocks->{$sid}->[$1] = hex2bytes($2) + if m/page=(\d+).*data=\s*(.+)/; + }; } warn "# read_blocks ",dump($blocks); return $blocks;