This commit is contained in:
iceman1001 2025-07-10 11:52:39 +02:00
commit 2597c7576e
50 changed files with 135 additions and 99 deletions

View file

@ -452,6 +452,7 @@ endif
ifeq ($(SWIG_LUA_FOUND),1)
PM3CFLAGS += -DHAVE_LUA_SWIG
endif
ifeq ($(SWIG_PYTHON_FOUND),1)
PM3CFLAGS += -DHAVE_PYTHON_SWIG
endif
@ -594,6 +595,7 @@ endif
ifeq ($(SWIG_LUA_FOUND),1)
$(info Lua SWIG: wrapper found)
endif
ifeq ($(SWIG_PYTHON_FOUND),1)
$(info Python SWIG: wrapper found)
endif

View file

@ -2542,7 +2542,7 @@ FAB943906E9C
# R.A.T.T transport card key A/B
AA034F342A55
456776908C48
#
# BusFacil - Brazilian public transport card for some cities
fae9b14365a9
c567dd4a6004

View file

@ -18,7 +18,7 @@ desc = [[
is found, it uses the wipe command to erase the T5577. Then the reanimation
procedure is applied. If the password is not found or doesn't exist the script
only performs the reanimation procedure. The script revives 99% of blocked tags.
]]
]]
usage = [[
script run lf_t55xx_fix
]]
@ -87,7 +87,7 @@ local function reanimate_t5577(password)
p:console('lf t55 wipe -p ' .. password)
print("T5577 wiped using a password: " ..ac.green.. password ..ac.reset)
else
print(ac.yellow.."No valid password found, proceeding with reanimation."..ac.reset)
print(ac.yellow.." No valid password found, proceeding with reanimation."..ac.reset)
end
p:console('lf t55 write -b 0 -d 000880E8 -p 00000000')

View file

@ -3073,7 +3073,7 @@ plot:
}
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
if (verbose && found == false) {
PrintAndLogEx(FAILED, "no ISO 14443-B tag found");

View file

@ -232,8 +232,7 @@ int readHFCryptoRF(bool loop, bool verbose) {
PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex_inrow(card.uid, card.uidlen));
set_last_known_card(card);
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
DropField();
return res;
}

View file

