mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 10:37:23 -07:00
style
This commit is contained in:
parent
eed0ca4796
commit
e2ca0a4abd
15 changed files with 193 additions and 172 deletions
|
@ -1573,7 +1573,7 @@ static void PacketReceived(PacketCommandNG *packet) {
|
|||
uint8_t blockno;
|
||||
} PACKED;
|
||||
struct p *payload = (struct p *) packet->data.asBytes;
|
||||
MifareG3ReadBlk(payload->blockno);
|
||||
MifareG3ReadBlk(payload->blockno);
|
||||
break;
|
||||
}
|
||||
case CMD_HF_MIFARE_PERSONALIZE_UID: {
|
||||
|
|
|
@ -1304,7 +1304,7 @@ void SniffHitag2(void) {
|
|||
LEDsoff();
|
||||
AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKDIS;
|
||||
AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;
|
||||
|
||||
|
||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||
set_tracing(false);
|
||||
|
||||
|
|
|
@ -152,8 +152,8 @@ bool IsBlock0PCF7931(uint8_t *block) {
|
|||
// assuming all RFU bits are set to 0
|
||||
// if PAC is enabled password is set to 0
|
||||
if (block[7] == 0x01) {
|
||||
if (!memcmp(block, "\x00\x00\x00\x00\x00\x00\x00", 7) &&
|
||||
!memcmp(block + 9, "\x00\x00\x00\x00\x00\x00\x00", 7)) {
|
||||
if (!memcmp(block, "\x00\x00\x00\x00\x00\x00\x00", 7) &&
|
||||
!memcmp(block + 9, "\x00\x00\x00\x00\x00\x00\x00", 7)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -173,14 +173,14 @@ bool IsBlock1PCF7931(uint8_t *block) {
|
|||
uint8_t rlb = block[15];
|
||||
|
||||
if (block[10] == 0
|
||||
&& block[11] == 0
|
||||
&& block[12] == 0
|
||||
&& block[13] == 0) {
|
||||
&& block[11] == 0
|
||||
&& block[12] == 0
|
||||
&& block[13] == 0) {
|
||||
// block 1 is sent only if (RLB >= 1 && RFB <= 1) or RB1 enabled
|
||||
if (rfb <= rlb
|
||||
&& rfb <= 9
|
||||
&& rlb <= 9
|
||||
&& ((rfb <= 1 && rlb >= 1) || rb1)) {
|
||||
&& rfb <= 9
|
||||
&& rlb <= 9
|
||||
&& ((rfb <= 1 && rlb >= 1) || rb1)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,25 +16,25 @@ version = 'v1.1.4'
|
|||
desc = 'This script enables easy programming of a MAGIC NTAG 21* card'
|
||||
example = [[
|
||||
-- read magic tag configuration
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -c ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -c ]]..ansicolors.reset..[[
|
||||
|
||||
-- set uid
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -u 04112233445566 ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -u 04112233445566 ]]..ansicolors.reset..[[
|
||||
|
||||
-- set pwd / pack
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -p 11223344 -a 8080 ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -p 11223344 -a 8080 ]]..ansicolors.reset..[[
|
||||
|
||||
-- set version to NTAG213
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -v 0004040201000f03 ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -v 0004040201000f03 ]]..ansicolors.reset..[[
|
||||
|
||||
-- set signature
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -s 1122334455667788990011223344556677889900112233445566778899001122 ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -s 1122334455667788990011223344556677889900112233445566778899001122 ]]..ansicolors.reset..[[
|
||||
|
||||
-- wipe tag
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -w ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -w ]]..ansicolors.reset..[[
|
||||
|
||||
-- wipe a locked down tag by giving the password
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -k ffffffff -w ]]..ansicolors.reset..[[
|
||||
]]..ansicolors.yellow..[[script run hf_mfu_magicwrite -k ffffffff -w ]]..ansicolors.reset..[[
|
||||
|
||||
]]
|
||||
usage = [[
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
#include <unistd.h>
|
||||
#include <string.h> // memcpy memset
|
||||
#include "fileutils.h"
|
||||
#include "fileutils.h"
|
||||
|
||||
#include "cipurse/cipursecrypto.h"
|
||||
#include "cipurse/cipursecore.h"
|
||||
|
@ -30,7 +30,7 @@ static bool TestKVV(void) {
|
|||
CipurseCGetKVV(Key, kvv);
|
||||
|
||||
bool res = memcmp(KeyKvv, kvv, CIPURSE_KVV_LENGTH) == 0;
|
||||
|
||||
|
||||
if (res)
|
||||
PrintAndLogEx(INFO, "kvv.............. " _GREEN_("passed"));
|
||||
else
|
||||
|
@ -41,14 +41,14 @@ static bool TestKVV(void) {
|
|||
|
||||
static bool TestISO9797M2(void) {
|
||||
uint8_t data[32] = {0};
|
||||
|
||||
|
||||
size_t ddatalen = 0;
|
||||
AddISO9797M2Padding(data, &ddatalen, TestData, 4, 16);
|
||||
bool res = (ddatalen == 16);
|
||||
res = res && (memcmp(data, TestDataPadded, ddatalen) == 0);
|
||||
|
||||
res = res && (FindISO9797M2PaddingDataLen(data, ddatalen) == 4);
|
||||
|
||||
|
||||
if (res)
|
||||
PrintAndLogEx(INFO, "ISO9797M2........ " _GREEN_("passed"));
|
||||
else
|
||||
|
@ -60,9 +60,9 @@ static bool TestISO9797M2(void) {
|
|||
static bool TestSMI(void) {
|
||||
CipurseContext ctx = {0};
|
||||
CipurseCClearContext(&ctx);
|
||||
|
||||
|
||||
bool res = (isCipurseCChannelSecuritySet(&ctx) == false);
|
||||
|
||||
|
||||
CipurseCChannelSetSecurityLevels(&ctx, CPSPlain, CPSPlain);
|
||||
res = res && (CipurseCGetSMI(&ctx, false) == 0x00);
|
||||
res = res && (CipurseCGetSMI(&ctx, true) == 0x01);
|
||||
|
@ -82,7 +82,7 @@ static bool TestSMI(void) {
|
|||
CipurseCChannelSetSecurityLevels(&ctx, CPSEncrypted, CPSEncrypted);
|
||||
res = res && (CipurseCGetSMI(&ctx, false) == 0x88);
|
||||
res = res && (CipurseCGetSMI(&ctx, true) == 0x89);
|
||||
|
||||
|
||||
if (res)
|
||||
PrintAndLogEx(INFO, "SMI.............. " _GREEN_("passed"));
|
||||
else
|
||||
|
@ -105,7 +105,7 @@ static bool TestMIC(void) {
|
|||
res = res && (memcmp(mic, valid_mic6, 4) == 0);
|
||||
|
||||
res = res && (CipurseCCheckMIC(TestData, 6, mic));
|
||||
|
||||
|
||||
if (res)
|
||||
PrintAndLogEx(INFO, "MIC.............. " _GREEN_("passed"));
|
||||
else
|
||||
|
@ -118,34 +118,35 @@ static bool TestMIC(void) {
|
|||
static bool TestAuth(void) {
|
||||
CipurseContext ctx = {0};
|
||||
CipurseCClearContext(&ctx);
|
||||
|
||||
|
||||
bool res = (isCipurseCChannelSecuritySet(&ctx) == false);
|
||||
|
||||
|
||||
CipurseCSetKey(&ctx, 1, Key);
|
||||
res = res && (memcmp(ctx.key, Key, 16) == 0);
|
||||
res = res && (ctx.keyId == 1);
|
||||
|
||||
|
||||
CipurseCSetRandomFromPICC(&ctx, TestRandom);
|
||||
res = res && (memcmp(ctx.RP, TestRandom, 16) == 0);
|
||||
res = res && (memcmp(ctx.rP, &TestRandom[16], 6) == 0);
|
||||
|
||||
|
||||
uint8_t hrandom[] = {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
|
||||
CipurseCSetRandomHost(&ctx);
|
||||
res = res && (memcmp(ctx.RT, hrandom, 16) == 0);
|
||||
res = res && (memcmp(ctx.rT, &hrandom[16], 6) == 0);
|
||||
|
||||
|
||||
uint8_t authparams[16 + 16 + 6] = {0};
|
||||
CipurseCAuthenticateHost(&ctx, authparams);
|
||||
uint8_t aparamstest[] = {0x12, 0xAA, 0x79, 0xA9, 0x03, 0xC5, 0xB4, 0x6A, 0x27, 0x1B, 0x13, 0xAE, 0x02, 0x50, 0x1C, 0x99, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
|
||||
uint8_t aparamstest[] = {0x12, 0xAA, 0x79, 0xA9, 0x03, 0xC5, 0xB4, 0x6A, 0x27, 0x1B, 0x13, 0xAE, 0x02, 0x50, 0x1C, 0x99, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
|
||||
};
|
||||
res = res && (memcmp(authparams, aparamstest, sizeof(authparams)) == 0);
|
||||
|
||||
|
||||
uint8_t ct[] = {0xBE, 0x10, 0x6B, 0xB9, 0xAD, 0x84, 0xBC, 0xE1, 0x9F, 0xAE, 0x0C, 0x62, 0xCC, 0xC7, 0x0D, 0x41};
|
||||
res = res && CipurseCCheckCT(&ctx, ct);
|
||||
|
||||
|
||||
CipurseCChannelSetSecurityLevels(&ctx, CPSMACed, CPSMACed);
|
||||
res = res && (isCipurseCChannelSecuritySet(&ctx) == true);
|
||||
|
||||
|
||||
uint8_t framekey[] = {0xCF, 0x6F, 0x3A, 0x47, 0xFC, 0xAC, 0x8D, 0x38, 0x25, 0x75, 0x8B, 0xFC, 0x8B, 0x61, 0x68, 0xF3};
|
||||
res = res && (memcmp(ctx.frameKey, framekey, sizeof(framekey)) == 0);
|
||||
|
||||
|
@ -200,7 +201,7 @@ static bool TestMAC(void) {
|
|||
|
||||
uint8_t framekey4[] = {0xA0, 0x65, 0x1A, 0x62, 0x56, 0x5D, 0xD7, 0xC9, 0x32, 0xAE, 0x1D, 0xE0, 0xCF, 0x8D, 0xC1, 0xB9};
|
||||
res = res && (memcmp(ctx.frameKey, framekey4, sizeof(framekey4)) == 0);
|
||||
|
||||
|
||||
if (res)
|
||||
PrintAndLogEx(INFO, "channel MAC...... " _GREEN_("passed"));
|
||||
else
|
||||
|
@ -236,13 +237,15 @@ static bool TestEncDec(void) {
|
|||
res = res && (memcmp(dstdata, TestData, 16) == 0);
|
||||
|
||||
CipurseCChannelEncrypt(&ctx, TestData, 16, dstdata, &dstdatalen);
|
||||
uint8_t tested3[32] = {0x1E, 0x0C, 0xD1, 0xF5, 0x8E, 0x0B, 0xAE, 0xF0, 0x06, 0xC6, 0xED, 0x73, 0x3F, 0x8A, 0x87, 0xCF,
|
||||
0x36, 0xCC, 0xF2, 0xF4, 0x7D, 0x33, 0x50, 0xF1, 0x8E, 0xFF, 0xD1, 0x7D, 0x42, 0x88, 0xD5, 0xEE};
|
||||
uint8_t tested3[32] = {0x1E, 0x0C, 0xD1, 0xF5, 0x8E, 0x0B, 0xAE, 0xF0, 0x06, 0xC6, 0xED, 0x73, 0x3F, 0x8A, 0x87, 0xCF,
|
||||
0x36, 0xCC, 0xF2, 0xF4, 0x7D, 0x33, 0x50, 0xF1, 0x8E, 0xFF, 0xD1, 0x7D, 0x42, 0x88, 0xD5, 0xEE
|
||||
};
|
||||
res = res && (dstdatalen == 32);
|
||||
res = res && (memcmp(dstdata, tested3, 32) == 0);
|
||||
|
||||
uint8_t tested4[32] = {0xC0, 0x42, 0xDB, 0xD9, 0x53, 0xFF, 0x01, 0xE5, 0xCC, 0x49, 0x8C, 0x9C, 0xDA, 0x60, 0x73, 0xA7,
|
||||
0xE1, 0xEB, 0x14, 0x69, 0xF6, 0x39, 0xF3, 0xE1, 0x07, 0x03, 0x32, 0xF4, 0x27, 0xF9, 0x48, 0x3D};
|
||||
uint8_t tested4[32] = {0xC0, 0x42, 0xDB, 0xD9, 0x53, 0xFF, 0x01, 0xE5, 0xCC, 0x49, 0x8C, 0x9C, 0xDA, 0x60, 0x73, 0xA7,
|
||||
0xE1, 0xEB, 0x14, 0x69, 0xF6, 0x39, 0xF3, 0xE1, 0x07, 0x03, 0x32, 0xF4, 0x27, 0xF9, 0x48, 0x3D
|
||||
};
|
||||
CipurseCChannelDecrypt(&ctx, tested4, 32, dstdata, &dstdatalen);
|
||||
res = res && (dstdatalen == 16);
|
||||
res = res && (memcmp(dstdata, TestData, 16) == 0);
|
||||
|
@ -276,7 +279,7 @@ static bool TestAPDU(void) {
|
|||
sAPDU dstAPDU = {0};
|
||||
uint8_t dstdata[256] = {0};
|
||||
size_t dstdatalen = 0;
|
||||
|
||||
|
||||
// MACED APDU
|
||||
srcAPDU.CLA = 0x00;
|
||||
srcAPDU.INS = 0x55;
|
||||
|
@ -293,14 +296,14 @@ static bool TestAPDU(void) {
|
|||
res = res && (srcAPDU.P2 == dstAPDU.P2);
|
||||
res = res && (dstAPDU.Lc == sizeof(test1));
|
||||
res = res && (memcmp(dstdata, test1, sizeof(test1)) == 0);
|
||||
|
||||
|
||||
uint16_t sw = 0;
|
||||
uint8_t test2[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x9D, 0x80, 0xE7, 0xE3, 0x34, 0xE9, 0x97, 0x82, 0xdd, 0xee};
|
||||
CipurseCAPDURespDecode(&ctx, test2, sizeof(test2), dstdata, &dstdatalen, &sw);
|
||||
res = res && (dstdatalen == 6);
|
||||
res = res && (memcmp(test2, dstdata, dstdatalen) == 0);
|
||||
res = res && (sw == 0xddee);
|
||||
|
||||
|
||||
// Plain APDU
|
||||
CipurseCChannelSetSecurityLevels(&ctx, CPSPlain, CPSPlain);
|
||||
CipurseCAPDUReqEncode(&ctx, &srcAPDU, &dstAPDU, dstdata, true, 0x55);
|
||||
|
@ -317,7 +320,7 @@ static bool TestAPDU(void) {
|
|||
res = res && (dstdatalen == 6);
|
||||
res = res && (memcmp(test4, dstdata, dstdatalen) == 0);
|
||||
res = res && (sw == 0xccdd);
|
||||
|
||||
|
||||
// Encrypted APDU
|
||||
CipurseCChannelSetSecurityLevels(&ctx, CPSEncrypted, CPSEncrypted);
|
||||
CipurseCAPDUReqEncode(&ctx, &srcAPDU, &dstAPDU, dstdata, true, 0x55);
|
||||
|
@ -328,17 +331,17 @@ static bool TestAPDU(void) {
|
|||
res = res && (srcAPDU.P2 == dstAPDU.P2);
|
||||
res = res && (dstAPDU.Lc == sizeof(test5));
|
||||
res = res && (memcmp(dstdata, test5, sizeof(test5)) == 0);
|
||||
|
||||
uint8_t test6[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x7E, 0x4B, 0xA0, 0xB7, 0xcc, 0xdd};
|
||||
|
||||
uint8_t test6[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x7E, 0x4B, 0xA0, 0xB7, 0xcc, 0xdd};
|
||||
//CipurseCChannelEncrypt(&ctx, test6, sizeof(test6), dstdata, &dstdatalen);
|
||||
//PrintAndLogEx(INFO, "dstdata[%d]: %s", dstdatalen, sprint_hex(dstdata, dstdatalen));
|
||||
|
||||
|
||||
uint8_t test7[] = {0x07, 0xEF, 0x16, 0x91, 0xE7, 0x0F, 0xB5, 0x10, 0x63, 0xCE, 0x66, 0xDB, 0x3B, 0xC6, 0xD4, 0xE0, 0x90, 0x00};
|
||||
CipurseCAPDURespDecode(&ctx, test7, sizeof(test7), dstdata, &dstdatalen, &sw);
|
||||
res = res && (dstdatalen == 8);
|
||||
res = res && (memcmp(test6, dstdata, dstdatalen) == 0);
|
||||
res = res && (sw == 0xccdd);
|
||||
|
||||
|
||||
if (res)
|
||||
PrintAndLogEx(INFO, "apdu............. " _GREEN_("passed"));
|
||||
else
|
||||
|
@ -351,7 +354,7 @@ bool CIPURSETest(bool verbose) {
|
|||
bool res = true;
|
||||
|
||||
PrintAndLogEx(INFO, "------ " _CYAN_("CIPURSE Tests") " ------");
|
||||
|
||||
|
||||
res = res && TestKVV();
|
||||
res = res && TestISO9797M2();
|
||||
res = res && TestSMI();
|
||||
|
@ -366,7 +369,7 @@ bool CIPURSETest(bool verbose) {
|
|||
PrintAndLogEx(SUCCESS, " Tests [ %s ]", _GREEN_("ok"));
|
||||
else
|
||||
PrintAndLogEx(FAILED, " Tests [ %s ]", _RED_("fail"));
|
||||
|
||||
|
||||
PrintAndLogEx(NORMAL, "");
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -17,4 +17,4 @@
|
|||
|
||||
bool CIPURSETest(bool verbose);
|
||||
|
||||
#endif /* __CIPURSETEST_H__ */
|
||||
#endif /* __CIPURSETEST_H__ */
|
||||
|
|
|
@ -700,7 +700,6 @@ bool CheckCardCipurse(void) {
|
|||
|
||||
static int CmdHFCipurseTest(const char *Cmd) {
|
||||
CIPURSETest(true);
|
||||
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -247,7 +247,7 @@ static void print_config_cards(void) {
|
|||
|
||||
static void print_config_card(const iclass_config_card_item_t *o) {
|
||||
if (check_config_card(o)) {
|
||||
PrintAndLogEx(INFO, "description... " _YELLOW_("%s") , o->desc);
|
||||
PrintAndLogEx(INFO, "description... " _YELLOW_("%s"), o->desc);
|
||||
PrintAndLogEx(INFO, "data.......... " _YELLOW_("%s"), sprint_hex_inrow(o->data, sizeof(o->data)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -984,7 +984,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp
|
|||
|
||||
// Part 4
|
||||
// tag->session_key = &default_key;
|
||||
struct desfire_key *p = realloc (tag->session_key,sizeof(struct desfire_key));
|
||||
struct desfire_key *p = realloc(tag->session_key, sizeof(struct desfire_key));
|
||||
if (!p) {
|
||||
PrintAndLogEx(FAILED, "Cannot allocate memory for session keys");
|
||||
free(tag->session_key);
|
||||
|
@ -992,7 +992,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp
|
|||
}
|
||||
tag->session_key = p;
|
||||
|
||||
memset (tag->session_key, 0x00, sizeof(struct desfire_key));
|
||||
memset(tag->session_key, 0x00, sizeof(struct desfire_key));
|
||||
|
||||
Desfire_session_key_new(RndA, RndB, key, tag->session_key);
|
||||
|
||||
|
@ -1030,7 +1030,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp
|
|||
// If the 3Des key first 8 bytes = 2nd 8 Bytes then we are really using Singe Des
|
||||
// As such we need to set the session key such that the 2nd 8 bytes = 1st 8 Bytes
|
||||
if (payload->algo == MFDES_ALGO_3DES) {
|
||||
if (memcmp(key->data,&key->data[8],8) == 0)
|
||||
if (memcmp(key->data, &key->data[8], 8) == 0)
|
||||
memcpy(&tag->session_key->data[8], tag->session_key->data, 8);
|
||||
}
|
||||
|
||||
|
@ -1285,7 +1285,7 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, uint8_t n
|
|||
} else if (new_algo == MFDES_ALGO_3K3DES) {
|
||||
// 3K3Des checksum must cover : C4 <KeyNo> <PrevKey XOR NewKey>
|
||||
csPkt[0] = MFDES_CHANGE_KEY;
|
||||
memcpy (&csPkt[1], data, 25);
|
||||
memcpy(&csPkt[1], data, 25);
|
||||
desfire_crc32(csPkt, 26, data + 1 + cmdcnt);
|
||||
} else {
|
||||
desfire_crc32_append(data + 1, cmdcnt);
|
||||
|
@ -1309,10 +1309,10 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, uint8_t n
|
|||
csPkt[0] = MFDES_CHANGE_KEY;
|
||||
memcpy(&csPkt[1], data, 18);
|
||||
desfire_crc32(csPkt, 19, data + 1 + cmdcnt);
|
||||
} else if (new_algo == MFDES_ALGO_3K3DES) {
|
||||
} else if (new_algo == MFDES_ALGO_3K3DES) {
|
||||
// 3K3Des checksum must cover : C4 <KeyNo> <Newkey Data>
|
||||
csPkt[0] = MFDES_CHANGE_KEY;
|
||||
memcpy (&csPkt[1], data, 25);
|
||||
memcpy(&csPkt[1], data, 25);
|
||||
desfire_crc32(csPkt, 26, data + 1 + cmdcnt);
|
||||
} else {
|
||||
desfire_crc32_append(data + 1, cmdcnt);
|
||||
|
@ -1348,13 +1348,12 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, uint8_t n
|
|||
size_t sn = recv_len;
|
||||
|
||||
|
||||
if ((new_algo == MFDES_ALGO_AES) || (new_algo == MFDES_ALGO_3K3DES))
|
||||
{
|
||||
if ((new_algo == MFDES_ALGO_AES) || (new_algo == MFDES_ALGO_3K3DES)) {
|
||||
// AES expects us to Calculate CMAC for status byte : OK 0x00 (0x91 00)
|
||||
// As such if we get this far without an error, we should be good
|
||||
// Since we are dropping the field, we dont need to maintain the CMAC etc.
|
||||
// Setting sn = 1 will allow the post process to just exit (as status only)
|
||||
|
||||
|
||||
// Simular 3K3Des has some work to validate, but as long as the reply code was 00
|
||||
// e.g. 02 fe ec 77 ca 13 e0 c2 06 [91 00 (OK)] 69 67
|
||||
|
||||
|
|
|
@ -278,7 +278,7 @@ static int CmdLFHitagEload(const char *Cmd) {
|
|||
if (dumplen == 48 || dumplen == 4 * 64) {
|
||||
|
||||
lf_hitag_t *payload = calloc(1, sizeof(lf_hitag_t) + dumplen);
|
||||
|
||||
|
||||
if (use_ht1)
|
||||
payload->type = 1;
|
||||
if (use_ht2)
|
||||
|
|
|
@ -68,7 +68,7 @@ void des_decrypt(void *out, const void *in, const void *key) {
|
|||
void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) {
|
||||
if (length % 8)
|
||||
return;
|
||||
|
||||
|
||||
mbedtls_des3_context ctx3;
|
||||
if (keymode == 2)
|
||||
mbedtls_des3_set2key_dec(&ctx3, key);
|
||||
|
@ -98,7 +98,7 @@ void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key,
|
|||
}
|
||||
|
||||
void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) {
|
||||
if (length % 8)
|
||||
if (length % 8)
|
||||
return;
|
||||
|
||||
mbedtls_des3_context ctx3;
|
||||
|
|
|
@ -1059,7 +1059,7 @@ int mfG3GetBlock(uint8_t blockno, uint8_t *data) {
|
|||
payload.blockno = blockno;
|
||||
|
||||
clearCommandBuffer();
|
||||
SendCommandNG(CMD_HF_MIFARE_G3_RDBL, (uint8_t*)&payload, sizeof(payload));
|
||||
SendCommandNG(CMD_HF_MIFARE_G3_RDBL, (uint8_t *)&payload, sizeof(payload));
|
||||
PacketResponseNG resp;
|
||||
if (WaitForResponseTimeout(CMD_HF_MIFARE_G3_RDBL, &resp, 1500)) {
|
||||
if (resp.status != PM3_SUCCESS)
|
||||
|
|
|
@ -437,7 +437,7 @@ static int ndefDecodePayloadDeviceInfo(uint8_t *payload, size_t len) {
|
|||
n = *(p++);
|
||||
//uuid string
|
||||
// record.uuid_string = '123e4567-e89b-12d3-a456-426655440000'
|
||||
// 8-4-4-4-12
|
||||
// 8-4-4-4-12
|
||||
char uuid[37] = {0};
|
||||
sprintf(uuid, "%s-", sprint_hex_inrow(p, 4));
|
||||
p += 4;
|
||||
|
@ -451,7 +451,7 @@ static int ndefDecodePayloadDeviceInfo(uint8_t *payload, size_t len) {
|
|||
p += 6;
|
||||
PrintAndLogEx(INFO, "UUID.......... " _YELLOW_("%s"), uuid);
|
||||
p++;
|
||||
n = *(p++);
|
||||
n = *(p++);
|
||||
PrintAndLogEx(INFO, "Version....... " _YELLOW_("%.*s"), n, p);
|
||||
PrintAndLogEx(NORMAL, "");
|
||||
return PM3_SUCCESS;
|
||||
|
@ -491,7 +491,7 @@ static int ndefDecodePayloadSmartPoster(uint8_t *ndef, size_t ndeflen, bool prin
|
|||
}
|
||||
// recursive
|
||||
if (NDEFHeader.MessageEnd == false) {
|
||||
ndefDecodePayloadSmartPoster(ndef + NDEFHeader.RecLen, ndeflen - NDEFHeader.RecLen, false, false);
|
||||
ndefDecodePayloadSmartPoster(ndef + NDEFHeader.RecLen, ndeflen - NDEFHeader.RecLen, false, false);
|
||||
}
|
||||
|
||||
if (print) {
|
||||
|
@ -518,41 +518,41 @@ static int ndefDecodeMime_vcard(NDEFHeader_t *ndef) {
|
|||
}
|
||||
|
||||
static int ndefDecodeMime_bt(NDEFHeader_t *ndef) {
|
||||
PrintAndLogEx(INFO, "Type............ " _YELLOW_("%.*s"), (int)ndef->TypeLen, ndef->Type );
|
||||
PrintAndLogEx(INFO, "Type............ " _YELLOW_("%.*s"), (int)ndef->TypeLen, ndef->Type);
|
||||
if (ndef->PayloadLen > 1) {
|
||||
uint16_t ooblen = (ndef->Payload[1] << 8 | ndef->Payload[0]);
|
||||
PrintAndLogEx(INFO, "OOB data len.... %u", ooblen);
|
||||
PrintAndLogEx(INFO, "BT MAC.......... " _YELLOW_("%s"), sprint_hex(ndef->Payload + 2, 6));
|
||||
// Let's check payload[8]. Tells us a bit about the UUID's. If 0x07 then it tells us a service UUID is 128bit
|
||||
switch (ndef->Payload[8]) {
|
||||
case 0x02:
|
||||
// Let's check payload[8]. Tells us a bit about the UUID's. If 0x07 then it tells us a service UUID is 128bit
|
||||
switch (ndef->Payload[8]) {
|
||||
case 0x02:
|
||||
PrintAndLogEx(INFO, "Optional Data... incomplete list 16-bit UUID's");
|
||||
break;
|
||||
case 0x03:
|
||||
break;
|
||||
case 0x03:
|
||||
PrintAndLogEx(INFO, "Optional Data... complete list 16-bit UUID's");
|
||||
break;
|
||||
case 0x04:
|
||||
break;
|
||||
case 0x04:
|
||||
PrintAndLogEx(INFO, "Optional Data... incomplete list 32-bit UUID's");
|
||||
break;
|
||||
case 0x05:
|
||||
break;
|
||||
case 0x05:
|
||||
PrintAndLogEx(INFO, "Optional Data... complete list 32-bit UUID's");
|
||||
break;
|
||||
case 0x06:
|
||||
break;
|
||||
case 0x06:
|
||||
PrintAndLogEx(INFO, "Optional Data... incomplete list 128-bit UUID's");
|
||||
break;
|
||||
case 0x07:
|
||||
break;
|
||||
case 0x07:
|
||||
PrintAndLogEx(INFO, "Optional Data... complete list 128-bit UUID's");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
PrintAndLogEx(INFO, "Optional Data... [ %02x ]", ndef->Payload[8]);
|
||||
break;
|
||||
}
|
||||
// Let's check payload[9]. If 0x08 then SHORT_NAME or if 0x09 then COMPLETE_NAME
|
||||
if (ndef->Payload[9] == 0x08 ) {
|
||||
}
|
||||
// Let's check payload[9]. If 0x08 then SHORT_NAME or if 0x09 then COMPLETE_NAME
|
||||
if (ndef->Payload[9] == 0x08) {
|
||||
PrintAndLogEx(INFO, "Short name...... " _YELLOW_("%.*s"), (int)(ndef->PayloadLen - 10), ndef->Payload + 10);
|
||||
} else if (ndef->Payload[9] == 0x09 ) {
|
||||
} else if (ndef->Payload[9] == 0x09) {
|
||||
PrintAndLogEx(INFO, "Complete name... " _YELLOW_("%.*s"), (int)(ndef->PayloadLen - 10), ndef->Payload + 10);
|
||||
} else {
|
||||
} else {
|
||||
PrintAndLogEx(INFO, "[ %02x ]", ndef->Payload[9]);
|
||||
}
|
||||
PrintAndLogEx(NORMAL, "");
|
||||
|
@ -696,7 +696,7 @@ static int ndefRecordDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) {
|
|||
print_buffer(NDEFHeader.Payload, NDEFHeader.PayloadLen, 1);
|
||||
}
|
||||
if (NDEFHeader.TypeLen && NDEFHeader.PayloadLen) {
|
||||
ndefDecodePayload(&NDEFHeader);
|
||||
ndefDecodePayload(&NDEFHeader);
|
||||
}
|
||||
|
||||
return PM3_SUCCESS;
|
||||
|
|
|
@ -973,7 +973,7 @@
|
|||
},
|
||||
"help": {
|
||||
"command": "help",
|
||||
"description": "help use `<command> help` for details of a command prefs { edit client/device preferences... } -------- ----------------------- technology ----------------------- analyse { analyse utils... } data { plot window / data buffer manipulation... } emv { emv iso-14443 / iso-7816... } hf { high frequency commands... } hw { hardware commands... } lf { low frequency commands... } nfc { nfc commands... } reveng { crc calculations from reveng software... } smart { smart card iso-7816 commands... } script { scripting commands... } trace { trace manipulation... } wiegand { wiegand format manipulation... } -------- ----------------------- general ----------------------- clear clear screen hints turn hints on / off msleep add a pause in milliseconds rem add a text line in log file quit exit exit program [=] session log e:\\proxspace\\pm3/.proxmark3/logs/log_20210618.txt --------------------------------------------------------------------------------------- auto available offline: no run lf search / hf search / data plot / data save",
|
||||
"description": "help use `<command> help` for details of a command prefs { edit client/device preferences... } -------- ----------------------- technology ----------------------- analyse { analyse utils... } data { plot window / data buffer manipulation... } emv { emv iso-14443 / iso-7816... } hf { high frequency commands... } hw { hardware commands... } lf { low frequency commands... } nfc { nfc commands... } reveng { crc calculations from reveng software... } smart { smart card iso-7816 commands... } script { scripting commands... } trace { trace manipulation... } wiegand { wiegand format manipulation... } -------- ----------------------- general ----------------------- clear clear screen hints turn hints on / off msleep add a pause in milliseconds rem add a text line in log file quit exit exit program [=] session log /home/osboxes/.proxmark3/logs/log_20210624.txt --------------------------------------------------------------------------------------- auto available offline: no run lf search / hf search / data plot / data save",
|
||||
"notes": [
|
||||
"auto"
|
||||
],
|
||||
|
@ -1684,67 +1684,67 @@
|
|||
},
|
||||
"hf cipurse aread": {
|
||||
"command": "hf cipurse aread",
|
||||
"description": "read file attributes by file id with key id and key",
|
||||
"description": "read file attributes by file id with key id and key. if no key is supplied, default key of 737373...7373 will be used",
|
||||
"notes": [
|
||||
"hf cipurse aread -f 2ff7 -> authenticate with keyid=1 and key = 7373...7373 and read file attributes with id 2ff7",
|
||||
"hf cipurse aread -n 2 -k 65656565656565656565656565656565 -f 2ff7 -> authenticate with specified key and read file attributes"
|
||||
"hf cipurse aread --fid 2ff7 -> authenticate with keyid 1, read file attributes with id 2ff7",
|
||||
"hf cipurse aread -n 2 -k 65656565656565656565656565656565 --fid 2ff7 -> authenticate keyid 2, read file attributes"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"-a, --apdu show apdu requests and responses",
|
||||
"-v, --verbose show technical data",
|
||||
"-n, --keyid <dec> key id",
|
||||
"-k, --key <hex> key for authenticate",
|
||||
"-f, --file <hex> file id",
|
||||
"-n <dec> key id",
|
||||
"-k, --key <hex> auth key",
|
||||
"--fid <hex> file id",
|
||||
"--noauth read file attributes without authentication",
|
||||
"--sreq <plain|mac(default)|encode> communication reader-picc security level",
|
||||
"--sresp <plain|mac(default)|encode> communication picc-reader security level",
|
||||
"--sel-adf show info about adf itself",
|
||||
"--sel-mf show info about master file"
|
||||
],
|
||||
"usage": "hf cipurse aread [-hav] [-n <dec>] [-k <hex>] [-f <hex>] [--noauth] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>] [--sel-adf] [--sel-mf]"
|
||||
"usage": "hf cipurse aread [-hav] [-n <dec>] [-k <hex>] [--fid <hex>] [--noauth] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>] [--sel-adf] [--sel-mf]"
|
||||
},
|
||||
"hf cipurse auth": {
|
||||
"command": "hf cipurse auth",
|
||||
"description": "authenticate with key id and key",
|
||||
"description": "authenticate with key id and key. if no key is supplied, default key of 737373...7373 will be used",
|
||||
"notes": [
|
||||
"hf cipurse auth -> authenticate with keyid=1 and key = 7373...7373",
|
||||
"hf cipurse auth -n 2 -k 65656565656565656565656565656565 -> authenticate with key"
|
||||
"hf cipurse auth -> authenticate with keyid 1, default key",
|
||||
"hf cipurse auth -n 2 -k 65656565656565656565656565656565 -> authenticate keyid 2 with key"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"-a, --apdu show apdu requests and responses",
|
||||
"-v, --verbose show technical data",
|
||||
"-n, --keyid <dec> key id",
|
||||
"-k, --key <hex> key for authenticate"
|
||||
"-n <dec> key id",
|
||||
"-k, --key <hex> auth key"
|
||||
],
|
||||
"usage": "hf cipurse auth [-hav] [-n <dec>] [-k <hex>]"
|
||||
},
|
||||
"hf cipurse delete": {
|
||||
"command": "hf cipurse delete",
|
||||
"description": "read file by file id with key id and key",
|
||||
"description": "read file by file id with key id and key. if no key is supplied, default key of 737373...7373 will be used",
|
||||
"notes": [
|
||||
"hf cipurse delete -f 2ff7 -> authenticate with keyid=1 and key = 7373...7373 and delete file with id 2ff7",
|
||||
"hf cipurse delete -n 2 -k 65656565656565656565656565656565 -f 2ff7 -> authenticate with specified key and delete file"
|
||||
"hf cipurse delete --fid 2ff7 -> authenticate with keyid 1, delete file with id 2ff7",
|
||||
"hf cipurse delete -n 2 -k 65656565656565656565656565656565 --fid 2ff7 -> authenticate keyid 2 and delete file"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"-a, --apdu show apdu requests and responses",
|
||||
"-v, --verbose show technical data",
|
||||
"-n, --keyid <dec> key id",
|
||||
"-k, --key <hex> key for authenticate",
|
||||
"-f, --file <hex> file id",
|
||||
"-n <dec> key id",
|
||||
"-k, --key <hex> auth key",
|
||||
"--fid <hex> file id",
|
||||
"--sreq <plain|mac(default)|encode> communication reader-picc security level",
|
||||
"--sresp <plain|mac(default)|encode> communication picc-reader security level"
|
||||
],
|
||||
"usage": "hf cipurse delete [-hav] [-n <dec>] [-k <hex>] [-f <hex>] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>]"
|
||||
"usage": "hf cipurse delete [-hav] [-n <dec>] [-k <hex>] [--fid <hex>] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>]"
|
||||
},
|
||||
"hf cipurse help": {
|
||||
"command": "hf cipurse help",
|
||||
"description": "help this help. --------------------------------------------------------------------------------------- hf cipurse info available offline: no get info from cipurse tags",
|
||||
"description": "help this help. test tests --------------------------------------------------------------------------------------- hf cipurse info available offline: no get info from cipurse tags",
|
||||
"notes": [
|
||||
"hf cipurse info"
|
||||
],
|
||||
|
@ -1756,48 +1756,63 @@
|
|||
},
|
||||
"hf cipurse read": {
|
||||
"command": "hf cipurse read",
|
||||
"description": "read file by file id with key id and key",
|
||||
"description": "read file by file id with key id and key. if no key is supplied, default key of 737373...7373 will be used",
|
||||
"notes": [
|
||||
"hf cipurse read -f 2ff7 -> authenticate with keyid=1 and key = 7373...7373 and read file with id 2ff7",
|
||||
"hf cipurse read -n 2 -k 65656565656565656565656565656565 -f 2ff7 -> authenticate with specified key and read file"
|
||||
"hf cipurse read --fid 2ff7 -> authenticate with keyid 1, read file with id 2ff7",
|
||||
"hf cipurse read -n 2 -k 65656565656565656565656565656565 --fid 2ff7 -> authenticate keyid 2 and read file"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"-a, --apdu show apdu requests and responses",
|
||||
"-v, --verbose show technical data",
|
||||
"-n, --keyid <dec> key id",
|
||||
"-k, --key <hex> key for authenticate",
|
||||
"-f, --file <hex> file id",
|
||||
"-n <dec> key id",
|
||||
"-k, --key <hex> auth key",
|
||||
"--fid <hex> file id",
|
||||
"-o, --offset <dec> offset for reading data from file",
|
||||
"--noauth read file without authentication",
|
||||
"--sreq <plain|mac(default)|encode> communication reader-picc security level",
|
||||
"--sresp <plain|mac(default)|encode> communication picc-reader security level"
|
||||
],
|
||||
"usage": "hf cipurse read [-hav] [-n <dec>] [-k <hex>] [-f <hex>] [-o <dec>] [--noauth] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>]"
|
||||
"usage": "hf cipurse read [-hav] [-n <dec>] [-k <hex>] [--fid <hex>] [-o <dec>] [--noauth] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>]"
|
||||
},
|
||||
"hf cipurse test": {
|
||||
"command": "hf cipurse test",
|
||||
"description": "[=] ------ cipurse tests ------ [=] kvv.............. passed [=] iso9797m2........ passed [=] smi.............. passed [=] mic.............. passed [=] auth............. passed [=] channel mac...... passed [=] channel encdec... passed [=] apdu............. passed [=] --------------------------- [+] tests [ ok ] ======================================================================================= hf epa { german identification card... } --------------------------------------------------------------------------------------- hf epa help available offline: yes help this help --------------------------------------------------------------------------------------- hf epa cnonces available offline: no tries to collect nonces when doing part of pace protocol.",
|
||||
"notes": [
|
||||
"hf epa cnonces --size 4 --num 4 --delay 1"
|
||||
],
|
||||
"offline": true,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"--size <dec> nonce size",
|
||||
"--num <dec> number of nonces to collect",
|
||||
"-d, --delay <dec> delay between attempts"
|
||||
],
|
||||
"usage": "hf epa cnonces [-h] --size <dec> --num <dec> -d <dec>"
|
||||
},
|
||||
"hf cipurse write": {
|
||||
"command": "hf cipurse write",
|
||||
"description": "write file by file id with key id and key",
|
||||
"description": "write file by file id with key id and key. if no key is supplied, default key of 737373...7373 will be used",
|
||||
"notes": [
|
||||
"hf cipurse write -f 2ff7 -> authenticate with keyid=1 and key = 7373...7373 and write file with id 2ff7",
|
||||
"hf cipurse write -n 2 -k 65656565656565656565656565656565 -f 2ff7 -> authenticate with specified key and write file"
|
||||
"hf cipurse write --fid 2ff7 -> authenticate with keyid 1, write file with id 2ff7",
|
||||
"hf cipurse write -n 2 -k 65656565656565656565656565656565 --fid 2ff7 -> authenticate keyid 2 and write file"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"-a, --apdu show apdu requests and responses",
|
||||
"-v, --verbose show technical data",
|
||||
"-n, --keyid <dec> key id",
|
||||
"-k, --key <hex> key for authenticate",
|
||||
"-f, --file <hex> file id",
|
||||
"-n <dec> key id",
|
||||
"-k, --key <hex> auth key",
|
||||
"--fid <hex> file id",
|
||||
"-o, --offset <dec> offset for reading data from file",
|
||||
"--noauth read file without authentication",
|
||||
"--sreq <plain|mac(default)|encode> communication reader-picc security level",
|
||||
"--sresp <plain|mac(default)|encode> communication picc-reader security level",
|
||||
"-c, --content <hex> new file content"
|
||||
"-d, --data <hex> hex data to write to new file"
|
||||
],
|
||||
"usage": "hf cipurse write [-hav] [-n <dec>] [-k <hex>] [-f <hex>] [-o <dec>] [--noauth] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>] [-c <hex>]"
|
||||
"usage": "hf cipurse write [-hav] [-n <dec>] [-k <hex>] [--fid <hex>] [-o <dec>] [--noauth] [--sreq <plain|mac(default)|encode>] [--sresp <plain|mac(default)|encode>] [-d <hex>]"
|
||||
},
|
||||
"hf emrtd help": {
|
||||
"command": "hf emrtd help",
|
||||
|
@ -1854,21 +1869,6 @@
|
|||
],
|
||||
"usage": "hf emrtd list [-h1fcrux] [--dict <file>]..."
|
||||
},
|
||||
"hf epa help": {
|
||||
"command": "hf epa help",
|
||||
"description": "help this help --------------------------------------------------------------------------------------- hf epa cnonces available offline: no tries to collect nonces when doing part of pace protocol.",
|
||||
"notes": [
|
||||
"hf epa cnonces --size 4 --num 4 --delay 1"
|
||||
],
|
||||
"offline": true,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"--size <dec> nonce size",
|
||||
"--num <dec> number of nonces to collect",
|
||||
"-d, --delay <dec> delay between attempts"
|
||||
],
|
||||
"usage": "hf epa cnonces [-h] --size <dec> --num <dec> -d <dec>"
|
||||
},
|
||||
"hf epa preplay": {
|
||||
"command": "hf epa preplay",
|
||||
"description": "perform pace protocol by replaying given apdus",
|
||||
|
@ -3491,9 +3491,9 @@
|
|||
"hf mf fchk --2k -k ffffffffffff -> key recovery against mifare 2k",
|
||||
"hf mf fchk --4k -k ffffffffffff -> key recovery against mifare 4k",
|
||||
"hf mf fchk --1k -f mfc_default_keys.dic -> target 1k using default dictionary file",
|
||||
"hf mf fchk --1k --emu -> target 1k, write to emulator memory",
|
||||
"hf mf fchk --1k --dump -> target 1k, write to file",
|
||||
"hf mf fchk --1k --mem -> target 1k, use dictionary from flashmemory"
|
||||
"hf mf fchk --1k --emu -> target 1k, write keys to emulator memory",
|
||||
"hf mf fchk --1k --dump -> target 1k, write keys to file",
|
||||
"hf mf fchk --1k --mem -> target 1k, use dictionary from flash memory"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
|
@ -3553,6 +3553,23 @@
|
|||
],
|
||||
"usage": "hf mf gen3uid [-h] [-u <hex>]"
|
||||
},
|
||||
"hf mf gview": {
|
||||
"command": "hf mf gview",
|
||||
"description": "view `magic gen3 gtu` card memory",
|
||||
"notes": [
|
||||
"hf mf gview",
|
||||
"hf mf gview --4k"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"--mini mifare classic mini / s20",
|
||||
"--1k mifare classic 1k / s50 (def)",
|
||||
"--2k mifare classic/plus 2k",
|
||||
"--4k mifare classic 4k / s70"
|
||||
],
|
||||
"usage": "hf mf gview [-h] [--mini] [--1k] [--2k] [--4k]"
|
||||
},
|
||||
"hf mf hardnested": {
|
||||
"command": "hf mf hardnested",
|
||||
"description": "nested attack for hardened mifare classic cards. `--i<x>` set type of simd instructions. without this flag programs autodetect it. or hf mf hardnested -r --tk [known target key] add the known target key to check if it is present in the remaining key space hf mf hardnested --blk 0 -a -k a0a1a2a3a4a5 --tblk 4 --ta --tk ffffffffffff",
|
||||
|
@ -4219,12 +4236,12 @@
|
|||
],
|
||||
"usage": "hf mfdes list [-h1fcrux] [--dict <file>]..."
|
||||
},
|
||||
"hf mfdes readdata": {
|
||||
"command": "hf mfdes readdata",
|
||||
"hf mfdes read": {
|
||||
"command": "hf mfdes read",
|
||||
"description": "read data from file make sure to select aid or authenticate aid before running this command.",
|
||||
"notes": [
|
||||
"hf mfdes readdata -n 01 -t 0 -o 000000 -l 000000 -a 123456",
|
||||
"hf mfdes readdata -n 01 -t 0 -> read all data from standard file, fileno 01"
|
||||
"hf mfdes read -n 1 -t 0 -o 000000 -l 000000 -a 123456",
|
||||
"hf mfdes read -n 1 -t 0 -> read all data from standard file, fileno 1"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
|
@ -4235,7 +4252,7 @@
|
|||
"-t, --type <dec> file type (0 = standard / backup, 1 = record)",
|
||||
"-a, --aid <hex> app id to select (3 hex bytes, big endian)"
|
||||
],
|
||||
"usage": "hf mfdes readdata [-h] [-n <dec>] [-o <hex>]... [-l <hex>]... [-t <dec>] [-a <hex>]..."
|
||||
"usage": "hf mfdes read [-h] [-n <dec>] [-o <hex>]... [-l <hex>]... [-t <dec>] [-a <hex>]..."
|
||||
},
|
||||
"hf mfdes selectaid": {
|
||||
"command": "hf mfdes selectaid",
|
||||
|
@ -4250,11 +4267,11 @@
|
|||
],
|
||||
"usage": "hf mfdes selectaid [-h] [-a <hex>]..."
|
||||
},
|
||||
"hf mfdes writedata": {
|
||||
"command": "hf mfdes writedata",
|
||||
"hf mfdes write": {
|
||||
"command": "hf mfdes write",
|
||||
"description": "write data to file make sure to select aid or authenticate aid before running this command.",
|
||||
"notes": [
|
||||
"hf mfdes writedata -n 01 -t 0 -o 000000 -d 3132333435363738"
|
||||
"hf mfdes write -n 01 -t 0 -o 000000 -d 3132333435363738"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
|
@ -4265,7 +4282,7 @@
|
|||
"-t, --type <dec> file type (0 = standard / backup, 1 = record)",
|
||||
"-a, --aid <hex> app id to select as hex bytes (3 bytes, big endian)"
|
||||
],
|
||||
"usage": "hf mfdes writedata [-h] [-n <dec>] [-o <hex>]... [-d <hex>]... [-t <dec>] [-a <hex>]..."
|
||||
"usage": "hf mfdes write [-h] [-n <dec>] [-o <hex>]... [-d <hex>]... [-t <dec>] [-a <hex>]..."
|
||||
},
|
||||
"hf mfp auth": {
|
||||
"command": "hf mfp auth",
|
||||
|
@ -5061,8 +5078,8 @@
|
|||
"command": "hw connect",
|
||||
"description": "connects to a proxmark3 device via specified serial port. baudrate here is only for physical uart or uart-bt, not for usb-cdc or blue shark add-on",
|
||||
"notes": [
|
||||
"hw connect -p com3",
|
||||
"hw connect -p com3 -b 115200"
|
||||
"hw connect -p /dev/ttyacm0",
|
||||
"hw connect -p /dev/ttyacm0 -b 115200"
|
||||
],
|
||||
"offline": true,
|
||||
"options": [
|
||||
|
@ -6441,17 +6458,18 @@
|
|||
"command": "lf hitag help",
|
||||
"description": "help this help list list hitag trace history --------------------------------------------------------------------------------------- lf hitag eload available offline: no loads hitag tag dump into emulator memory on device",
|
||||
"notes": [
|
||||
"lf hitag eload -f lf-hitag-11223344-dump.bin"
|
||||
"lf hitag eload -2 -f lf-hitag-11223344-dump.bin"
|
||||
],
|
||||
"offline": true,
|
||||
"options": [
|
||||
"-h, --help this help",
|
||||
"-f, --file <filename> filename of dump",
|
||||
"-1 simulate hitag1",
|
||||
"-2 simulate hitag2",
|
||||
"-s simulate hitags"
|
||||
"-1 card type hitag1",
|
||||
"-2 card type hitag2",
|
||||
"-s card type hitags",
|
||||
"-m card type hitagm"
|
||||
],
|
||||
"usage": "lf hitag eload [-h12s] -f <filename>"
|
||||
"usage": "lf hitag eload [-h12sm] -f <filename>"
|
||||
},
|
||||
"lf hitag info": {
|
||||
"command": "lf hitag info",
|
||||
|
@ -7586,7 +7604,7 @@
|
|||
},
|
||||
"lf sniff": {
|
||||
"command": "lf sniff",
|
||||
"description": "sniff low frequency signal. - use `lf config` to set parameters. - use `data plot` to look at it",
|
||||
"description": "sniff low frequency signal. you need to configure the lf part on the proxmark3 device manually. usually a trigger and skip samples is a good thing to set before doing a low frequency sniff. - use `lf config` to set parameters. - use `data plot` to look at sniff signal. - use `lf search -1` to see if signal can be automatic decoded",
|
||||
"notes": [
|
||||
"lf sniff -v",
|
||||
"lf sniff -s 3000 -@ -> oscilloscope style"
|
||||
|
@ -9179,8 +9197,8 @@
|
|||
}
|
||||
},
|
||||
"metadata": {
|
||||
"commands_extracted": 570,
|
||||
"commands_extracted": 571,
|
||||
"extracted_by": "PM3Help2JSON v1.00",
|
||||
"extracted_on": "2021-06-18T09:04:45"
|
||||
"extracted_on": "2021-06-24T16:45:08"
|
||||
}
|
||||
}
|
|
@ -241,12 +241,13 @@ Check column "offline" for their availability.
|
|||
|command |offline |description
|
||||
|------- |------- |-----------
|
||||
|`hf cipurse help `|Y |`This help.`
|
||||
|`hf cipurse info `|N |`Info about Cipurse tag.`
|
||||
|`hf cipurse auth `|N |`Authentication.`
|
||||
|`hf cipurse read `|N |`Read binary file.`
|
||||
|`hf cipurse write `|N |`Write binary file.`
|
||||
|`hf cipurse aread `|N |`Read file attributes.`
|
||||
|`hf cipurse delete `|N |`Delete file.`
|
||||
|`hf cipurse info `|N |`Get info about CIPURSE tag`
|
||||
|`hf cipurse auth `|N |`Authenticate CIPURSE tag`
|
||||
|`hf cipurse read `|N |`Read binary file`
|
||||
|`hf cipurse write `|N |`Write binary file`
|
||||
|`hf cipurse aread `|N |`Read file attributes`
|
||||
|`hf cipurse delete `|N |`Delete file`
|
||||
|`hf cipurse test `|Y |`Tests`
|
||||
|
||||
|
||||
### hf epa
|
||||
|
@ -445,6 +446,7 @@ Check column "offline" for their availability.
|
|||
|`hf mf gen3uid `|N |`Set UID without changing manufacturer block`
|
||||
|`hf mf gen3blk `|N |`Overwrite manufacturer block`
|
||||
|`hf mf gen3freeze `|N |`Perma lock UID changes. irreversible`
|
||||
|`hf mf gview `|N |`View card`
|
||||
|
||||
|
||||
### hf mfp
|
||||
|
@ -518,8 +520,8 @@ Check column "offline" for their availability.
|
|||
|`hf mfdes deletefile `|N |`Create Delete File`
|
||||
|`hf mfdes dump `|N |`Dump all files`
|
||||
|`hf mfdes getvalue `|N |`Get value of file`
|
||||
|`hf mfdes readdata `|N |`Read data from standard/backup/record file`
|
||||
|`hf mfdes writedata `|N |`Write data to standard/backup/record file`
|
||||
|`hf mfdes read `|N |`Read data from standard/backup/record file`
|
||||
|`hf mfdes write `|N |`Write data to standard/backup/record file`
|
||||
|
||||
|
||||
### hf seos
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue