diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-11-16 11:35:01 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-11-16 11:35:01 +0000 |
commit | ac50d3b3162d354dbb61ee090c1e509ae122bd5b (patch) | |
tree | 122c265c57cd277d743ff5a3f73f59dc9625bb2b /epan | |
parent | c1e5be52ade7ed16249c17937643c9167bc9b6af (diff) |
From Dirk:
print decrypted SSL application data as hexdump in ssl debug file.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7975
svn path=/trunk/; revision=46040
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-dtls.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-ssl-utils.c | 30 | ||||
-rw-r--r-- | epan/dissectors/packet-ssl-utils.h | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-ssl.c | 2 |
4 files changed, 13 insertions, 24 deletions
diff --git a/epan/dissectors/packet-dtls.c b/epan/dissectors/packet-dtls.c index af485b0c26..4747d98317 100644 --- a/epan/dissectors/packet-dtls.c +++ b/epan/dissectors/packet-dtls.c @@ -950,7 +950,7 @@ dissect_dtls_record(tvbuff_t *tvb, packet_info *pinfo, /* find out a dissector using server port*/ if (association && association->handle) { ssl_debug_printf("dissect_dtls_record found association %p\n", (void *)association); - ssl_print_text_data("decrypted app data",appl_data->plain_data.data, appl_data->plain_data.data_len); + ssl_print_data("decrypted app data",appl_data->plain_data.data, appl_data->plain_data.data_len); dissected = call_dissector_only(association->handle, next_tvb, pinfo, top_tree, NULL); } diff --git a/epan/dissectors/packet-ssl-utils.c b/epan/dissectors/packet-ssl-utils.c index 41b062cf89..99034df4dc 100644 --- a/epan/dissectors/packet-ssl-utils.c +++ b/epan/dissectors/packet-ssl-utils.c @@ -29,6 +29,7 @@ #include <zlib.h> #endif +#include <ctype.h> #include "packet-ssl-utils.h" #include "packet-ssl.h" @@ -3901,31 +3902,22 @@ ssl_debug_printf(const gchar* fmt, ...) } void -ssl_print_text_data(const gchar* name, const guchar* data, size_t len) -{ - size_t i; - if (!ssl_debug_file) - return; - fprintf(ssl_debug_file,"%s: ",name); - for (i=0; i< len; i++) { - fprintf(ssl_debug_file,"%c",data[i]); - } - fprintf(ssl_debug_file,"\n"); -} - -void ssl_print_data(const gchar* name, const guchar* data, size_t len) { - size_t i; + size_t i, j, k; if (!ssl_debug_file) return; fprintf(ssl_debug_file,"%s[%d]:\n",name, (int) len); - for (i=0; i< len; i++) { - if ((i > 0) && (i%16 == 0)) - fprintf(ssl_debug_file,"\n"); - fprintf(ssl_debug_file,"%.2x ",data[i]&255); + for (i=0; i<len; i+=16) { + for (j=i, k=0; k<16 && j<len; ++j, ++k) + fprintf(ssl_debug_file,"%.2x ",data[j]); + for (; k<16; ++k) + fprintf(ssl_debug_file," "); + fprintf(ssl_debug_file,"|"); + for (j=i, k=0; k<16 && j<len; ++j, ++k) + fprintf(ssl_debug_file,"%c",isprint(data[j]) ? data[j] : '.'); + fprintf(ssl_debug_file,"|\n"); } - fprintf(ssl_debug_file,"\n"); } void diff --git a/epan/dissectors/packet-ssl-utils.h b/epan/dissectors/packet-ssl-utils.h index 2f326745a7..3d3a65e63a 100644 --- a/epan/dissectors/packet-ssl-utils.h +++ b/epan/dissectors/packet-ssl-utils.h @@ -548,8 +548,6 @@ ssl_print_data(const gchar* name, const guchar* data, size_t len); extern void ssl_print_string(const gchar* name, const StringInfo* data); extern void -ssl_print_text_data(const gchar* name, const guchar* data, size_t len); -extern void ssl_set_debug(const gchar* name); extern void ssl_debug_flush(void); @@ -562,7 +560,6 @@ ssl_debug_printf(const gchar* fmt _U_,...) } #define ssl_print_data(a, b, c) #define ssl_print_string(a, b) -#define ssl_print_text_data(a, b, c) #define ssl_set_debug(name) #define ssl_debug_flush() diff --git a/epan/dissectors/packet-ssl.c b/epan/dissectors/packet-ssl.c index 95ea4ed29b..2aa9c3cff0 100644 --- a/epan/dissectors/packet-ssl.c +++ b/epan/dissectors/packet-ssl.c @@ -1365,7 +1365,7 @@ dissect_ssl_payload(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t /* try to dissect decrypted data*/ ssl_debug_printf("dissect_ssl3_record decrypted len %d\n", appl_data->plain_data.data_len); - ssl_print_text_data("decrypted app data fragment", appl_data->plain_data.data, appl_data->plain_data.data_len); + ssl_print_data("decrypted app data fragment", appl_data->plain_data.data, appl_data->plain_data.data_len); /* create a new TVB structure for desegmented data */ next_tvb = tvb_new_child_real_data(tvb, appl_data->plain_data.data, appl_data->plain_data.data_len, appl_data->plain_data.data_len); |