Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MIFARE_CLASSIC(3)	    Library Functions Manual	     MIFARE_CLASSIC(3)

NAME
       mifare_classic_connect,			    mifare_classic_disconnect,
       mifare_classic_authenticate,			  mifare_classic_read,
       mifare_classic_init_value,		    mifare_classic_read_value,
       mifare_classic_write,			     mifare_classic_increment,
       mifare_classic_decrement,		       mifare_classic_restore,
       mifare_classic_transfer,	  mifare_classic_get_trailer_block_permission,
       mifare_classic_get_data_block_permission, mifare_classic_format_sector,
       mifare_classic_trailer_block,		  mifare_classic_block_sector,
       mifare_classic_sector_first_block,   mifare_classic_sector_block_count,
       mifare_classic_sector_last_block	 --  Mifare Classic Manipulation Func-
       tions

LIBRARY
       Mifare card manipulation	library	(libfreefare, -lfreefare)

SYNOPSIS
       #include	<freefare.h>

       int
       mifare_classic_connect(MifareTag	tag);

       int
       mifare_classic_disconnect(MifareTag tag);

       int
       mifare_classic_authenticate(MifareTag				  tag,
	   const  MifareClassicBlockNumber  block, const MifareClassicKey key,
	   const MifareClassicKeyType key_type);

       int
       mifare_classic_read(MifareTag					  tag,
	   const MifareClassicBlockNumber block, MifareClassicBlock *data);

       int
       mifare_classic_init_value(MifareTag				  tag,
	   const  MifareClassicBlockNumber   block,   const   int32_t	value,
	   const MifareClassicBlockNumber adr);

       int
       mifare_classic_read_value(MifareTag				  tag,
	   const    MifareClassicBlockNumber	block,	   int32_t     *value,
	   MifareClassicBlockNumber *adr);

       int
       mifare_classic_write(MifareTag					  tag,
	   const		MifareClassicBlockNumber		block,
	   const MifareClassicBlock data);

       int
       mifare_classic_increment(MifareTag				  tag,
	   const MifareClassicBlockNumber block, const uint32_t	amount);

       int
       mifare_classic_decrement(MifareTag				  tag,
	   const MifareClassicBlockNumber block, const uint32_t	amount);

       int
       mifare_classic_restore(MifareTag					  tag,
	   const MifareClassicBlockNumber block);

       int
       mifare_classic_transfer(MifareTag				  tag,
	   const MifareClassicBlockNumber block);

       int
       mifare_classic_get_trailer_block_permission(MifareTag		  tag,
	   const MifareClassicBlockNumber block,  const	 uint16_t  permission,
	   const MifareClassicKeyType key_type);

       int
       mifare_classic_get_data_block_permission(MifareTag		  tag,
	   const		MifareClassicBlockNumber		block,
	   const	     unsigned		  char		   permission,
	   const MifareClassicKeyType key_type);

       int
       mifare_classic_format_sector(MifareTag				  tag,
	   const MifareClassicSectorNumber sector);

       void
       mifare_classic_trailer_block(MifareClassicBlock		       *block,
	   const    MifareClassicKey	key_a,	   const     uint8_t	 ab_0,
	   const  uint8_t  ab_1,  const	 uint8_t  ab_2,	 const	uint8_t	ab_tb,
	   const uint8_t gpb, const MifareClassicKey key_b);

       MifareClassicSectorNumber
       mifare_classic_block_sector(MifareClassicBlockNumber block);

       MifareClassicBlockNumber
       mifare_classic_sector_first_block(MifareClassicSectorNumber sector);

       size_t
       mifare_classic_sector_block_count(MifareClassicSectorNumber sector);

       MifareClassicBlockNumber
       mifare_classic_sector_last_block(MifareClassicSectorNumber sector);

DESCRIPTION
       The mifare_classic_*() set of functions allow manipulation of both  Mi-
       fare Classic 1k and Mifare Classic 4k cards.

       A  given	 tag is	activated using	mifare_classic_connect(), deactivation
       is performed with mifare_classic_disconnect().

       After a successful connection, an authentication	for a  block  using  a
       key   of	  type	 key_type   (either   MFC_KEY_A	 or  MFC_KEY_B)	 using
       mifare_classic_authenticate() is	required for further operation.

       Once successfuly	authenticated, data of	a  block  can  be  read	 using
       mifare_classic_read() and written using mifare_classic_write().

       Value-blocks	 can	  be	 easily	    accessed	 using	   the
       mifare_classic_read_value() and mifare_classic_init_value()  functions.
       Additional     functions	    are	   available	for    such    blocks:
       mifare_classic_increment() and mifare_classic_decrement() increment  or
       decrement  the  value of	the provided block by amount and store the re-
       sult in the target's internal data register.  The value in this	regis-
       ter  can	 also  be  loaded  with	 the  value  from  another block using
       mifare_classic_restore().  Writing back the value of the	 target's  in-
       ternal	 data	 register    to	   a	block	is   requested	 using
       mifare_classic_transfer().

       Permissions   for   a	data	block	 can	be    fetched	 using
       mifare_classic_get_data_block_permission().   The  access permission to
       be checkf for key key_type is one of MCAB_R, MCAB_W, MCAB_I or  MCAB_D;
       respectively for	read, write, increment and decrement permissions.

       mifare_classic_get_trailer_block_permission()	     acts	  like
       mifare_classic_get_data_block_permission()    but     the     available
       permissions  are	MCAB_READ_KEYA,	MCAB_READ_KEYB,	MCAB_READ_ACCESS_BITS,
       MCAB_WRITE_ACCESS_BITS, MCAB_READ_KEYB and MCAB_WRITE_KEYB.

       A   whole   sector   can	  be   reset   to   factory   defaults	 using
       mifare_classic_format_sector().

       The mifare_classic_trailer_block() is a convenience function for	build-
       ing  a  trailer	block  block  given a A	key key_a; access bits for the
       blocks of the sector ab_0, ab_1 and ab_2; and a B key key_b.

       The mifare_classic_block_sector(), function returns the number  of  the
       sector holding block.

       The				  mifare_classic_sector_first_block(),
       mifare_classic_sector_block_count(), mifare_classic_sector_last_block()
       or the complement of the	mifare_classic_block_sector() function and re-
       turn various block-level	information about the provided sector.

RETURN VALUES
       Unless stated otherwise,	all functions return a value greater  than  or
       equal to	0 on success or	-1 on failure.

SEE ALSO
       freefare(3), mad(3)

AUTHORS
       Romain Tartiere <romain@blogreen.org>
       Romuald Conty <romuald@libnfc.org>

FreeBSD	ports 15.0		March 30, 2010		     MIFARE_CLASSIC(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mifare_classic_init_value&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help