|
@@ -925,6 +925,60 @@ class Statistics:
|
|
|
plt.savefig(out, dpi=500)
|
|
|
return out
|
|
|
|
|
|
+ def plot_packets_per_connection(file_ending: str):
|
|
|
+ plt.gcf().clear()
|
|
|
+ result = self.stats_db._process_user_defined_query(
|
|
|
+ "SELECT ipAddressA, portA, ipAddressB, portB, pktsCount FROM conv_statistics")
|
|
|
+ if (result):
|
|
|
+ graphy, graphx = [], []
|
|
|
+
|
|
|
+ result = sorted(result, key=lambda row: row[4])
|
|
|
+
|
|
|
+
|
|
|
+ for i, row in enumerate(result):
|
|
|
+ addr1, addr2 = "%s:%d" % (row[0], row[1]), "%s:%d" % (row[2], row[3])
|
|
|
+
|
|
|
+ len_max = max(len(addr1), len(addr2))
|
|
|
+ addr1 = addr1.ljust(len_max)
|
|
|
+ addr2 = addr2.ljust(len_max)
|
|
|
+
|
|
|
+ graphy.append("%s\n%s" % (addr1, addr2))
|
|
|
+ graphx.append(row[4])
|
|
|
+
|
|
|
+
|
|
|
+ dist_mult_height, dist_mult_width = 0.55, 0.07
|
|
|
+ plt_height, plt_width = len(graphy) * dist_mult_height, max(graphx) * dist_mult_width
|
|
|
+ title_distance = 1 + 0.012*52.8/plt_height
|
|
|
+
|
|
|
+
|
|
|
+ fig, ax = plt.subplots()
|
|
|
+ ax.xaxis.tick_top()
|
|
|
+ ax.xaxis.set_label_position("top")
|
|
|
+
|
|
|
+
|
|
|
+ plt.title("Sent packets per connection", y=title_distance)
|
|
|
+ plt.xlabel('Number of Packets')
|
|
|
+ plt.ylabel('Connection')
|
|
|
+ width = 0.5
|
|
|
+ plt.grid(True)
|
|
|
+ plt.gca().margins(y=0)
|
|
|
+ plt.gcf().set_size_inches(plt_width, plt_height)
|
|
|
+
|
|
|
+
|
|
|
+ plt.barh(range(len(graphy)), graphx, width, align='center', linewidth=1, color='red', edgecolor='red')
|
|
|
+
|
|
|
+ plt.yticks(range(len(graphy)), graphy)
|
|
|
+
|
|
|
+ plt.tight_layout(pad=4)
|
|
|
+
|
|
|
+
|
|
|
+ out = self.pcap_filepath.replace('.pcap', '_plot-connection' + file_ending)
|
|
|
+ plt.savefig(out, dpi=500)
|
|
|
+ return out
|
|
|
+ else:
|
|
|
+ print("Error plot protocol: No protocol values found!")
|
|
|
+
|
|
|
+
|
|
|
ttl_out_path = plot_ttl('.' + format)
|
|
|
mss_out_path = plot_mss('.' + format)
|
|
|
win_out_path = plot_win('.' + format)
|
|
@@ -940,6 +994,7 @@ class Statistics:
|
|
|
plot_interval_new_tos = plot_interval_new_tos('.' + format)
|
|
|
plot_interval_new_win_size = plot_interval_new_win_size('.' + format)
|
|
|
plot_interval_new_mss = plot_interval_new_mss('.' + format)
|
|
|
+ plot_packets_per_connection_out = plot_packets_per_connection('.' + format)
|
|
|
|
|
|
|
|
|
|