Wireshark-dev: [Wireshark-dev] [PATCH] Display TCP streams as Python strings
From: Jeremy Jethro <jjethro@xxxxxxxx>
Date: Fri, 15 Jun 2007 05:18:04 -0400
diff -Naur wireshark-0.99.5/gtk/follow_dlg.c wireshark-0.99.5-pkts2python/gtk/follow_dlg.c
--- wireshark-0.99.5/gtk/follow_dlg.c 2007-02-01 17:55:20.000000000 -0500
+++ wireshark-0.99.5-pkts2python/gtk/follow_dlg.c 2007-06-14 16:06:28.000000000 -0400
@@ -87,6 +87,7 @@
SHOW_EBCDIC,
SHOW_HEXDUMP,
SHOW_CARRAY,
+ SHOW_PYTHONSTR,
SHOW_RAW
} show_type_t;
@@ -99,6 +100,7 @@
GtkWidget *ebcdic_bt;
GtkWidget *hexdump_bt;
GtkWidget *carray_bt;
+ GtkWidget *pythonstr_bt;
GtkWidget *raw_bt;
GtkWidget *follow_save_as_w;
#if GTK_MAJOR_VERSION >= 2
@@ -470,6 +472,19 @@
follow_info);
follow_info->carray_bt = radio_bt;
+ /* Python string radio button */
+ radio_bt = gtk_radio_button_new_with_label(gtk_radio_button_group
+ (GTK_RADIO_BUTTON(radio_bt)),
+ "Python String");
+ gtk_tooltips_set_tip (tooltips, radio_bt, "Stream data output in \"Python String\" format", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_bt), FALSE);
+ gtk_box_pack_start(GTK_BOX(hbox), radio_bt, FALSE, FALSE, 0);
+ SIGNAL_CONNECT(radio_bt, "toggled", follow_charset_toggle_cb,
+ follow_info);
+ follow_info->pythonstr_bt = radio_bt;
+
+
+
/* Raw radio button */
radio_bt = gtk_radio_button_new_with_label(gtk_radio_button_group
(GTK_RADIO_BUTTON(radio_bt)),
@@ -596,6 +611,8 @@
follow_info->show_type = SHOW_HEXDUMP;
else if (w == follow_info->carray_bt)
follow_info->show_type = SHOW_CARRAY;
+ else if (w == follow_info->pythonstr_bt)
+ follow_info->show_type = SHOW_PYTHONSTR;
else if (w == follow_info->ascii_bt)
follow_info->show_type = SHOW_ASCII;
else if (w == follow_info->raw_bt)
@@ -650,6 +667,9 @@
size_t nchars;
static const gchar hexchars[16] = "0123456789abcdef";
+ int issrvfirstline = 1;
+ int iscltfirstline = 1;
+
iplen = (follow_info->is_ipv6) ? 16 : 4;
data_out_file = eth_fopen(follow_info->data_out_filename, "rb");
@@ -804,7 +824,71 @@
goto print_error;
}
break;
+
+ case SHOW_PYTHONSTR:
+
+ current_pos = 0;
+ issrvfirstline = 1;
+ iscltfirstline = 1;
+
+ while (current_pos < nchars) {
+ gchar hexbuf[256];
+ int i, cur;
+
+ cur = 0;
+
+ if (is_server && issrvfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_1_%d = ", server_packet_count);
+ if (is_server && !issrvfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_1_%d += ", server_packet_count);
+
+ if (!is_server && iscltfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_0_%d = ", client_packet_count);
+ if (!is_server && !iscltfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_0_%d += ", client_packet_count);
+
+ cur = strlen(hexbuf);
+ hexbuf[cur++] = '"';
+
+ for (i = 0; i < 8 && current_pos + i < nchars; i++) {
+ hexbuf[cur++] = '\\';
+ hexbuf[cur++] = 'x';
+ hexbuf[cur++] =
+ hexchars[(buffer[current_pos + i] & 0xf0) >> 4];
+ hexbuf[cur++] =
+ hexchars[buffer[current_pos + i] & 0x0f];
+ }
+
+ current_pos += i;
+ (*global_pos) += i;
+
+ hexbuf[cur++] = '"';
+ hexbuf[cur++] = '\n';
+ hexbuf[cur] = 0;
+
+ if (!(*print_line) (hexbuf, strlen(hexbuf), is_server, arg))
+ goto print_error;
+
+ if (is_server)
+ issrvfirstline = 0;
+ else
+ iscltfirstline = 0;
+
+ }
+
+ if (is_server)
+ server_packet_count++;
+ else
+ client_packet_count++;
+
+ break;
+
}
+
}
}
}
diff -Naur wireshark-0.99.5/gtk/ssl-dlg.c wireshark-0.99.5-pkts2python/gtk/ssl-dlg.c
--- wireshark-0.99.5/gtk/ssl-dlg.c 2007-02-01 17:55:13.000000000 -0500
+++ wireshark-0.99.5-pkts2python/gtk/ssl-dlg.c 2007-06-14 16:06:30.000000000 -0400
@@ -75,6 +75,7 @@
SHOW_ASCII,
SHOW_HEXDUMP,
SHOW_CARRAY,
+ SHOW_PYTHONSTR,
SHOW_RAW
} show_type_t;
@@ -86,6 +87,7 @@
GtkWidget *ebcdic_bt;
GtkWidget *hexdump_bt;
GtkWidget *carray_bt;
+ GtkWidget *pythonstr_bt;
GtkWidget *raw_bt;
GtkWidget *follow_save_as_w;
#if GTK_MAJOR_VERSION >= 2
@@ -453,6 +455,19 @@
follow_info);
follow_info->carray_bt = radio_bt;
+ /* Python string radio button */
+ radio_bt = gtk_radio_button_new_with_label(gtk_radio_button_group
+ (GTK_RADIO_BUTTON(radio_bt)),
+ "Python String");
+ gtk_tooltips_set_tip (tooltips, radio_bt,
+ "Stream data output in \"Python String\" format", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_bt), FALSE);
+ gtk_box_pack_start(GTK_BOX(hbox), radio_bt, FALSE, FALSE, 0);
+ SIGNAL_CONNECT(radio_bt, "toggled", follow_charset_toggle_cb,
+ follow_info);
+ follow_info->pythonstr_bt = radio_bt;
+
+
/* Raw radio button */
radio_bt = gtk_radio_button_new_with_label(gtk_radio_button_group
(GTK_RADIO_BUTTON(radio_bt)),
@@ -576,6 +591,8 @@
follow_info->show_type = SHOW_HEXDUMP;
else if (w == follow_info->carray_bt)
follow_info->show_type = SHOW_CARRAY;
+ else if (w == follow_info->pythonstr_bt)
+ follow_info->show_type = SHOW_PYTHONSTR;
else if (w == follow_info->ascii_bt)
follow_info->show_type = SHOW_ASCII;
else if (w == follow_info->raw_bt)
@@ -625,6 +642,9 @@
static const gchar hexchars[16] = "0123456789abcdef";
GList* cur;
+ int issrvfirstline = 1;
+ int iscltfirstline = 1;
+
iplen = (follow_info->is_ipv6) ? 16 : 4;
for (cur = follow_info->ssl_decrypted_data; cur; cur = g_list_next(cur)) {
@@ -754,6 +774,68 @@
goto print_error;
}
break;
+
+ case SHOW_PYTHONSTR:
+
+ current_pos = 0;
+ issrvfirstline = 1;
+ iscltfirstline = 1;
+
+ while (current_pos < nchars) {
+ gchar hexbuf[256];
+ int i, cur;
+
+ cur = 0;
+
+ if (rec->is_server && issrvfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_1_%d = ", server_packet_count);
+ if (rec->is_server && !issrvfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_1_%d += ", server_packet_count);
+
+ if (!rec->is_server && iscltfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_0_%d = ", client_packet_count);
+ if (!rec->is_server && !iscltfirstline)
+ g_snprintf(hexbuf, sizeof(hexbuf),
+ "peer_0_%d += ", client_packet_count);
+
+ cur = strlen(hexbuf);
+ hexbuf[cur++] = '"';
+
+ for (i = 0; i < 8 && current_pos + i < nchars; i++) {
+ hexbuf[cur++] = '\\';
+ hexbuf[cur++] = 'x';
+ hexbuf[cur++] =
+ hexchars[(buffer[current_pos + i] & 0xf0) >> 4];
+ hexbuf[cur++] =
+ hexchars[buffer[current_pos + i] & 0x0f];
+ }
+
+ current_pos += i;
+ (*global_pos) += i;
+
+ hexbuf[cur++] = '"';
+ hexbuf[cur++] = '\n';
+ hexbuf[cur] = 0;
+
+ if (!(*print_line) (hexbuf, strlen(hexbuf), rec->is_server, arg))
+ goto print_error;
+
+ if (rec->is_server)
+ issrvfirstline = 0;
+ else
+ iscltfirstline = 0;
+ }
+
+ if (rec->is_server)
+ server_packet_count++;
+ else
+ client_packet_count++;
+
+ break;
+
}
}
}
- Prev by Date: Re: [Wireshark-dev] Fwd: [PATCH] FTBP: ContentsTypeParameter andRelationship are OPTIONAL
- Next by Date: Re: [Wireshark-dev] Using pipes on Windows
- Previous by thread: Re: [Wireshark-dev] FW: [Wireshark-commits] rev 22100: /trunk/epan/dissectors/ /trunk/epan/dissectors/: packet-catapult-dct2000.c
- Next by thread: [Wireshark-dev] Problem with font - there are squers
- Index(es):