taitools/iccard/nesica.c

45 lines
1.0 KiB
C
Raw Permalink Normal View History

2024-02-06 08:24:58 +00:00
#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include "iccard/nesica.h"
#include "iccard/mifare.h"
#include "util/dprintf.h"
HRESULT aime_card_populate(
struct mifare *mifare,
const uint8_t *card_sn,
size_t nbytes)
{
uint8_t b;
size_t i;
assert(mifare != NULL);
assert(card_sn != NULL);
memset(mifare, 0, sizeof(*mifare));
if (nbytes != 16) {
dprintf("Nesica IC: Card Serial must be 16 characters\n");
return E_INVALIDARG;
}
for (int i = 0; i < 16; i++) {
mifare->sectors[0].blocks[0].bytes[i] = i;
}
memset(mifare->sectors[0].blocks[2].bytes, 0xff, 16);
memset(mifare->sectors[0].blocks[3].bytes, 0xff, 16);
mifare->sectors[0].blocks[0].bytes[14] = 'T';
mifare->sectors[0].blocks[0].bytes[15] = 'U';
2024-02-11 04:38:24 +00:00
memcpy_s(mifare->sectors[0].blocks[1].bytes, 4, (uint8_t *)"T053", 4);
memcpy_s(mifare->sectors[0].blocks[1].bytes + 4, 12, card_sn, 12);
memcpy_s(mifare->sectors[0].blocks[2].bytes, 16, card_sn + 12, 4);
2024-02-06 08:24:58 +00:00
return S_OK;
}