diff --git a/misc.c b/misc.c index 8968fc22..c398c213 100644 --- a/misc.c +++ b/misc.c @@ -334,6 +334,7 @@ void dprintf(char *fmt, ...) { void debug_memdump (void *buf, int len, int L) { int i; unsigned char *p = buf; + char foo[17]; if (L) { int delta; dprintf ("\t%d (0x%x) bytes:\n", len, len); @@ -342,20 +343,25 @@ void debug_memdump (void *buf, int len, int L) { len += delta; } for (; 0 < len; p += 16, len -= 16) { - dputs ("\t"); - if (L) dprintf ("%p: ", p); + dputs (" "); + if (L) dprintf ("%p: ", p); + strcpy(foo, "................"); /* sixteen dots */ for (i = 0; i < 16 && i < len; ++i) { if (&p[i] < (unsigned char *) buf) { dputs (" "); /* 3 spaces */ + foo[i] = ' '; } else { dprintf ( "%c%02.2x", &p[i] != (unsigned char *) buf && i % 4 ? '.' : ' ', p[i] ); + if (p[i] >= ' ' && p[i] <= '~') + foo[i] = (char)p[i]; } } - dputs ("\n"); + foo[i] = '\0'; + dprintf("%*s%s\n", (16-i)*3+2, "", foo); } } diff --git a/pageant.c b/pageant.c index 2d0b15ee..50ac337d 100644 --- a/pageant.c +++ b/pageant.c @@ -1095,11 +1095,11 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message, if (mapname[cds->cbData - 1] != '\0') return 0; /* failure to be ASCIZ! */ #ifdef DEBUG_IPC - debug(("mapname is :%s:\r\n", mapname)); + debug(("mapname is :%s:\n", mapname)); #endif filemap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, mapname); #ifdef DEBUG_IPC - debug(("filemap is %p\r\n", filemap)); + debug(("filemap is %p\n", filemap)); #endif if (filemap != NULL && filemap != INVALID_HANDLE_VALUE) { int rc; @@ -1108,7 +1108,7 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message, if ((proc = OpenProcess(MAXIMUM_ALLOWED, FALSE, GetCurrentProcessId())) == NULL) { #ifdef DEBUG_IPC - debug(("couldn't get handle for process\r\n")); + debug(("couldn't get handle for process\n")); #endif return 0; } @@ -1117,7 +1117,7 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message, &procowner, NULL, NULL, NULL, &psd2) != ERROR_SUCCESS) { #ifdef DEBUG_IPC - debug(("couldn't get owner info for process\r\n")); + debug(("couldn't get owner info for process\n")); #endif CloseHandle(proc); return 0; /* unable to get security info */ @@ -1128,30 +1128,30 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message, &mapowner, NULL, NULL, NULL, &psd1) != ERROR_SUCCESS)) { #ifdef DEBUG_IPC - debug(("couldn't get owner info for filemap: %d\r\n", rc)); + debug(("couldn't get owner info for filemap: %d\n", rc)); #endif return 0; } #ifdef DEBUG_IPC - debug(("got security stuff\r\n")); + debug(("got security stuff\n")); #endif if (!EqualSid(mapowner, procowner)) return 0; /* security ID mismatch! */ #ifdef DEBUG_IPC - debug(("security stuff matched\r\n")); + debug(("security stuff matched\n")); #endif LocalFree(psd1); LocalFree(psd2); } else { #ifdef DEBUG_IPC - debug(("security APIs not present\r\n")); + debug(("security APIs not present\n")); #endif } #endif p = MapViewOfFile(filemap, FILE_MAP_WRITE, 0, 0, 0); #ifdef DEBUG_IPC - debug(("p is %p\r\n", p)); - {int i; for(i=0;i<5;i++)debug(("p[%d]=%02x\r\n", i, ((unsigned char *)p)[i]));} + debug(("p is %p\n", p)); + {int i; for(i=0;i<5;i++)debug(("p[%d]=%02x\n", i, ((unsigned char *)p)[i]));} #endif answer_msg(p); ret = 1; diff --git a/ssh.c b/ssh.c index f48d1426..b3be8e46 100644 --- a/ssh.c +++ b/ssh.c @@ -15,6 +15,9 @@ #define TRUE 1 #endif +/* uncomment this for packet level debugging */ +/* #define DUMP_PACKETS */ + #define logevent(s) { logevent(s); \ if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) \ { fprintf(stderr, "%s\n", s); fflush(stderr); } } @@ -487,11 +490,9 @@ next_packet: if (cipher) cipher->decrypt(pktin.data, st->biglen); -#if 0 - debug(("Got packet len=%d pad=%d\r\n", st->len, st->pad)); - for (st->i = 0; st->i < st->biglen; st->i++) - debug((" %02x", (unsigned char)pktin.data[st->i])); - debug(("\r\n")); +#ifdef DUMP_PACKETS + debug(("Got packet len=%d pad=%d\n", st->len, st->pad)); + dmemdump(pktin.data, st->biglen); #endif st->realcrc = crc32(pktin.data, st->biglen-4); @@ -506,14 +507,9 @@ next_packet: if (ssh1_compressing) { unsigned char *decompblk; int decomplen; -#if 0 - { - int i; - debug(("Packet payload pre-decompression:\n")); - for (i = -1; i < pktin.length; i++) - debug((" %02x", (unsigned char)pktin.body[i])); - debug(("\r\n")); - } +#ifdef DUMP_PACKETS + debug(("Packet payload pre-decompression:\n")); + dmemdump(pktin.body-1, pktin.length+1); #endif zlib_decompress_block(pktin.body-1, pktin.length+1, &decompblk, &decomplen); @@ -529,14 +525,9 @@ next_packet: memcpy(pktin.body-1, decompblk, decomplen); sfree(decompblk); pktin.length = decomplen-1; -#if 0 - { - int i; - debug(("Packet payload post-decompression:\n")); - for (i = -1; i < pktin.length; i++) - debug((" %02x", (unsigned char)pktin.body[i])); - debug(("\r\n")); - } +#ifdef DUMP_PACKETS + debug(("Packet payload post-decompression:\n")); + dmemdump(pktin.body-1, pktin.length+1); #endif } @@ -672,11 +663,9 @@ next_packet: sccipher->decrypt(pktin.data + st->cipherblk, st->packetlen - st->cipherblk); -#if 0 - debug(("Got packet len=%d pad=%d\r\n", st->len, st->pad)); - for (st->i = 0; st->i < st->packetlen; st->i++) - debug((" %02x", (unsigned char)pktin.data[st->i])); - debug(("\r\n")); +#ifdef DUMP_PACKETS + debug(("Got packet len=%d pad=%d\n", st->len, st->pad)); + dmemdump(pktin.data, st->packetlen); #endif /* @@ -705,11 +694,9 @@ next_packet: } pktin.length = 5 + newlen; memcpy(pktin.data+5, newpayload, newlen); -#if 0 - debug(("Post-decompression payload:\r\n")); - for (st->i = 0; st->i < newlen; st->i++) - debug((" %02x", (unsigned char)pktin.data[5+st->i])); - debug(("\r\n")); +#ifdef DUMP_PACKETS + debug(("Post-decompression payload:\n")); + dmemdump(pktin.data+5, newlen); #endif sfree(newpayload); @@ -783,11 +770,9 @@ static int s_wrpkt_prepare(void) { pktout.body[-1] = pktout.type; -#if 0 +#ifdef DUMP_PACKETS debug(("Packet payload pre-compression:\n")); - for (i = -1; i < pktout.length; i++) - debug((" %02x", (unsigned char)pktout.body[i])); - debug(("\r\n")); + dmemdump(pktout.body-1, pktout.length+1); #endif if (ssh1_compressing) { @@ -798,11 +783,9 @@ static int s_wrpkt_prepare(void) { ssh1_pktout_size(complen-1); memcpy(pktout.body-1, compblk, complen); sfree(compblk); -#if 0 +#ifdef DUMP_PACKETS debug(("Packet payload post-compression:\n")); - for (i = -1; i < pktout.length; i++) - debug((" %02x", (unsigned char)pktout.body[i])); - debug(("\r\n")); + dmemdump(pktout.body-1, pktout.length+1); #endif } @@ -816,11 +799,9 @@ static int s_wrpkt_prepare(void) { PUT_32BIT(pktout.data+biglen, crc); PUT_32BIT(pktout.data, len); -#if 0 - debug(("Sending packet len=%d\r\n", biglen+4)); - for (i = 0; i < biglen+4; i++) - debug((" %02x", (unsigned char)pktout.data[i])); - debug(("\r\n")); +#ifdef DUMP_PACKETS + debug(("Sending packet len=%d\n", biglen+4)); + dmemdump(pktout.data, biglen+4); #endif if (cipher) cipher->encrypt(pktout.data+4, biglen); @@ -1058,11 +1039,9 @@ static int ssh2_pkt_construct(void) { /* * Compress packet payload. */ -#if 0 - debug(("Pre-compression payload:\r\n")); - for (i = 5; i < pktout.length; i++) - debug((" %02x", (unsigned char)pktout.data[i])); - debug(("\r\n")); +#ifdef DUMP_PACKETS + debug(("Pre-compression payload:\n")); + dmemdump(pktout.data+5, pktout.length-5); #endif { unsigned char *newpayload; @@ -1094,11 +1073,9 @@ static int ssh2_pkt_construct(void) { outgoing_sequence); outgoing_sequence++; /* whether or not we MACed */ -#if 0 - debug(("Sending packet len=%d\r\n", pktout.length+padding)); - for (i = 0; i < pktout.length+padding; i++) - debug((" %02x", (unsigned char)pktout.data[i])); - debug(("\r\n")); +#ifdef DUMP_PACKETS + debug(("Sending packet len=%d\n", pktout.length+padding)); + dmemdump(pktout.data, pktout.length+padding); #endif if (cscipher) @@ -1156,7 +1133,7 @@ void bndebug(char *string, Bignum b) { debug(("%s", string)); for (i = 0; i < len; i++) debug((" %02x", p[i])); - debug(("\r\n")); + debug(("\n")); sfree(p); } #endif @@ -2782,10 +2759,8 @@ static int do_ssh2_transport(unsigned char *in, int inlen, int ispkt) dh_cleanup(); #if 0 - debug(("Exchange hash is:\r\n")); - for (i = 0; i < 20; i++) - debug((" %02x", exchange_hash[i])); - debug(("\r\n")); + debug(("Exchange hash is:\n")); + dmemdump(exchange_hash, 20); #endif hkey = hostkey->newkey(hostkeydata, hostkeylen);