mirror of
https://github.com/radareorg/radare2.git
synced 2024-10-07 02:23:58 +00:00
* Rename 'pm' as 'pf' (print formatted data)
* pm is the print magic command - uses libmagic .. used for templatting data * Added 'psp' command to print pascal strings
This commit is contained in:
parent
d9483833c9
commit
be7307338b
@ -32,3 +32,4 @@ WITHNONPIC=@WITHNONPIC@
|
||||
HAVE_LIB_TCC=@HAVE_LIB_TCC@
|
||||
HAVE_LIB_GMP=@HAVE_LIB_GMP@
|
||||
HAVE_LIB_OPENSSL=@HAVE_LIB_OPENSSL@
|
||||
HAVE_LIB_MAGIC=@HAVE_LIB_MAGIC@
|
||||
|
3
configure
vendored
3
configure
vendored
@ -262,7 +262,7 @@ parse_options $1
|
||||
shift
|
||||
done
|
||||
|
||||
ENVWORDS="MANDIR INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR SYSCONFDIR DATADIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU PKGNAME VPATH VERSION CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS LIL_ENDIAN BIG_ENDIAN BYTEORDER HAVE_LIB_EWF HAVE_EWF HAVE_LIB_GMP HAVE_GMP HAVE_LIB_SSL HAVE_OPENSSL HAVE_LIB_LUA5_1 HAVE_LIB_TCC USERCC USEROSTYPE WITHPIC WITHNONPIC"
|
||||
ENVWORDS="MANDIR INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR SYSCONFDIR DATADIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU PKGNAME VPATH VERSION CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS LIL_ENDIAN BIG_ENDIAN BYTEORDER HAVE_LIB_EWF HAVE_EWF HAVE_LIB_GMP HAVE_GMP HAVE_LIB_MAGIC HAVE_LIB_SSL HAVE_OPENSSL HAVE_LIB_LUA5_1 HAVE_LIB_TCC USERCC USEROSTYPE WITHPIC WITHNONPIC"
|
||||
|
||||
create_environ
|
||||
|
||||
@ -350,6 +350,7 @@ HAVE_LIB_EWF="0"; fi
|
||||
check_library HAVE_LIB_GMP gmp 0
|
||||
if [ "$HAVE_GMP" = "0" ]; then
|
||||
HAVE_LIB_GMP="0"; fi
|
||||
check_library HAVE_LIB_MAGIC magic 0
|
||||
check_library HAVE_LIB_SSL ssl 0
|
||||
if [ "$HAVE_OPENSSL" = "0" ]; then
|
||||
HAVE_LIB_SSL="0"; fi
|
||||
|
@ -18,6 +18,8 @@ CHKLIB gmp
|
||||
ARG_WITHOUT HAVE_GMP gmp disable GMP dependency ;
|
||||
IFNOT HAVE_GMP { HAVE_LIB_GMP = 0 ; }
|
||||
|
||||
CHKLIB magic
|
||||
|
||||
CHKLIB ssl
|
||||
ARG_WITHOUT HAVE_OPENSSL ssl disable openssl dependency ;
|
||||
IFNOT HAVE_OPENSSL { HAVE_LIB_SSL = 0 ; }
|
||||
|
@ -11,3 +11,7 @@ CFLAGS+=-DPREFIX=\"${PREFIX}\"
|
||||
LDFLAGS+=${DL_LIBS}
|
||||
|
||||
include ../rules.mk
|
||||
|
||||
ifeq ($(HAVE_LIB_MAGIC),1)
|
||||
LDFLAGS+=-lmagic
|
||||
endif
|
||||
|
@ -11,6 +11,9 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdarg.h>
|
||||
#if HAVE_LIB_MAGIC
|
||||
#include <magic.h>
|
||||
#endif
|
||||
|
||||
static int printzoomcallback(void *user, int mode, ut64 addr, ut8 *bufz, ut64 size) {
|
||||
RCore *core = (RCore *) user;
|
||||
@ -1094,7 +1097,7 @@ static int cmd_yank(void *data, const char *input) {
|
||||
r_core_yank_paste (core, r_num_math(core->num, input+2), 0);
|
||||
break;
|
||||
case 'p':
|
||||
r_cons_memcat (core->yank, core->yank_len);
|
||||
r_cons_memcat ((const char*)core->yank, core->yank_len);
|
||||
r_cons_newline ();
|
||||
break;
|
||||
case 't':
|
||||
@ -1675,6 +1678,20 @@ static int cmd_info(void *data, const char *input) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void do_magic_here(RCore *core, const char *file) {
|
||||
#if HAVE_LIB_MAGIC
|
||||
magic_t ck;
|
||||
if (*file == ' ') file++;
|
||||
if (!*file) file = NULL;
|
||||
ck = magic_open (0);
|
||||
magic_load (ck, file);
|
||||
r_cons_printf ("%s\n", magic_buffer (ck, core->block, core->blocksize));
|
||||
magic_close (ck);
|
||||
#else
|
||||
eprintf ("Compiled without magic :(\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
static int cmd_print(void *data, const char *input) {
|
||||
RCore *core = (RCore *)data;
|
||||
int i, l, len = core->blocksize;
|
||||
@ -1750,11 +1767,18 @@ static int cmd_print(void *data, const char *input) {
|
||||
} else r_print_disasm (core->print, core, core->offset, core->block, len, l);
|
||||
break;
|
||||
case 's':
|
||||
r_print_string (core->print, core->offset, core->block, len, 0, 1, 0); //, 78, 1);
|
||||
if (input[1]=='p') {
|
||||
int mylen = core->block[0];
|
||||
// TODO: add support for 2-4 byte length pascal strings
|
||||
r_print_string (core->print, core->offset, core->block+1, mylen, 0, 1, 0); //, 78, 1);
|
||||
} else r_print_string (core->print, core->offset, core->block, len, 0, 1, 0); //, 78, 1);
|
||||
break;
|
||||
case 'S':
|
||||
r_print_string (core->print, core->offset, core->block, len, 1, 1, 0); //, 78, 1);
|
||||
break;
|
||||
case 'm':
|
||||
do_magic_here (core, input+1);
|
||||
break;
|
||||
case 'u':
|
||||
r_print_string (core->print, core->offset, core->block, len, 0, 1, 1); //, 78, 1);
|
||||
break;
|
||||
@ -1798,7 +1822,7 @@ static int cmd_print(void *data, const char *input) {
|
||||
case '8':
|
||||
r_print_bytes (core->print, core->block, len, "%02x");
|
||||
break;
|
||||
case 'm':
|
||||
case 'f':
|
||||
r_print_format (core->print, core->offset, core->block, len, input+1);
|
||||
break;
|
||||
case 'n': // easter penis
|
||||
@ -1863,8 +1887,10 @@ static int cmd_print(void *data, const char *input) {
|
||||
" pD [len] disassemble N bytes\n"
|
||||
" po [len] octal dump of N bytes\n"
|
||||
" pc [len] output C format\n"
|
||||
" pm [fmt] print formatted memory\n" // TODO: rename to pf??
|
||||
" pf [fmt] print formatted data\n"
|
||||
" pm [magic] print libmagic data\n"
|
||||
" ps [len] print string\n"
|
||||
" psp print pascal string\n"
|
||||
" pS [len] print wide string\n"
|
||||
" pt [len] print diferent timestamps\n"
|
||||
" pr [len] print N raw bytes\n"
|
||||
|
@ -12,6 +12,7 @@
|
||||
#define PREFIX "@PREFIX@"
|
||||
|
||||
#define R2_VERSION "@VERSION@"
|
||||
#define HAVE_LIB_MAGIC @HAVE_LIB_MAGIC@
|
||||
|
||||
#define CPU_ENDIAN @BIG_ENDIAN@
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user