@ -348,7 +348,7 @@ int read_felica_uid(bool loop, bool verbose) {
res = PM3_SUCCESS;
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
DropField();
return res;

View file

@ -199,7 +199,7 @@ int read_fudan_uid(bool loop, bool verbose) {
PrintAndLogEx(NORMAL, "");
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
return PM3_SUCCESS;

View file

@ -438,7 +438,7 @@ int reader_lto(bool loop, bool verbose) {
PrintAndLogEx(INFO, "UID......... " _GREEN_("%s"), sprint_hex_inrow(serial, sizeof(serial)));
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
lto_switch_off_field();
return ret;

View file

@ -623,7 +623,7 @@ int read_texkom_uid(bool loop, bool verbose) {
}
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -109,7 +109,7 @@ static int topaz_select(uint8_t *atqa, uint8_t atqa_len, uint8_t *rid_response,
}
// read all of the static memory of a selected Topaz tag.
static int topaz_rall(uint8_t *uid, uint8_t *response) {
static int topaz_rall(const uint8_t *uid, uint8_t *response) {
uint16_t resp_len = 124;
uint8_t rall_cmd[] = {TOPAZ_RALL, 0, 0, 0, 0, 0, 0, 0, 0};
@ -1180,7 +1180,7 @@ int readTopazUid(bool loop, bool verbose) {
topaz_tag.HR01[0] = rid_response[0];
topaz_tag.HR01[1] = rid_response[1];
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
topaz_switch_off_field();
return res;

View file

@ -593,7 +593,7 @@ int read_xerox_uid(bool loop, bool verbose) {
return PM3_ESOFT;
}
} while (loop && kbd_enter_pressed() == false);
} while (loop && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -129,7 +129,7 @@ static int CmdDestronReader(const char *Cmd) {
do {
lf_read(false, 16000);
demodDestron(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -692,7 +692,7 @@ static int CmdFdxBReader(const char *Cmd) {
lf_read(false, 10000);
ret = demodFDXB(!cm); // be verbose only if not in continuous mode
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
if (old_div != curr_div) {

View file

@ -132,7 +132,7 @@ static int CmdGallagherReader(const char *Cmd) {
do {
lf_read(false, 4096 * 2 + 20);
demodGallagher(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -968,7 +968,7 @@ static int CmdLFHitagSReader(const char *Cmd) {
if (hts_get_uid(&uid)) {
PrintAndLogEx(SUCCESS, "UID.... " _GREEN_("%08X"), uid);
}
} while (cm && kbd_enter_pressed() == false);
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -315,7 +315,7 @@ static int CmdIdteckReader(const char *Cmd) {
do {
lf_read(false, 5000);
demodIdteck(NULL, !cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -632,7 +632,7 @@ static int CmdIndalaReader(const char *Cmd) {
do {
lf_read(false, 30000);
demodIndalaEx(clk, invert, max_err, !cm);
} while (cm && !kbd_enter_pressed());
} while (cm & (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -202,7 +202,7 @@ static int CmdIOProxReader(const char *Cmd) {
do {
lf_read(false, 12000);
demodIOProx(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -152,7 +152,7 @@ static int CmdJablotronReader(const char *Cmd) {
do {
lf_read(false, 16000);
demodJablotron(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -221,7 +221,7 @@ static int CmdKeriReader(const char *Cmd) {
do {
lf_read(false, 10000);
demodKeri(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -179,7 +179,7 @@ static int CmdMotorolaReader(const char *Cmd) {
// 64 * 32 * 2 * n-ish
lf_read(false, 5000);
res = demodMotorola(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
// reset back to 125 kHz
sc.divisor = LF_DIVISOR_125;

View file

@ -296,7 +296,7 @@ static int CmdLFNedapReader(const char *Cmd) {
do {
lf_read(false, 16000);
demodNedap(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -287,7 +287,7 @@ static int CmdNexWatchReader(const char *Cmd) {
do {
lf_read(false, 20000);
demodNexWatch(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -150,7 +150,7 @@ static int CmdNoralsyReader(const char *Cmd) {
do {
lf_read(false, 8000);
demodNoralsy(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -214,7 +214,7 @@ static int CmdPacReader(const char *Cmd) {
do {
lf_read(false, 4096 * 2 + 20);
demodPac(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -285,7 +285,7 @@ static int CmdParadoxReader(const char *Cmd) {
do {
lf_read(false, 10000);
demodParadox(!cm, old);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -84,7 +84,7 @@ static int CmdLFPCF7931Reader(const char *Cmd) {
PrintAndLogEx(WARNING, "command execution time out");
return PM3_ETIMEOUT;
}
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -160,7 +160,7 @@ static int CmdPrescoReader(const char *Cmd) {
do {
lf_read(false, 12000);
demodPresco(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -231,7 +231,7 @@ static int CmdPyramidReader(const char *Cmd) {
do {
lf_read(false, 15000);
demodPyramid(true);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -161,7 +161,7 @@ static int CmdSecurakeyReader(const char *Cmd) {
do {
lf_read(false, 8000);
demodSecurakey(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -325,7 +325,7 @@ static int CmdTIReader(const char *Cmd) {
do {
clearCommandBuffer();
SendCommandNG(CMD_LF_TI_READ, NULL, 0);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -102,7 +102,7 @@ static int CmdVikingReader(const char *Cmd) {
do {
lf_read(false, 10000);
demodViking(true);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -185,7 +185,7 @@ static int CmdVisa2kReader(const char *Cmd) {
do {
lf_read(false, 20000);
demodVisa2k(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -138,7 +138,7 @@ static int CmdzxReader(const char *Cmd) {
do {
lf_Zx_read();
demodzx(!cm);
} while (cm && !kbd_enter_pressed());
} while (cm && (kbd_enter_pressed() == false));
return PM3_SUCCESS;
}

View file

@ -30,12 +30,17 @@
#include "util_posix.h" // time
#include "fileutils.h"
#define MQTT_BUFFER_SIZE ( 1 << 16 )
static int CmdHelp(const char *Cmd);
static void mqtt_publish_callback(void **unused, struct mqtt_response_publish *published) {
if (published == NULL) {
return;
}
// note that published->topic_name is NOT null-terminated (here we'll change it to a c-string)
char *topic_name = (char *) calloc(published->topic_name_size + 1, 1);
memcpy(topic_name, published->topic_name, published->topic_name_size);

View file

@ -1469,7 +1469,7 @@ static int CmdPCSC(const char *Cmd) {
msleep(300);
}
} while (!kbd_enter_pressed());
} while (kbd_enter_pressed() == false);
mbedtls_net_close(&netCtx);
mbedtls_net_free(&netCtx);

View file

@ -89,6 +89,8 @@ DumpFileType_t get_filetype(const char *filename) {
o = FLIPPER;
} else if (str_endswith(s, "picopass")) {
o = FLIPPER;
} else if (str_endswith(s, "xml")) {
o = TAGINFO;
} else {
// mfd, trc, trace is binary
o = BIN;
@ -3323,6 +3325,10 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl
}
break;
}
case TAGINFO: {
//res = loadFileXML_safe(fn, ".xml", pdump, dumplen);
break;
}
}
return res;
}

View file

@ -83,6 +83,7 @@ typedef enum {
DICTIONARY,
MCT,
FLIPPER,
TAGINFO,
} DumpFileType_t;
typedef enum {

View file

@ -39,32 +39,37 @@
#endif
bool uart_bind(void *socket, const char *bindAddrStr, const char *bindPortStr, bool isBindingIPv6) {
if (bindAddrStr == NULL && bindPortStr == NULL)
if (bindAddrStr == NULL && bindPortStr == NULL) {
return true; // no need to bind
}
struct sockaddr_storage bindSockaddr;
memset(&bindSockaddr, 0, sizeof(bindSockaddr));
int bindPort = 0; // 0: port unspecified
if (bindPortStr != NULL)
if (bindPortStr != NULL) {
bindPort = atoi(bindPortStr);
}
if (!isBindingIPv6) {
if (isBindingIPv6 == false) {
struct sockaddr_in *bindSockaddr4 = (struct sockaddr_in *)&bindSockaddr;
bindSockaddr4->sin_family = AF_INET;
bindSockaddr4->sin_port = htons(bindPort);
if (bindAddrStr == NULL)
if (bindAddrStr == NULL) {
bindSockaddr4->sin_addr.s_addr = INADDR_ANY;
else
} else {
bindSockaddr4->sin_addr.s_addr = inet_addr(bindAddrStr);
}
} else {
struct sockaddr_in6 *bindSockaddr6 = (struct sockaddr_in6 *)&bindSockaddr;
bindSockaddr6->sin6_family = AF_INET6;
bindSockaddr6->sin6_port = htons(bindPort);
if (bindAddrStr == NULL)
if (bindAddrStr == NULL) {
bindSockaddr6->sin6_addr = in6addr_any;
else
} else {
inet_pton(AF_INET6, bindAddrStr, &(bindSockaddr6->sin6_addr));
}
}
#ifdef _WIN32
int res = bind(*(SOCKET *)socket, (struct sockaddr *)&bindSockaddr, sizeof(bindSockaddr));
#else

View file

@ -73,6 +73,7 @@ int kbd_enter_pressed(void) {
c = getchar();
ret |= c == '\n';
} while (c != EOF);
//blocking
flags &= ~O_NONBLOCK;
if (fcntl(STDIN_FILENO, F_SETFL, flags) < 0) {

View file

@ -27,12 +27,14 @@ static CrcType_t current_crc_type = CRC_NONE;
void init_table(CrcType_t crctype) {
// same crc algo, and initialised already
if (crctype == current_crc_type && crc_table_init)
if (crctype == current_crc_type && crc_table_init) {
return;
}
// not the same crc algo. reset table.
if (crctype != current_crc_type)
if (crctype != current_crc_type) {
reset_table();
}
current_crc_type = crctype;
@ -68,23 +70,29 @@ void init_table(CrcType_t crctype) {
void generate_table(uint16_t polynomial, bool refin) {
for (uint16_t i = 0; i < 256; i++) {
uint16_t c, crc = 0;
if (refin)
if (refin) {
c = reflect8(i) << 8;
else
} else {
c = i << 8;
}
for (uint16_t j = 0; j < 8; j++) {
if ((crc ^ c) & 0x8000)
if ((crc ^ c) & 0x8000) {
crc = (crc << 1) ^ polynomial;
else
} else {
crc = crc << 1;
}
c = c << 1;
}
if (refin)
if (refin) {
crc = reflect16(crc);
}
crc_table[i] = crc;
}
@ -102,21 +110,25 @@ uint16_t crc16_fast(uint8_t const *d, size_t n, uint16_t initval, bool refin, bo
// fast lookup table algorithm without augmented zero bytes, e.g. used in pkzip.
// only usable with polynom orders of 8, 16, 24 or 32.
if (n == 0)
if (n == 0) {
return (~initval);
}
uint16_t crc = initval;
if (refin)
if (refin) {
crc = reflect16(crc);
}
if (!refin)
if (refin == false) {
while (n--) crc = (crc << 8) ^ crc_table[((crc >> 8) ^ *d++) & 0xFF ];
else
} else {
while (n--) crc = (crc >> 8) ^ crc_table[(crc & 0xFF) ^ *d++];
}
if (refout ^ refin)
if (refout ^ refin) {
crc = reflect16(crc);
}
return crc;
}
@ -143,8 +155,9 @@ uint16_t update_crc16(uint16_t crc, uint8_t c) {
// two ways. msb or lsb loop.
uint16_t Crc16(uint8_t const *d, size_t bitlength, uint16_t remainder, uint16_t polynomial, bool refin, bool refout) {
if (bitlength == 0)
if (bitlength == 0) {
return (~remainder);
}
uint8_t offset = 8 - (bitlength % 8);
// front padding with 0s won't change the CRC result
@ -153,7 +166,9 @@ uint16_t Crc16(uint8_t const *d, size_t bitlength, uint16_t remainder, uint16_t
uint8_t c = prebits | d[i] >> offset;
prebits = d[i] << (8 - offset);
if (refin) c = reflect8(c);
if (refin) {
c = reflect8(c);
}
// xor in at msb
remainder ^= (c << 8);
@ -167,8 +182,10 @@ uint16_t Crc16(uint8_t const *d, size_t bitlength, uint16_t remainder, uint16_t
}
}
}
if (refout)
if (refout) {
remainder = reflect16(remainder);
}
return remainder;
}

View file

@ -12363,7 +12363,7 @@
"--addr <str> MQTT server address",
"-p, --port <str> MQTT server port",
"--topic <str> MQTT topic",
"-f, --file <fn> file to send"
"-f, --file <fn> file name to use for received files"
],
"usage": "mqtt receive [-h] [--addr <str>] [-p <str>] [--topic <str>] [-f <fn>]"
},
@ -13413,6 +13413,6 @@
"metadata": {
"commands_extracted": 770,
"extracted_by": "PM3Help2JSON v1.00",
"extracted_on": "2025-07-08T19:08:23"
"extracted_on": "2025-07-10T05:07:28"
}
}