From 26aef03a48217f9bea9abb79477cdee32d9cc669 Mon Sep 17 00:00:00 2001 From: Romain Tartiere Date: Tue, 30 Mar 2010 12:54:49 +0000 Subject: [PATCH] Add man pages. --- libfreefare/Makefile.am | 54 ++++++- libfreefare/freefare.3 | 114 +++++++++++++++ libfreefare/mad.3 | 174 ++++++++++++++++++++++ libfreefare/mifare_application.3 | 113 +++++++++++++++ libfreefare/mifare_classic.3 | 241 +++++++++++++++++++++++++++++++ libfreefare/mifare_ultralight.3 | 127 ++++++++++++++++ 6 files changed, 822 insertions(+), 1 deletion(-) create mode 100644 libfreefare/freefare.3 create mode 100644 libfreefare/mad.3 create mode 100644 libfreefare/mifare_application.3 create mode 100644 libfreefare/mifare_classic.3 create mode 100644 libfreefare/mifare_ultralight.3 diff --git a/libfreefare/Makefile.am b/libfreefare/Makefile.am index 8a7ef6e..6862ed6 100644 --- a/libfreefare/Makefile.am +++ b/libfreefare/Makefile.am @@ -12,4 +12,56 @@ libfreefare_la_SOURCES = freefare.c \ libfreefare_la_HEADERS = freefare.h libfreefare_ladir = $(includedir) -EXTRA_DIST = freefare_internal.h +man_MANS = freefare.3 \ + mifare_ultralight.3 \ + mifare_classic.3 \ + mad.3 \ + mifare_application.3 + +linkedman = \ + freefare.3 freefare_get_tags.3 \ + freefare.3 freefare_get_tag_type.3 \ + freefare.3 freefare_get_tag_friendly_name.3 \ + freefare.3 freefare_free_tags.3 \ + mifare_ultralight.3 mifare_ultralight_connect.3 \ + mifare_ultralight.3 mifare_ultralight_disconnect.3 \ + mifare_ultralight.3 mifare_ultralight_read.3 \ + mifare_ultralight.3 mifare_ultralight_write.3 \ + mifare_ultralight.3 mifare_ultralight_get_uid.3 \ + mifare_classic.3 mifare_classic_connect.3 \ + mifare_classic.3 mifare_classic_disconnect.3 \ + mifare_classic.3 mifare_classic_authenticate.3 \ + mifare_classic.3 mifare_classic_read.3 \ + mifare_classic.3 mifare_classic_init_value.3 \ + mifare_classic.3 mifare_classic_read_value.3 \ + mifare_classic.3 mifare_classic_write.3 \ + mifare_classic.3 mifare_classic_increment.3 \ + mifare_classic.3 mifare_classic_decrement.3 \ + mifare_classic.3 mifare_classic_restore.3 \ + mifare_classic.3 mifare_classic_transfer.3 \ + mifare_classic.3 mifare_classic_get_trailer_block_permission.3 \ + mifare_classic.3 mifare_classic_get_data_block_permission.3 \ + mifare_classic.3 mifare_classic_format_sector.3 \ + mifare_classic.3 mifare_classic_get_uid.3 \ + mifare_classic.3 mifare_classic_trailer_block.3 \ + mad.3 mad_new.3 \ + mad.3 mad_read.3 \ + mad.3 mad_write.3 \ + mad.3 mad_get_version.3 \ + mad.3 mad_set_version.3 \ + mad.3 mad_get_card_publisher_sector.3 \ + mad.3 mad_set_card_publisher_sector.3 \ + mad.3 mad_get_aid.3 \ + mad.3 mad_set_aid.3 \ + mad.3 mad_free.3 \ + mifare_application.3 mifare_application_alloc.3 \ + mifare_application.3 mifare_application_free.3 \ + mifare_application.3 mifare_application_find.3 + +install-data-hook: + (cd $(DESTDIR)$(man3dir); for i in `echo $(linkedman) | xargs -n2 echo | awk '{print $$2}'`; do rm -f $$i; done; echo $(linkedman) | xargs -n2 $(LN_S)) + +uninstall-hook: + (cd $(DESTDIR)$(man3dir); for i in `echo $(linkedman) | xargs -n2 echo | awk '{print $$2}'`; do rm -f $$i; done;) + +EXTRA_DIST = freefare_internal.h $(man_MANS) diff --git a/libfreefare/freefare.3 b/libfreefare/freefare.3 new file mode 100644 index 0000000..ad11671 --- /dev/null +++ b/libfreefare/freefare.3 @@ -0,0 +1,114 @@ +.\" Copyright (C) 2010 Romain Tartiere +.\" +.\" This program is free software: you can redistribute it and/or modify it +.\" under the terms of the GNU Lesser General Public License as published by the +.\" Free Software Foundation, either version 3 of the License, or (at your +.\" option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public License +.\" along with this program. If not, see +.\" +.\" $Id$ +.\" +.Dd March 30, 2010 +.Dt FREEFARE 3 +.Os +.\" _ _ +.\" | \ | | __ _ _ __ ___ ___ +.\" | \| |/ _` | '_ ` _ \ / _ \ +.\" | |\ | (_| | | | | | | __/ +.\" |_| \_|\__,_|_| |_| |_|\___| +.\" +.Sh NAME +.Nm freefare_get_tags , +.Nm freefare_get_tag_type , +.Nm freefare_get_tag_friendly_name , +.Nm freefare_free_tags +.Nd Generic target manipulation functions +.\" _ _ _ +.\" | | (_) |__ _ __ __ _ _ __ _ _ +.\" | | | | '_ \| '__/ _` | '__| | | | +.\" | |___| | |_) | | | (_| | | | |_| | +.\" |_____|_|_.__/|_| \__,_|_| \__, | +.\" |___/ +.Sh LIBRARY +Mifare card manipulation library (libfreefare, \-lfreefare) +.\" ____ _ +.\" / ___| _ _ _ __ ___ _ __ ___(_)___ +.\" \___ \| | | | '_ \ / _ \| '_ \/ __| / __| +.\" ___) | |_| | | | | (_) | |_) \__ \ \__ \ +.\" |____/ \__, |_| |_|\___/| .__/|___/_|___/ +.\" |___/ |_| +.Sh SYNOPSIS +.In freefare.h +.Ft "MifareTag *" +.Fn freefare_get_tags "nfc_device_t *device" +.Ft enum mifare_tag_type +.Fn freefare_get_tag_type "MifareTag tag" +.Ft "const char *" +.Fn freefare_get_tag_friendly_name "MifareTag tag" +.Ft void +.Fn freefare_free_tags "MifareTag *tags" +.\" ____ _ _ _ +.\" | _ \ ___ ___ ___ _ __(_)_ __ | |_(_) ___ _ __ +.\" | | | |/ _ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \ +.\" | |_| | __/\__ \ (__| | | | |_) | |_| | (_) | | | | +.\" |____/ \___||___/\___|_| |_| .__/ \__|_|\___/|_| |_| +.\" |_| +.Sh DESCRIPTION +The +.Fn freefare_* +family of functions allow agnostic access to the +.Vt MifareTag +present on a given NFC device. +.Pp +.Fn freefare_get_tags +returns a NULL-terminated list of +.Vt MifareTag +present on +.Vt device . +This list has to be freed after usage using +.Fn freefare_free_tags . +.Pp +Information about a given +.Vt MifareTag +can be gathered using the +.Fn freefare_get_tag_type +and +.Fn freefare_get_tag_friendly_name +functions. +.\" ____ _ _ +.\" | _ \ ___| |_ _ _ _ __ _ __ __ ____ _| |_ _ ___ ___ +.\" | |_) / _ \ __| | | | '__| '_ \ \ \ / / _` | | | | |/ _ \/ __| +.\" | _ < __/ |_| |_| | | | | | | \ V / (_| | | |_| | __/\__ \ +.\" |_| \_\___|\__|\__,_|_| |_| |_| \_/ \__,_|_|\__,_|\___||___/ +.\" +.Sh RETURN VALUES +Unless stated otherwise, all functions return a value greater than or equal to +.Va 0 +on success or +.Va -1 +on failure. +.\" ____ _ +.\" / ___| ___ ___ __ _| |___ ___ +.\" \___ \ / _ \/ _ \ / _` | / __|/ _ \ +.\" ___) | __/ __/ | (_| | \__ \ (_) | +.\" |____/ \___|\___| \__,_|_|___/\___/ +.\" +.Sh SEE ALSO +.Xr mifare_classic 3 , +.Xr mifare_ultralight 3 +.\" _ _ _ +.\" / \ _ _| |_| |__ ___ _ __ ___ +.\" / _ \| | | | __| '_ \ / _ \| '__/ __| +.\" / ___ \ |_| | |_| | | | (_) | | \__ \ +.\" /_/ \_\__,_|\__|_| |_|\___/|_| |___/ +.\" +.Sh AUTHORS +.An Romain Tartiere Aq romain@blogreen.org +.An Romuald Conty Aq rconty@il4p.fr diff --git a/libfreefare/mad.3 b/libfreefare/mad.3 new file mode 100644 index 0000000..1349d1c --- /dev/null +++ b/libfreefare/mad.3 @@ -0,0 +1,174 @@ +.\" Copyright (C) 2010 Romain Tartiere +.\" +.\" This program is free software: you can redistribute it and/or modify it +.\" under the terms of the GNU Lesser General Public License as published by the +.\" Free Software Foundation, either version 3 of the License, or (at your +.\" option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public License +.\" along with this program. If not, see +.\" +.\" $Id$ +.\" +.Dd March 30, 2010 +.Dt MAD 3 +.Os +.\" _ _ +.\" | \ | | __ _ _ __ ___ ___ +.\" | \| |/ _` | '_ ` _ \ / _ \ +.\" | |\ | (_| | | | | | | __/ +.\" |_| \_|\__,_|_| |_| |_|\___| +.\" +.Sh NAME +.Nm mad_new , +.Nm mad_read , +.Nm mad_write , +.Nm mad_get_version , +.Nm mad_set_version , +.Nm mad_get_card_publisher_sector , +.Nm mad_set_card_publisher_sector , +.Nm mad_get_aid , +.Nm mad_set_aid , +.Nm mad_free +.Nd "Mifare Application Directory (MAD) Manipulation Functions" +.\" _ _ _ +.\" | | (_) |__ _ __ __ _ _ __ _ _ +.\" | | | | '_ \| '__/ _` | '__| | | | +.\" | |___| | |_) | | | (_| | | | |_| | +.\" |_____|_|_.__/|_| \__,_|_| \__, | +.\" |___/ +.Sh LIBRARY +Mifare card manipulation library (libfreefare, \-lfreefare) +.\" ____ _ +.\" / ___| _ _ _ __ ___ _ __ ___(_)___ +.\" \___ \| | | | '_ \ / _ \| '_ \/ __| / __| +.\" ___) | |_| | | | | (_) | |_) \__ \ \__ \ +.\" |____/ \__, |_| |_|\___/| .__/|___/_|___/ +.\" |___/ |_| +.Sh SYNOPSIS +.In freefare.h +.Ft Mad +.Fn mad_new "uint8_t version" +.Ft Mad +.Fn mad_read "MifareTag tag" +.Ft int +.Fn mad_write "MifareTag tag" "Mad mad" "MifareClassicKey key_b_sector_00" "MifareClassicKey key_b_sector_10" +.Ft int +.Fn mad_get_version "Mad mad" +.Ft void +.Fn mad_set_version "Mad mad" "uint8_t version" +.Ft MifareSectorNumber +.Fn mad_get_card_publisher_sector "Mad mad" +.Ft int +.Fn mad_set_card_publisher_sector "Mad mad" "MifareSectorNumber cps" +.Ft int +.Fn mad_get_aid "Mad mad" "MifareSectorNumber sector" "MadAid *aid" +.Ft int +.Fn mad_set_aid "Mad mad" "MifareSectorNumber sector" "MadAid aid" +.Ft void +.Fn mad_free "Mad mad" +.\" ____ _ _ _ +.\" | _ \ ___ ___ ___ _ __(_)_ __ | |_(_) ___ _ __ +.\" | | | |/ _ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \ +.\" | |_| | __/\__ \ (__| | | | |_) | |_| | (_) | | | | +.\" |____/ \___||___/\___|_| |_| .__/ \__|_|\___/|_| |_| +.\" |_| +.Sh DESCRIPTION +Mifare Application Directories (MAD) can be easily manipulated using the +.Fn mad_* +set of functions. +.Pp +A +.Vt mad +can be loaded form a Mifare Classic +.Vt tag +using +.Fn mad_read +or generated from scratch using +.Fn mad_new +and providing the +.Vt version +of the +.Vt mad +to generate. After using a +.Vt mad , +the memory can be reclaimed using +.Fn mad_free . +.Pp +A +.Vt mad +can be written to a Mifare Classic +.Vt tag +using +.Fn mad_write +and providing the B keys required for writing to sectors 0, +.Vt key_b_sector_00, +and the one required for writing to sectors 10, +.Vt key_b_sector_10 . +When writing a MAD version 1 +.Vt mad , +the +.Vt key_b_sector_10 . +.Pp +The +.Vt version +of a MAD +.Vt mad +can be read using +.Fn mad_get_version +and changed using +.Fn mad_set_version . +.Pp +The card publisher sector number +.Vt cps +can be read read using +.Fn mad_get_card_publisher_sector +and writen using +.Fn mad_set_card_publisher_sector . +.Pp +Sectors allocation in the +.Vt mad +is handled by the +.Fn mad_get_aid +and +.Fn mad_set_aid +functions. These functions fill-in or read the Application Identifier, +.Vt aid +for the given +.Vt sector . +.\" ____ _ _ +.\" | _ \ ___| |_ _ _ _ __ _ __ __ ____ _| |_ _ ___ ___ +.\" | |_) / _ \ __| | | | '__| '_ \ \ \ / / _` | | | | |/ _ \/ __| +.\" | _ < __/ |_| |_| | | | | | | \ V / (_| | | |_| | __/\__ \ +.\" |_| \_\___|\__|\__,_|_| |_| |_| \_/ \__,_|_|\__,_|\___||___/ +.\" +.Sh RETURN VALUES +Unless stated otherwise, all functions return a value greater than or equal to +.Va 0 +on success or +.Va -1 +on failure. +.\" ____ _ +.\" / ___| ___ ___ __ _| |___ ___ +.\" \___ \ / _ \/ _ \ / _` | / __|/ _ \ +.\" ___) | __/ __/ | (_| | \__ \ (_) | +.\" |____/ \___|\___| \__,_|_|___/\___/ +.\" +.Sh SEE ALSO +.Xr freefare 3 , +.Xr mifare_application 3 , +.Xr mifare_classic 3 +.\" _ _ _ +.\" / \ _ _| |_| |__ ___ _ __ ___ +.\" / _ \| | | | __| '_ \ / _ \| '__/ __| +.\" / ___ \ |_| | |_| | | | (_) | | \__ \ +.\" /_/ \_\__,_|\__|_| |_|\___/|_| |___/ +.\" +.Sh AUTHORS +.An Romain Tartiere Aq romain@blogreen.org +.An Romuald Conty Aq rconty@il4p.fr diff --git a/libfreefare/mifare_application.3 b/libfreefare/mifare_application.3 new file mode 100644 index 0000000..3aa2b9c --- /dev/null +++ b/libfreefare/mifare_application.3 @@ -0,0 +1,113 @@ +.\" Copyright (C) 2010 Romain Tartiere +.\" +.\" This program is free software: you can redistribute it and/or modify it +.\" under the terms of the GNU Lesser General Public License as published by the +.\" Free Software Foundation, either version 3 of the License, or (at your +.\" option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public License +.\" along with this program. If not, see +.\" +.\" $Id$ +.\" +.Dd March 30, 2010 +.Dt MIFARE_APPLICATION 3 +.Os +.\" _ _ +.\" | \ | | __ _ _ __ ___ ___ +.\" | \| |/ _` | '_ ` _ \ / _ \ +.\" | |\ | (_| | | | | | | __/ +.\" |_| \_|\__,_|_| |_| |_|\___| +.\" +.Sh NAME +.Nm mifare_application_alloc , +.Nm mifare_application_free , +.Nm mifare_application_find +.Nd Mifare Applications Manipulation Functions +.\" _ _ _ +.\" | | (_) |__ _ __ __ _ _ __ _ _ +.\" | | | | '_ \| '__/ _` | '__| | | | +.\" | |___| | |_) | | | (_| | | | |_| | +.\" |_____|_|_.__/|_| \__,_|_| \__, | +.\" |___/ +.Sh LIBRARY +Mifare card manipulation library (libfreefare, \-lfreefare) +.\" ____ _ +.\" / ___| _ _ _ __ ___ _ __ ___(_)___ +.\" \___ \| | | | '_ \ / _ \| '_ \/ __| / __| +.\" ___) | |_| | | | | (_) | |_) \__ \ \__ \ +.\" |____/ \__, |_| |_|\___/| .__/|___/_|___/ +.\" |___/ |_| +.Sh SYNOPSIS +.In freefare.h +.Ft "MifareSectorNumber *" +.Fn mifare_application_alloc "Mad mad" "MadAid aid" "size_t size" +.Ft void +.Fn mifare_application_free "Mad mad" "MadAid aid" +.Ft "MifareSectorNumber *" +.Fn mifare_application_find "Mad mad" "MadAid aid" +.\" ____ _ _ _ +.\" | _ \ ___ ___ ___ _ __(_)_ __ | |_(_) ___ _ __ +.\" | | | |/ _ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \ +.\" | |_| | __/\__ \ (__| | | | |_) | |_| | (_) | | | | +.\" |____/ \___||___/\___|_| |_| .__/ \__|_|\___/|_| |_| +.\" |_| +The +.Fn mifare_application_* +functions facilitate management of applications in a Mifare Application +Directory. +.Pp +The +.Fn mifare_application_alloc +function allocates enought sectors to store +.Vt size +blocks for the Application Identifier +.Vt aid +and returns the list of allocated sectors. +.Pp +The list of the sectors previously allocated for +.Vt aid +in a +.Vt mad +can be requested using +.Fn mifare_application_find . +.Pp +An application can be removed from a +.Vt mad +using +.Fn mifare_application_free . +.\" ____ _ _ +.\" | _ \ ___| |_ _ _ _ __ _ __ __ ____ _| |_ _ ___ ___ +.\" | |_) / _ \ __| | | | '__| '_ \ \ \ / / _` | | | | |/ _ \/ __| +.\" | _ < __/ |_| |_| | | | | | | \ V / (_| | | |_| | __/\__ \ +.\" |_| \_\___|\__|\__,_|_| |_| |_| \_/ \__,_|_|\__,_|\___||___/ +.\" +.Sh RETURN VALUES +Unless stated otherwise, all functions return a value greater than or equal to +.Va 0 +on success or +.Va -1 +on failure. +.\" ____ _ +.\" / ___| ___ ___ __ _| |___ ___ +.\" \___ \ / _ \/ _ \ / _` | / __|/ _ \ +.\" ___) | __/ __/ | (_| | \__ \ (_) | +.\" |____/ \___|\___| \__,_|_|___/\___/ +.\" +.Sh SEE ALSO +.Xr mad 3 , +.Xr mifare_classic 3 +.\" _ _ _ +.\" / \ _ _| |_| |__ ___ _ __ ___ +.\" / _ \| | | | __| '_ \ / _ \| '__/ __| +.\" / ___ \ |_| | |_| | | | (_) | | \__ \ +.\" /_/ \_\__,_|\__|_| |_|\___/|_| |___/ +.\" +.Sh AUTHORS +.An Romain Tartiere Aq romain@blogreen.org +.An Romuald Conty Aq rconty@il4p.fr diff --git a/libfreefare/mifare_classic.3 b/libfreefare/mifare_classic.3 new file mode 100644 index 0000000..75e99f3 --- /dev/null +++ b/libfreefare/mifare_classic.3 @@ -0,0 +1,241 @@ +.\" Copyright (C) 2010 Romain Tartiere +.\" +.\" This program is free software: you can redistribute it and/or modify it +.\" under the terms of the GNU Lesser General Public License as published by the +.\" Free Software Foundation, either version 3 of the License, or (at your +.\" option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public License +.\" along with this program. If not, see +.\" +.\" $Id$ +.\" +.Dd March 30, 2010 +.Dt MIFARE_CLASSIC 3 +.Os +.\" _ _ +.\" | \ | | __ _ _ __ ___ ___ +.\" | \| |/ _` | '_ ` _ \ / _ \ +.\" | |\ | (_| | | | | | | __/ +.\" |_| \_|\__,_|_| |_| |_|\___| +.\" +.Sh NAME +.Nm mifare_classic_connect , +.Nm mifare_classic_disconnect , +.Nm mifare_classic_authenticate , +.Nm mifare_classic_read , +.Nm mifare_classic_init_value , +.Nm mifare_classic_read_value , +.Nm mifare_classic_write , +.Nm mifare_classic_increment , +.Nm mifare_classic_decrement , +.Nm mifare_classic_restore , +.Nm mifare_classic_transfer , +.Nm mifare_classic_get_trailer_block_permission , +.Nm mifare_classic_get_data_block_permission , +.Nm mifare_classic_format_sector , +.Nm mifare_classic_get_uid , +.Nm mifare_classic_trailer_block +.Nd Mifare Classic Manipulation Functions +.\" _ _ _ +.\" | | (_) |__ _ __ __ _ _ __ _ _ +.\" | | | | '_ \| '__/ _` | '__| | | | +.\" | |___| | |_) | | | (_| | | | |_| | +.\" |_____|_|_.__/|_| \__,_|_| \__, | +.\" |___/ +.Sh LIBRARY +Mifare card manipulation library (libfreefare, \-lfreefare) +.\" ____ _ +.\" / ___| _ _ _ __ ___ _ __ ___(_)___ +.\" \___ \| | | | '_ \ / _ \| '_ \/ __| / __| +.\" ___) | |_| | | | | (_) | |_) \__ \ \__ \ +.\" |____/ \__, |_| |_|\___/| .__/|___/_|___/ +.\" |___/ |_| +.Sh SYNOPSIS +.In freefare.h +.Ft int +.Fn mifare_classic_connect "MifareTag tag" +.Ft int +.Fn mifare_classic_disconnect "MifareTag tag" +.Ft int +.Fn mifare_classic_authenticate "MifareTag tag" "const MifareClassicBlockNumber block" "const MifareClassicKey key" "const MifareClassicKeyType key_type" +.Ft int +.Fn mifare_classic_read "MifareTag tag" "const MifareClassicBlockNumber block" "MifareClassicBlock *data" +.Ft int +.Fn mifare_classic_init_value "MifareTag tag" "const MifareClassicBlockNumber block" "const int32_t value" "const MifareClassicBlockNumber adr" +.Ft int +.Fn mifare_classic_read_value "MifareTag tag" "const MifareClassicBlockNumber block" "int32_t *value" "MifareClassicBlockNumber *adr" +.Ft int +.Fn mifare_classic_write "MifareTag tag" "const MifareClassicBlockNumber block" "const MifareClassicBlock data" +.Ft int +.Fn mifare_classic_increment "MifareTag tag" "const MifareClassicBlockNumber block" "const uint32_t amount" +.Ft int +.Fn mifare_classic_decrement "MifareTag tag" "const MifareClassicBlockNumber block" "const uint32_t amount" +.Ft int +.Fn mifare_classic_restore "MifareTag tag" "const MifareClassicBlockNumber block" +.Ft int +.Fn mifare_classic_transfer "MifareTag tag" "const MifareClassicBlockNumber block" +.Ft int +.Fn mifare_classic_get_trailer_block_permission "MifareTag tag" "const MifareClassicBlockNumber block" "const uint16_t permission" "const MifareClassicKeyType key_type" +.Ft int +.Fn mifare_classic_get_data_block_permission "MifareTag tag" "const MifareClassicBlockNumber block" "const unsigned char permission" "const MifareClassicKeyType key_type" +.Ft int +.Fn mifare_classic_format_sector "MifareTag tag" "const MifareClassicBlockNumber block" +.Ft "char *" +.Fn mifare_classic_get_uid "MifareTag tag" +.Ft void +.Fn 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" +.\" ____ _ _ _ +.\" | _ \ ___ ___ ___ _ __(_)_ __ | |_(_) ___ _ __ +.\" | | | |/ _ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \ +.\" | |_| | __/\__ \ (__| | | | |_) | |_| | (_) | | | | +.\" |____/ \___||___/\___|_| |_| .__/ \__|_|\___/|_| |_| +.\" |_| +.Sh DESCRIPTION +The +.Fn mifare_classic_* +set of functions allow manipulation of both Mifare Classic 1k and Mifare +Classic 4k cards. +.Pp +A given +.Vt tag +is activated using +.Fn mifare_classic_connect , +deactivation is performed with +.Fn mifare_classic_disconnect . +.Pp +After a successful connection, an authentication for a +.Vt block +using a +.Vt key +of type +.Vt key_type +(either +.Ar MFC_KEY_A +or +.Ar MFC_KEY_B ) +using +.Fn mifare_classic_authenticate +is required for further operation. +.Pp +Once successfuly authenticated, +.Vt data +of a +.Vt block +can be read using +.Fn mifare_classic_read +and written using +.Fn mifare_classic_write . +.Pp +Value-blocks can be easily accessed using the +.Fn mifare_classic_read_value +and +.Fn mifare_classic_init_value +functions. Aditional functions are available for such +.Vt blocks : +.Fn mifare_classic_increment +and +.Fn mifare_classic_decrement +increment or decrement the value of the provided +.Vt block +by +.Vt amount +and store the result in the target's internal data register. The value in this +register can also be loaded with the value from another +.Vt block +using +.Fn mifare_classic_restore . +Writing back the value of the target's internal data register to a +.Vt block +is requested using +.Fn mifare_classic_transfer . +.Pp +Permissions for a data +.Vt block +can be fetched using +.Fn mifare_classic_get_data_block_permission . +The access +.Vt permission +to be checkf for key +.Vt key_type +is one of +.Ar MCAB_R , +.Ar MCAB_W , +.Ar MCAB_I or +.Ar MCAB_D ; +respectively for read, write, increment and decrement permissions. +.Pp +.Fn mifare_classic_get_trailer_block_permission +acts like +.Fn mifare_classic_get_data_block_permission +but the available +.Vt permissions +are +.Ar MCAB_READ_KEYA , +.Ar MCAB_READ_KEYB , +.Ar MCAB_READ_ACCESS_BITS , +.Ar MCAB_WRITE_ACCESS_BITS , +.Ar MCAB_READ_KEYB and +.Ar MCAB_WRITE_KEYB . +.Pp +A whole sector can be reset to factory defaults using +.Fn mifare_classic_format_sector +and providing any +.Vt block +in the sector. +.Pp +The +.Fn mifare_classic_trailer_block +is a convenience function for building a trailer block +.Vt block +given a A key +.Vt key_a ; +access bits for the blocks of the sector +.Vt ab_0 , +.Vt ab_1 and +.Vt ab_2 ; +and a B key +.Vt key_b . +.Pp +The +.Fn mifare_classic_get_uid +function retrieves a text representation of the UID of a +.Fn tag . +It is not required for the +.Vt tag +to be active to use this function. +.\" ____ _ _ +.\" | _ \ ___| |_ _ _ _ __ _ __ __ ____ _| |_ _ ___ ___ +.\" | |_) / _ \ __| | | | '__| '_ \ \ \ / / _` | | | | |/ _ \/ __| +.\" | _ < __/ |_| |_| | | | | | | \ V / (_| | | |_| | __/\__ \ +.\" |_| \_\___|\__|\__,_|_| |_| |_| \_/ \__,_|_|\__,_|\___||___/ +.\" +.Sh RETURN VALUES +Unless stated otherwise, all functions return a value greater than or equal to +.Va 0 +on success or +.Va -1 +on failure. +.\" ____ _ +.\" / ___| ___ ___ __ _| |___ ___ +.\" \___ \ / _ \/ _ \ / _` | / __|/ _ \ +.\" ___) | __/ __/ | (_| | \__ \ (_) | +.\" |____/ \___|\___| \__,_|_|___/\___/ +.\" +.Sh SEE ALSO +.Xr freefare 3 , +.Xr mad 3 +.\" _ _ _ +.\" / \ _ _| |_| |__ ___ _ __ ___ +.\" / _ \| | | | __| '_ \ / _ \| '__/ __| +.\" / ___ \ |_| | |_| | | | (_) | | \__ \ +.\" /_/ \_\__,_|\__|_| |_|\___/|_| |___/ +.\" +.Sh AUTHORS +.An Romain Tartiere Aq romain@blogreen.org +.An Romuald Conty Aq rconty@il4p.fr diff --git a/libfreefare/mifare_ultralight.3 b/libfreefare/mifare_ultralight.3 new file mode 100644 index 0000000..30bf6f6 --- /dev/null +++ b/libfreefare/mifare_ultralight.3 @@ -0,0 +1,127 @@ +.\" Copyright (C) 2010 Romain Tartiere +.\" +.\" This program is free software: you can redistribute it and/or modify it +.\" under the terms of the GNU Lesser General Public License as published by the +.\" Free Software Foundation, either version 3 of the License, or (at your +.\" option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU Lesser General Public License +.\" along with this program. If not, see +.\" +.\" $Id$ +.\" +.Dd March 30, 2010 +.Dt MIFARE_ULTRALIGHT 3 +.Os +.\" _ _ +.\" | \ | | __ _ _ __ ___ ___ +.\" | \| |/ _` | '_ ` _ \ / _ \ +.\" | |\ | (_| | | | | | | __/ +.\" |_| \_|\__,_|_| |_| |_|\___| +.\" +.Sh NAME +.Nm mifare_ultralight_connect , +.Nm mifare_ultralight_disconnect , +.Nm mifare_ultralight_read , +.Nm mifare_ultralight_write , +.Nm mifare_ultralight_get_uid , +.Nd Mifare UltraLight Manipulation Functions +.\" _ _ _ +.\" | | (_) |__ _ __ __ _ _ __ _ _ +.\" | | | | '_ \| '__/ _` | '__| | | | +.\" | |___| | |_) | | | (_| | | | |_| | +.\" |_____|_|_.__/|_| \__,_|_| \__, | +.\" |___/ +.Sh LIBRARY +Mifare card manipulation library (libfreefare, \-lfreefare) +.\" ____ _ +.\" / ___| _ _ _ __ ___ _ __ ___(_)___ +.\" \___ \| | | | '_ \ / _ \| '_ \/ __| / __| +.\" ___) | |_| | | | | (_) | |_) \__ \ \__ \ +.\" |____/ \__, |_| |_|\___/| .__/|___/_|___/ +.\" |___/ |_| +.Sh SYNOPSIS +.Ft int +.Fn mifare_ultralight_connect "MifareTag tag" +.Ft int +.Fn mifare_ultralight_disconnect "MifareTag tag" +.Ft int +.Fn mifare_ultralight_read "MifareTag tag" "const MifareUltralightPageNumber page" "MifareUltralightPage *data" +.Ft int +.Fn mifare_ultralight_write "MifareTag tag" "const MifareUltralightPageNumber page" "const MifareUltralightPage data" +.Ft "char *" +.Fn mifare_ultralight_get_uid "MifareTag tag" +.\" ____ _ _ _ +.\" | _ \ ___ ___ ___ _ __(_)_ __ | |_(_) ___ _ __ +.\" | | | |/ _ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \ +.\" | |_| | __/\__ \ (__| | | | |_) | |_| | (_) | | | | +.\" |____/ \___||___/\___|_| |_| .__/ \__|_|\___/|_| |_| +.\" |_| +.Sh DESCRIPTION +The +.Fn mifare_ultralight_* +functions allows management of Mifare UltraLight tags. +.Pp +The +.Fn mifare_ultralight_connect +function activates the specified +.Vt tag . +.Pp +A +.Vt page +of +.Vt data +can be read from a +.Vt tag +using +.Fn mifare_ultralight_read , +and written +using +.Fn mifare_ultralight_write . +.Pp +After usage, a +.Vt tag +is deactivated using +.Fn mifare_ultralight_disconnect . +.Pp +The +.Fn mifare_ultralight_get_uid +function retrieves a text representation of the UID of a +.Fn tag . +It is not required for the +.Vt tag +to be active to use this function. +.\" ____ _ _ +.\" | _ \ ___| |_ _ _ _ __ _ __ __ ____ _| |_ _ ___ ___ +.\" | |_) / _ \ __| | | | '__| '_ \ \ \ / / _` | | | | |/ _ \/ __| +.\" | _ < __/ |_| |_| | | | | | | \ V / (_| | | |_| | __/\__ \ +.\" |_| \_\___|\__|\__,_|_| |_| |_| \_/ \__,_|_|\__,_|\___||___/ +.\" +.Sh RETURN VALUES +Unless stated otherwise, all functions return a value greater than or equal to +.Va 0 +on success or +.Va -1 +on failure. +.\" ____ _ +.\" / ___| ___ ___ __ _| |___ ___ +.\" \___ \ / _ \/ _ \ / _` | / __|/ _ \ +.\" ___) | __/ __/ | (_| | \__ \ (_) | +.\" |____/ \___|\___| \__,_|_|___/\___/ +.\" +.Sh SEE ALSO +.Xr freefare 3 +.\" _ _ _ +.\" / \ _ _| |_| |__ ___ _ __ ___ +.\" / _ \| | | | __| '_ \ / _ \| '__/ __| +.\" / ___ \ |_| | |_| | | | (_) | | \__ \ +.\" /_/ \_\__,_|\__|_| |_|\___/|_| |___/ +.\" +.Sh AUTHORS +.An Romain Tartiere Aq romain@blogreen.org +.An Romuald Conty Aq rconty@il4p.fr