mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-21 05:43:23 -07:00
1. fixed (it seems) readline behavior. Now there is no proxmark3 prompts on the data.
2. emulator goes into beta stage. works: - work with 4BUID and 7BUID dumps - load/save/grab dumps - emulate select - emulate authentication (with nested) - emulate read/write blocks - emulate NACK-ACK ping-pong
This commit is contained in:
parent
ab8b654efa
commit
51969283ec
4 changed files with 111 additions and 77 deletions
|
@ -796,8 +796,8 @@ static command_t CommandTable[] =
|
|||
{"nested", CmdHF14AMfNested, 0, "Test nested authentication"},
|
||||
{"sim", CmdHF14AMf1kSim, 0, "Simulate MIFARE 1k card"},
|
||||
{"eclr", CmdHF14AMfEClear, 0, "Clear simulator memory block"},
|
||||
{"eget", CmdHF14AMfEGet, 0, "Set simulator memory block"},
|
||||
{"eset", CmdHF14AMfESet, 0, "Get simulator memory block"},
|
||||
{"eget", CmdHF14AMfEGet, 0, "Get simulator memory block"},
|
||||
{"eset", CmdHF14AMfESet, 0, "Set simulator memory block"},
|
||||
{"eload", CmdHF14AMfELoad, 0, "Load from file emul dump"},
|
||||
{"esave", CmdHF14AMfESave, 0, "Save to file emul dump"},
|
||||
{"ecfill", CmdHF14AMfECFill, 0, "Fill simulator memory with help of keys from simulator"},
|
||||
|
|
|
@ -38,15 +38,7 @@ static void *usb_receiver(void *targ)
|
|||
|
||||
while (arg->run) {
|
||||
if (ReceiveCommandPoll(&cmdbuf)) {
|
||||
for (int i = 0; i < strlen(PROXPROMPT); i++)
|
||||
putchar(0x08);
|
||||
UsbCommandReceived(&cmdbuf);
|
||||
// there is a big bug )
|
||||
if (cmdbuf.cmd >= 0x0100 && cmdbuf.cmd <= 0x0110) { // debug commands
|
||||
printf(">");
|
||||
// rl_on_new_line_with_prompt();
|
||||
// rl_forced_update_display();
|
||||
}
|
||||
fflush(NULL);
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +68,6 @@ static void *main_loop(void *targ)
|
|||
|
||||
if (cmd[0] != 0x00) {
|
||||
if (strncmp(cmd, "quit", 4) == 0) {
|
||||
write_history(".history");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -90,6 +81,8 @@ static void *main_loop(void *targ)
|
|||
}
|
||||
}
|
||||
|
||||
write_history(".history");
|
||||
|
||||
if (arg->usb_present == 1) {
|
||||
rarg.run = 0;
|
||||
pthread_join(reader_thread, NULL);
|
||||
|
|
24
client/ui.c
24
client/ui.c
|
@ -10,8 +10,10 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <readline/readline.h>
|
||||
|
||||
#include "ui.h"
|
||||
|
||||
|
@ -23,6 +25,8 @@ static char *logfilename = "proxmark3.log";
|
|||
|
||||
void PrintAndLog(char *fmt, ...)
|
||||
{
|
||||
char *saved_line;
|
||||
int saved_point;
|
||||
va_list argptr, argptr2;
|
||||
static FILE *logfile = NULL;
|
||||
static int logging=1;
|
||||
|
@ -34,12 +38,32 @@ void PrintAndLog(char *fmt, ...)
|
|||
logging=0;
|
||||
}
|
||||
}
|
||||
|
||||
int need_hack = (rl_readline_state & RL_STATE_READCMD) > 0;
|
||||
|
||||
if (need_hack) {
|
||||
saved_point = rl_point;
|
||||
saved_line = rl_copy_text(0, rl_end);
|
||||
rl_save_prompt();
|
||||
rl_replace_line("", 0);
|
||||
rl_redisplay();
|
||||
}
|
||||
|
||||
va_start(argptr, fmt);
|
||||
va_copy(argptr2, argptr);
|
||||
vprintf(fmt, argptr);
|
||||
vprintf(" ", 0); // cleaning prompt
|
||||
va_end(argptr);
|
||||
printf("\n");
|
||||
|
||||
if (need_hack) {
|
||||
rl_restore_prompt();
|
||||
rl_replace_line(saved_line, 0);
|
||||
rl_point = saved_point;
|
||||
rl_redisplay();
|
||||
free(saved_line);
|
||||
}
|
||||
|
||||
if (logging && logfile) {
|
||||
vfprintf(logfile, fmt, argptr2);
|
||||
fprintf(logfile,"\n");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue