X-Git-Url: http://git.rot13.org/?p=perl-Mifare-MAD.git;a=blobdiff_plain;f=nfc-card-dumper.pl;h=37bee84d92f7a3a536711b07448edd6a97b73c82;hp=09be74238b5303a63db54c8f668e58c5bfc0f29c;hb=HEAD;hpb=25e67f6fb1e89a920b38b629de2695c7402d90a9 diff --git a/nfc-card-dumper.pl b/nfc-card-dumper.pl index 09be742..37bee84 100755 --- a/nfc-card-dumper.pl +++ b/nfc-card-dumper.pl @@ -13,6 +13,7 @@ use Data::Dump qw(dump); my ($opt,$usage) = describe_options( '%c %c [dump_with_keys]', [ 'write=s', 'write dump to card' ], + [ 'verify!', 'verify writes', { default => 1 } ], [ 'debug|d', 'show debug dumps' ], [ 'help|h', 'usage' ], ); @@ -83,12 +84,18 @@ if ($r->init()) { my $out_file = write_card_dump $tag => $card; if ( $opt->write ) { - read_file $opt->write; - print STDERR "writing $uid block "; + $card = read_file $opt->write; foreach my $block ( 0 .. $tag->blocks ) { my $offset = 0x10 * $block; - $tag->write_block( $block, substr($card,$offset,0x10) ); - print STDERR "$block "; + my $data = substr($card,$offset,0x10); + print STDERR "writing $uid block $block"; + $tag->write_block( $block, $data ); + if ( $opt->verify ) { + print STDERR " verify "; + my $verify = $tag->read_block( $block ); + print STDERR $verify eq $data ? "OK" : "ERROR"; + } + print STDERR "\n"; } print STDERR "done\n"; unlink $card_key_file;