find RC632 key patters in files
[perl-Mifare-MAD.git] / nfc-card-dumper.pl
index 09be742..37bee84 100755 (executable)
@@ -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;