proxmark3/client/hidcardformats.h
grauerfuchs b5a5fc4d9f Redesign of lf hid card format handler as discussed with @marshmellow42
The new handler accepts multiple formats of the same length.
Because of this, the existing pack/unpack commands are unsupported
and have been removed and replaced with 'lf hid encode' and 'lf hid decode'.
The decode command will test a packed Prox ID against all programmed
formats and return results for all matching formats.
The encode command takes the parameter of format name instead of
bit length (as per the old pack command). Additionally, an 'lf hid write'
command has been added as a single-command combination of encode and clone.

To support easier addition of new formats, a library for handling card
fields has been added. This will allow direct access to the card bits,
to linear fields, and to non-linear (jumping) fields in a single line
of code without having to resort to managing bit positions or masks
on the underlying data. A number of new formats have been added as working
examples of the new support functions.
2018-08-27 14:03:46 -04:00

32 lines
1.2 KiB
C

//-----------------------------------------------------------------------------
// Copyright (C) 2018 grauerfuchs
//
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
// at your option, any later version. See the LICENSE.txt file for the text of
// the license.
//-----------------------------------------------------------------------------
// HID card format packing/unpacking routines
//-----------------------------------------------------------------------------
#ifndef HIDCARDFORMATS_H__
#define HIDCARDFORMATS_H__
#include <stdint.h>
#include <stdbool.h>
#include "hidcardformatutils.h"
// Structure for defined HID card formats available for packing/unpacking
typedef struct hidcardformat_s{
const char* Name;
bool (*Pack)(/*in*/hidproxcard_t* card, /*out*/hidproxmessage_t* packed);
bool (*Unpack)(/*in*/hidproxmessage_t* packed, /*out*/hidproxcard_t* card);
const char* Descrp;
} hidcardformat_t;
void HIDListFormats();
int HIDFindCardFormat(const char *format);
hidcardformat_t HIDGetCardFormat(int idx);
bool HIDPack(/* in */int FormatIndex, /* in */hidproxcard_t* card, /* out */hidproxmessage_t* packed);
bool HIDTryUnpack(/* in */hidproxmessage_t* packed);
#endif