int usage_lf_em410x_sim(void) {
PrintAndLog("Simulating EM410x tag");
PrintAndLog("");
- PrintAndLog("Usage: lf em4x em410xsim [h] <uid> <clock>");
+ PrintAndLog("Usage: lf em 410xsim [h] <uid> <clock>");
PrintAndLog("Options:");
PrintAndLog(" h - this help");
PrintAndLog(" uid - uid (10 HEX symbols)");
PrintAndLog(" clock - clock (32|64) (optional)");
PrintAndLog("samples:");
- PrintAndLog(" lf em4x em410xsim 0F0368568B");
- PrintAndLog(" lf em4x em410xsim 0F0368568B 32");
+ PrintAndLog(" lf em 410xsim 0F0368568B");
+ PrintAndLog(" lf em 410xsim 0F0368568B 32");
return 0;
}
}
CmdLFRead("s");
- //getSamples("8201",true); //capture enough to get 2 complete preambles (4096*2+9)
getSamples("6144",true);
} while (!CmdEM410xRead(""));
{"help", CmdHelp, 1, "This help"},
{"410xdemod", CmdEMdemodASK, 0, "[findone] -- Extract ID from EM410x tag (option 0 for continuous loop, 1 for only 1 tag)"},
{"410xread", CmdEM410xRead, 1, "[clock rate] -- Extract ID from EM410x tag in GraphBuffer"},
- {"410xsim", CmdEM410xSim, 0, "<UID> -- Simulate EM410x tag"},
+ {"410xsim", CmdEM410xSim, 0, "simulate EM410x tag"},
{"410xwatch", CmdEM410xWatch, 0, "['h'] -- Watches for EM410x 125/134 kHz tags (option 'h' for 134)"},
{"410xspoof", CmdEM410xWatchnSpoof, 0, "['h'] --- Watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" },
{"410xwrite", CmdEM410xWrite, 0, "<UID> <'0' T5555> <'1' T55x7> [clock rate] -- Write EM410x UID to T5555(Q5) or T55x7 tag, optionally setting clock rate"},
{"4x05dump", CmdEM4x05Dump, 0, "dump EM4205/4305 tag"},
- {"4x05info", CmdEM4x05Info, 0, "Tag information EM4x05/EM4x69"},
+ {"4x05info", CmdEM4x05Info, 0, "tag information EM4x05/EM4x69"},
{"4x05read", CmdEM4x05Read, 0, "read word data from EM4205/4305"},
{"4x05write", CmdEM4x05Write, 0, "write word data to EM4205/4305"},
{"4x50read", CmdEM4x50Read, 0, "read word data from EM4x50"},
#include "sleep.h"
#include "cmdparser.h"
#include "cmdhw.h"
+#include "whereami.h"
+
// a global mutex to prevent interlaced printing from different threads
pthread_mutex_t print_lock;
// printf("██████╔╝██╔████╔██║ ████╔╝\n");
// printf("██╔═══╝ ██║╚██╔╝██║ ══█║ iceman@icesql.net\n");
// printf("██║ ██║ ╚═╝ ██║ ████╔╝ https://github.com/iceman1001/proxmark3\n");
- // printf("╚═╝ ╚═╝ ╚═╝ ╚═══╝v1.6.8\n");
+ // printf("╚═╝ ╚═╝ ╚═╝ ╚═══╝v1.7.0\n");
// }
if (script_file) {
fclose(script_file);
- script_file = NULL;
}
write_history(".history");
dumpCommandsRecursive(cmds, markdown);
}
+static char *my_executable_path = NULL;
+static char *my_executable_directory = NULL;
+
+const char const *get_my_executable_path(void)
+{
+ return my_executable_path;
+}
+
+const char const *get_my_executable_directory(void)
+{
+ return my_executable_directory;
+}
+
+static void set_my_executable_path(void)
+{
+ int path_length = wai_getExecutablePath(NULL, 0, NULL);
+ if (path_length != -1) {
+ my_executable_path = (char*)malloc(path_length + 1);
+ int dirname_length = 0;
+ if (wai_getExecutablePath(my_executable_path, path_length, &dirname_length) != -1) {
+ my_executable_path[path_length] = '\0';
+ my_executable_directory = (char *)malloc(dirname_length + 2);
+ strncpy(my_executable_directory, my_executable_path, dirname_length+1);
+ }
+ }
+}
+
int main(int argc, char* argv[]) {
srand(time(0));
dumpAllHelp(1);
return 0;
}
+
+ set_my_executable_path();
+
// Make sure to initialize
struct main_loop_arg marg = {
.usb_present = 0,