mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-07-05 20:41:34 -07:00
revamped
This commit is contained in:
parent
16cbb4a446
commit
7e2aa07b27
2 changed files with 71 additions and 14 deletions
8
client/resources/iceman.txt
Normal file
8
client/resources/iceman.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
[38;2;0;57;27m$[38;2;1;57;26m$[38;2;3;58;26m$[38;2;4;58;26m$[38;2;6;59;26m$[38;2;8;60;25m$[38;2;9;60;25m\ [38;2;14;62;24m$[38;2;16;63;24m$[38;2;18;63;24m$[38;2;19;64;24m$[38;2;21;64;23m$[38;2;23;65;23m$[38;2;24;66;23m\ [38;2;29;67;22m$[38;2;31;68;22m$[38;2;33;69;22m$[38;2;34;69;22m$[38;2;36;70;21m$[38;2;37;70;21m$[38;2;39;71;21m$[38;2;41;72;21m$[38;2;42;72;20m\ [38;2;46;73;20m$[38;2;47;74;20m$[38;2;49;75;20m\ [38;2;61;79;18m$[38;2;62;79;18m$[38;2;64;80;17m\ [38;2;69;82;17m$[38;2;70;82;16m$[38;2;72;83;16m$[38;2;74;84;16m$[38;2;75;84;16m$[38;2;77;85;16m$[38;2;79;85;15m\ [38;2;84;87;15m$[38;2;85;88;14m$[38;2;87;88;14m\ [38;2;94;91;13m$[38;2;95;91;13m$[38;2;97;92;13m\ [0m
|
||||
[38;2;9;60;25m\_$$ _[38;2;11;61;25m|[38;2;13;61;25m$[38;2;14;62;24m$ [38;2;19;64;24m_[38;2;21;64;23m_[38;2;23;65;23m$[38;2;24;66;23m$[38;2;26;66;23m\ [38;2;29;67;22m$[38;2;31;68;22m$ [38;2;36;70;21m_[38;2;37;70;21m_[38;2;39;71;21m_[38;2;41;72;21m_[38;2;42;72;20m_[38;2;44;73;20m|[38;2;46;73;20m$[38;2;47;74;20m$[38;2;49;75;20m$[38;2;51;75;19m\ [38;2;59;78;18m$[38;2;61;79;18m$[38;2;62;79;18m$ [38;2;66;81;17m|[38;2;67;81;17m$[38;2;69;82;17m$ [38;2;74;84;16m_[38;2;75;84;16m_[38;2;77;85;16m$[38;2;79;85;15m$[38;2;80;86;15m\ [38;2;84;87;15m$[38;2;85;88;14m$[38;2;87;88;14m$[38;2;89;89;14m\ [38;2;94;91;13m$[38;2;95;91;13m$ [38;2;99;93;13m|[0m
|
||||
[38;2;18;63;24m$$ | $$ / [38;2;23;65;23m\[38;2;24;66;23m_[38;2;26;66;23m_[38;2;28;67;23m|[38;2;29;67;22m$[38;2;31;68;22m$ [38;2;34;69;22m| [38;2;46;73;20m$[38;2;47;74;20m$[38;2;49;75;20m$[38;2;51;75;19m$[38;2;52;76;19m\ [38;2;57;78;18m$[38;2;59;78;18m$[38;2;61;79;18m$[38;2;62;79;18m$ [38;2;66;81;17m|[38;2;67;81;17m$[38;2;69;82;17m$ [38;2;72;83;16m/ [38;2;77;85;16m$[38;2;79;85;15m$ [38;2;82;87;15m|[38;2;84;87;15m$[38;2;85;88;14m$[38;2;87;88;14m$[38;2;89;89;14m$[38;2;90;90;14m\ [38;2;94;91;13m$[38;2;95;91;13m$ [38;2;99;93;13m|[0m
|
||||
[38;2;26;66;23m$$ | $$ | [38;2;29;67;22m$[38;2;31;68;22m$[38;2;33;69;22m$[38;2;34;69;22m$[38;2;36;70;21m$[38;2;37;70;21m\ [38;2;46;73;20m$[38;2;47;74;20m$[38;2;49;75;20m\[38;2;51;75;19m$[38;2;52;76;19m$[38;2;54;76;19m\[38;2;56;77;19m$[38;2;57;78;18m$ [38;2;61;79;18m$[38;2;62;79;18m$ [38;2;66;81;17m|[38;2;67;81;17m$[38;2;69;82;17m$[38;2;70;82;16m$[38;2;72;83;16m$[38;2;74;84;16m$[38;2;75;84;16m$[38;2;77;85;16m$[38;2;79;85;15m$ [38;2;82;87;15m|[38;2;84;87;15m$[38;2;85;88;14m$ [38;2;89;89;14m$[38;2;90;90;14m$[38;2;92;90;13m\[38;2;94;91;13m$[38;2;95;91;13m$ [38;2;99;93;13m|[0m
|
||||
[38;2;36;70;21m$$ | $$ | $$ _[38;2;37;70;21m_[38;2;39;71;21m| [38;2;46;73;20m$[38;2;47;74;20m$ [38;2;51;75;19m\[38;2;52;76;19m$[38;2;54;76;19m$[38;2;56;77;19m$ [38;2;61;79;18m$[38;2;62;79;18m$ [38;2;66;81;17m|[38;2;67;81;17m$[38;2;69;82;17m$ [38;2;74;84;16m_[38;2;75;84;16m_[38;2;77;85;16m$[38;2;79;85;15m$ [38;2;82;87;15m|[38;2;84;87;15m$[38;2;85;88;14m$ [38;2;89;89;14m\[38;2;90;90;14m$[38;2;92;90;13m$[38;2;94;91;13m$[38;2;95;91;13m$ [38;2;99;93;13m|[0m
|
||||
[38;2;45;73;20m$$ | $$ | $$\ $$ | [38;2;46;73;20m$[38;2;47;74;20m$ [38;2;51;75;19m|[38;2;52;76;19m\[38;2;54;76;19m$ [38;2;59;78;18m/[38;2;61;79;18m$[38;2;62;79;18m$ [38;2;66;81;17m|[38;2;67;81;17m$[38;2;69;82;17m$ [38;2;72;83;16m| [38;2;77;85;16m$[38;2;79;85;15m$ [38;2;82;87;15m|[38;2;84;87;15m$[38;2;85;88;14m$ [38;2;89;89;14m|[38;2;90;90;14m\[38;2;92;90;13m$[38;2;94;91;13m$[38;2;95;91;13m$ [38;2;99;93;13m|[0m
|
||||
[38;2;53;76;19m$$$$$$\ \$$$$$$ |$$$$$$$$\ $$ | [38;2;54;76;19m\[38;2;56;77;19m_[38;2;57;78;18m/ [38;2;61;79;18m$[38;2;62;79;18m$ [38;2;66;81;17m|[38;2;67;81;17m$[38;2;69;82;17m$ [38;2;72;83;16m| [38;2;77;85;16m$[38;2;79;85;15m$ [38;2;82;87;15m|[38;2;84;87;15m$[38;2;85;88;14m$ [38;2;89;89;14m| [38;2;92;90;13m\[38;2;94;91;13m$[38;2;95;91;13m$ [38;2;99;93;13m|[0m
|
||||
[38;2;63;79;18m\______| \______/ \________|\__| \_[38;2;64;80;17m_[38;2;66;81;17m|[38;2;67;81;17m\[38;2;69;82;17m_[38;2;70;82;16m_[38;2;72;83;16m| [38;2;77;85;16m\[38;2;79;85;15m_[38;2;80;86;15m_[38;2;82;87;15m|[38;2;84;87;15m\[38;2;85;88;14m_[38;2;87;88;14m_[38;2;89;89;14m| [38;2;94;91;13m\[38;2;95;91;13m_[38;2;97;92;13m_[38;2;99;93;13m|[0m
|
|
@ -30,6 +30,7 @@
|
|||
#include "util_posix.h"
|
||||
#include "comms.h"
|
||||
#include "commonutil.h"
|
||||
#include "fileutils.h"
|
||||
|
||||
#define FLASH_START 0x100000
|
||||
|
||||
|
@ -266,7 +267,7 @@ int flash_load(flash_file_t *ctx, bool force) {
|
|||
int res = PM3_EUNDEF;
|
||||
|
||||
fd = fopen(ctx->filename, "rb");
|
||||
if (!fd) {
|
||||
if (fd == NULL) {
|
||||
PrintAndLogEx(ERR, _RED_("Could not open file") " %s >>> ", ctx->filename);
|
||||
res = PM3_EFILE;
|
||||
goto fail;
|
||||
|
@ -652,17 +653,41 @@ static const char ice[] =
|
|||
" !!: :!! !!: !!: !!: !!: !!! !!: !!!\n : :: :: : : :: ::: : : : : : :: : \n"
|
||||
_RED_(" . .. .. . . .. ... . . . . . .. . ");
|
||||
|
||||
|
||||
#define ICEMAN_LOGO_FN "iceman.txt"
|
||||
#define ICEMAN_LOGO_SIZE (5000)
|
||||
// Write a file's segments to Flash
|
||||
int flash_write(flash_file_t *ctx) {
|
||||
int len = 0;
|
||||
|
||||
char ice2[ICEMAN_LOGO_SIZE] = {0};
|
||||
char ice3[ICEMAN_LOGO_SIZE] = {0};
|
||||
|
||||
bool is_loaded = false;
|
||||
if (g_session.supports_colors) {
|
||||
|
||||
uint8_t *iraw = NULL;
|
||||
size_t irawlen = 0;
|
||||
int res = loadFile_safeEx(ICEMAN_LOGO_FN, "", (void **)&iraw, &irawlen, false);
|
||||
if (res == PM3_SUCCESS && irawlen > ICEMAN_LOGO_SIZE) {
|
||||
irawlen = ICEMAN_LOGO_SIZE;
|
||||
}
|
||||
if (res == PM3_SUCCESS) {
|
||||
memcpy(ice3, iraw, irawlen);
|
||||
free(iraw);
|
||||
is_loaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_loaded == false) {
|
||||
memcpy_filter_ansi(ice2, ice, sizeof(ice), !g_session.supports_colors);
|
||||
memcpy_filter_emoji(ice3, ice2, sizeof(ice2), g_session.emoji_mode);
|
||||
}
|
||||
|
||||
size_t ice3len = strlen(ice3);
|
||||
|
||||
PrintAndLogEx(SUCCESS, "Writing segments for file: %s", ctx->filename);
|
||||
|
||||
char ice2[sizeof(ice)] = {0};
|
||||
char ice3[sizeof(ice)] = {0};
|
||||
memcpy_filter_ansi(ice2, ice, sizeof(ice), !g_session.supports_colors);
|
||||
memcpy_filter_emoji(ice3, ice2, sizeof(ice2), g_session.emoji_mode);
|
||||
size_t ice3len = strlen(ice3);
|
||||
int len = 0;
|
||||
|
||||
for (int i = 0; i < ctx->num_segs; i++) {
|
||||
flash_seg_t *seg = &ctx->segments[i];
|
||||
|
@ -672,6 +697,9 @@ int flash_write(flash_file_t *ctx) {
|
|||
uint32_t end = seg->start + length;
|
||||
|
||||
PrintAndLogEx(SUCCESS, " 0x%08x..0x%08x [0x%x / %u blocks]", seg->start, end - 1, length, blocks);
|
||||
if (is_loaded) {
|
||||
fprintf(stdout, "\n\n");
|
||||
}
|
||||
fflush(stdout);
|
||||
int block = 0;
|
||||
uint8_t *data = seg->data;
|
||||
|
@ -693,15 +721,36 @@ int flash_write(flash_file_t *ctx) {
|
|||
length -= block_size;
|
||||
block++;
|
||||
|
||||
if (len < ice3len) {
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
} else {
|
||||
if (is_loaded) {
|
||||
if (len < ice3len) {
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
} else {
|
||||
|
||||
if ((len - ice3len) % 67 == 0) {
|
||||
fprintf(stdout, "\n");
|
||||
if ((len - ice3len - 1) % 61 == 0) {
|
||||
fprintf(stdout, "\n");
|
||||
}
|
||||
fprintf(stdout, ".");
|
||||
len++;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (len < ice3len) {
|
||||
fprintf(stdout, "%c", ice3[len++]);
|
||||
} else {
|
||||
|
||||
if ((len - ice3len) % 67 == 0) {
|
||||
fprintf(stdout, "\n");
|
||||
}
|
||||
fprintf(stdout, ".");
|
||||
len++;
|
||||
}
|
||||
fprintf(stdout, ".");
|
||||
len++;
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue