From 5b756ebd0a59088854943faa712d1372e096f3c0 Mon Sep 17 00:00:00 2001 From: orbitarm Date: Wed, 3 May 2017 15:45:30 -0400 Subject: [PATCH 1/2] verbose: dump hex value of packet uses the hexdump() function to display the hex value of each probed packet, making it easy to create regex rules for unsupported connections --- probe.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/probe.c b/probe.c index 9b4a63e..29ac913 100644 --- a/probe.c +++ b/probe.c @@ -297,6 +297,13 @@ int probe_client_protocol(struct connection *cnx) * happens, we just connect to the default protocol so the caller of this * function does not have to deal with a specific failure condition (the * connection will just fail later normally). */ + + /* Dump hex values of the packet */ + if (verbose) { + fprintf(stderr, "hexdump of incoming packet:\n"); + hexdump(buffer, n); + } + if (n > 0) { int res = PROBE_NEXT; From 64485d7a58eb756527a2ae16dde1e65ee694e132 Mon Sep 17 00:00:00 2001 From: Robert de Bath Date: Sat, 22 Jul 2017 07:54:21 +0100 Subject: [PATCH 2/2] Send hexdump to stderr like other verbose logs. --- probe.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/probe.c b/probe.c index 29ac913..016aef3 100644 --- a/probe.c +++ b/probe.c @@ -107,25 +107,25 @@ void hexdump(const char *mem, unsigned int len) { /* print offset */ if(i % HEXDUMP_COLS == 0) - printf("0x%06x: ", i); + fprintf(stderr, "0x%06x: ", i); /* print hex data */ if(i < len) - printf("%02x ", 0xFF & mem[i]); + fprintf(stderr, "%02x ", 0xFF & mem[i]); else /* end of block, just aligning for ASCII dump */ - printf(" "); + fprintf(stderr, " "); /* print ASCII dump */ if(i % HEXDUMP_COLS == (HEXDUMP_COLS - 1)) { for(j = i - (HEXDUMP_COLS - 1); j <= i; j++) { if(j >= len) /* end of block, not really printing */ - putchar(' '); + fputc(' ', stderr); else if(isprint(mem[j])) /* printable char */ - putchar(0xFF & mem[j]); + fputc(0xFF & mem[j], stderr); else /* other char */ - putchar('.'); + fputc('.', stderr); } - putchar('\n'); + fputc('\n', stderr); } } }