mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-09-20 15:26:13 +08:00
cipurse info sketch
This commit is contained in:
parent
a30d926dab
commit
f267df2fb7
|
@ -242,6 +242,7 @@ set (TARGET_SOURCES
|
||||||
${PM3_ROOT}/client/src/cmdhfepa.c
|
${PM3_ROOT}/client/src/cmdhfepa.c
|
||||||
${PM3_ROOT}/client/src/cmdhffelica.c
|
${PM3_ROOT}/client/src/cmdhffelica.c
|
||||||
${PM3_ROOT}/client/src/cmdhffido.c
|
${PM3_ROOT}/client/src/cmdhffido.c
|
||||||
|
${PM3_ROOT}/client/src/cmdhfcipurse.c
|
||||||
${PM3_ROOT}/client/src/cmdhficlass.c
|
${PM3_ROOT}/client/src/cmdhficlass.c
|
||||||
${PM3_ROOT}/client/src/cmdhfjooki.c
|
${PM3_ROOT}/client/src/cmdhfjooki.c
|
||||||
${PM3_ROOT}/client/src/cmdhflegic.c
|
${PM3_ROOT}/client/src/cmdhflegic.c
|
||||||
|
|
|
@ -473,6 +473,7 @@ SRCS = aiddesfire.c \
|
||||||
cmdhfemrtd.c \
|
cmdhfemrtd.c \
|
||||||
cmdhffelica.c \
|
cmdhffelica.c \
|
||||||
cmdhffido.c \
|
cmdhffido.c \
|
||||||
|
cmdhfcipurse.c \
|
||||||
cmdhficlass.c \
|
cmdhficlass.c \
|
||||||
cmdhflegic.c \
|
cmdhflegic.c \
|
||||||
cmdhfjooki.c \
|
cmdhfjooki.c \
|
||||||
|
@ -556,6 +557,7 @@ SRCS = aiddesfire.c \
|
||||||
fido/cose.c \
|
fido/cose.c \
|
||||||
fido/cbortools.c \
|
fido/cbortools.c \
|
||||||
fido/fidocore.c \
|
fido/fidocore.c \
|
||||||
|
cipurse/cipursecore.c \
|
||||||
fileutils.c \
|
fileutils.c \
|
||||||
flash.c \
|
flash.c \
|
||||||
generator.c \
|
generator.c \
|
||||||
|
|
25
client/src/cipurse/cipursecore.c
Normal file
25
client/src/cipurse/cipursecore.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2021 Merlok
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// CIPURSE transport cards data and commands
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "cipursecore.h"
|
||||||
|
|
||||||
|
#include "commonutil.h" // ARRAYLEN
|
||||||
|
|
||||||
|
#include "emv/emvcore.h"
|
||||||
|
#include "emv/emvjson.h"
|
||||||
|
#include "ui.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
int CIPURSESelect(bool ActivateField, bool LeaveFieldON, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||||
|
uint8_t data[] = {0x41, 0x44, 0x20, 0x46, 0x31};
|
||||||
|
|
||||||
|
return EMVSelect(ECC_CONTACTLESS, ActivateField, LeaveFieldON, data, sizeof(data), Result, MaxResultLen, ResultLen, sw, NULL);
|
||||||
|
}
|
||||||
|
|
21
client/src/cipurse/cipursecore.h
Normal file
21
client/src/cipurse/cipursecore.h
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2021 Merlok
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// CIPURSE transport cards data and commands
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef __CIPURSECORE_H__
|
||||||
|
#define __CIPURSECORE_H__
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <jansson.h>
|
||||||
|
#include "emv/apduinfo.h" // sAPDU
|
||||||
|
|
||||||
|
int CIPURSESelect(bool ActivateField, bool LeaveFieldON, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw);
|
||||||
|
|
||||||
|
#endif /* __CIPURSECORE_H__ */
|
|
@ -33,6 +33,7 @@
|
||||||
#include "cmdhftopaz.h" // TOPAZ
|
#include "cmdhftopaz.h" // TOPAZ
|
||||||
#include "cmdhffelica.h" // ISO18092 / FeliCa
|
#include "cmdhffelica.h" // ISO18092 / FeliCa
|
||||||
#include "cmdhffido.h" // FIDO authenticators
|
#include "cmdhffido.h" // FIDO authenticators
|
||||||
|
#include "cmdhfcipurse.h" // CIPURSE transport cards
|
||||||
#include "cmdhfthinfilm.h" // Thinfilm
|
#include "cmdhfthinfilm.h" // Thinfilm
|
||||||
#include "cmdhflto.h" // LTO-CM
|
#include "cmdhflto.h" // LTO-CM
|
||||||
#include "cmdhfcryptorf.h" // CryptoRF
|
#include "cmdhfcryptorf.h" // CryptoRF
|
||||||
|
@ -399,6 +400,7 @@ static command_t CommandTable[] = {
|
||||||
{"14b", CmdHF14B, AlwaysAvailable, "{ ISO14443B RFIDs... }"},
|
{"14b", CmdHF14B, AlwaysAvailable, "{ ISO14443B RFIDs... }"},
|
||||||
{"15", CmdHF15, AlwaysAvailable, "{ ISO15693 RFIDs... }"},
|
{"15", CmdHF15, AlwaysAvailable, "{ ISO15693 RFIDs... }"},
|
||||||
// {"cryptorf", CmdHFCryptoRF, AlwaysAvailable, "{ CryptoRF RFIDs... }"},
|
// {"cryptorf", CmdHFCryptoRF, AlwaysAvailable, "{ CryptoRF RFIDs... }"},
|
||||||
|
{"cipurse", CmdHFCipurse, AlwaysAvailable, "{ Cipurse transport Cards... }"},
|
||||||
{"epa", CmdHFEPA, AlwaysAvailable, "{ German Identification Card... }"},
|
{"epa", CmdHFEPA, AlwaysAvailable, "{ German Identification Card... }"},
|
||||||
{"emrtd", CmdHFeMRTD, AlwaysAvailable, "{ Machine Readable Travel Document... }"},
|
{"emrtd", CmdHFeMRTD, AlwaysAvailable, "{ Machine Readable Travel Document... }"},
|
||||||
{"felica", CmdHFFelica, AlwaysAvailable, "{ ISO18092 / FeliCa RFIDs... }"},
|
{"felica", CmdHFFelica, AlwaysAvailable, "{ ISO18092 / FeliCa RFIDs... }"},
|
||||||
|
|
102
client/src/cmdhfcipurse.c
Normal file
102
client/src/cmdhfcipurse.c
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2021 Merlok
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// High frequency FIDO U2F and FIDO2 contactless authenticators
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// JAVA implementation here:
|
||||||
|
//
|
||||||
|
// https://github.com/duychuongvn/cipurse-card-core
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "cmdhffido.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "cmdparser.h" // command_t
|
||||||
|
#include "commonutil.h"
|
||||||
|
#include "comms.h"
|
||||||
|
#include "proxmark3.h"
|
||||||
|
#include "emv/emvcore.h"
|
||||||
|
#include "emv/emvjson.h"
|
||||||
|
#include "cliparser.h"
|
||||||
|
#include "cmdhfcipurse.h"
|
||||||
|
#include "cipurse/cipursecore.h"
|
||||||
|
#include "ui.h"
|
||||||
|
#include "cmdhf14a.h"
|
||||||
|
#include "cmdtrace.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "fileutils.h" // laodFileJSONroot
|
||||||
|
|
||||||
|
static int CmdHelp(const char *Cmd);
|
||||||
|
|
||||||
|
static int CmdHFCipurseInfo(const char *Cmd) {
|
||||||
|
CLIParserContext *ctx;
|
||||||
|
CLIParserInit(&ctx, "hf cipurse info",
|
||||||
|
"Get info from cipurse tags",
|
||||||
|
"hf cipurse info");
|
||||||
|
|
||||||
|
void *argtable[] = {
|
||||||
|
arg_param_begin,
|
||||||
|
arg_param_end
|
||||||
|
};
|
||||||
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
|
// info about 14a part
|
||||||
|
infoHF14A(false, false, false);
|
||||||
|
|
||||||
|
// CIPURSE info
|
||||||
|
PrintAndLogEx(INFO, "-----------" _CYAN_("CIPURSE Info") "---------------------------------");
|
||||||
|
SetAPDULogging(false);
|
||||||
|
|
||||||
|
uint8_t buf[APDU_RES_LEN] = {0};
|
||||||
|
size_t len = 0;
|
||||||
|
uint16_t sw = 0;
|
||||||
|
int res = CIPURSESelect(true, true, buf, sizeof(buf), &len, &sw);
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
DropField();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sw != 0x9000) {
|
||||||
|
if (sw)
|
||||||
|
PrintAndLogEx(INFO, "Not a CIPURSE card! APDU response: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff));
|
||||||
|
else
|
||||||
|
PrintAndLogEx(ERR, "APDU exchange error. Card returns 0x0000.");
|
||||||
|
|
||||||
|
DropField();
|
||||||
|
return PM3_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintAndLogEx(INFO, "Cipurse card: " _GREEN_("OK"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DropField();
|
||||||
|
return PM3_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static command_t CommandTable[] = {
|
||||||
|
{"help", CmdHelp, AlwaysAvailable, "This help."},
|
||||||
|
{"info", CmdHFCipurseInfo, IfPm3Iso14443a, "Info about Cipurse tag."},
|
||||||
|
{NULL, NULL, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
int CmdHFCipurse(const char *Cmd) {
|
||||||
|
clearCommandBuffer();
|
||||||
|
return CmdsParse(CommandTable, Cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CmdHelp(const char *Cmd) {
|
||||||
|
(void)Cmd; // Cmd is not used so far
|
||||||
|
CmdsHelp(CommandTable);
|
||||||
|
return PM3_SUCCESS;
|
||||||
|
}
|
23
client/src/cmdhfcipurse.h
Normal file
23
client/src/cmdhfcipurse.h
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2021 Merlok
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// High frequency FIDO U2F and FIDO2 contactless authenticators
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// JAVA implementation here:
|
||||||
|
//
|
||||||
|
// https://github.com/duychuongvn/cipurse-card-core
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef CMDHFCIPURSE_H__
|
||||||
|
#define CMDHFCIPURSE_H__
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
int CmdHFCipurse(const char *Cmd);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue