@@ -22,13 +22,16 @@ def __init__(self, flow_type, min_window_size=2):
2222 "Avg_pkts_lenght" , "Min_pkts_lenght" , "Max_pkts_lenght" , "StDev_pkts_lenght" , "Avg_small_payload_pkt" , "Avg_payload" , "Min_payload" ,
2323 "Max_payload" , "StDev_payload" , "Avg_DNS_over_TCP" , "Label" ]
2424
25+ self .total_packets = 0
26+ self .nb_samples = 0
27+
2528 def compute_features (self , packets_list ):
2629
27- if ( len ( packets_list ) < self . get_min_window_size () ):
28- print ( " \n Numero di paccheti troppo basso \n " )
29- return
30- else :
31- pass
30+ def increment_sample_nb ( nb ):
31+ self . nb_samples += nb
32+
33+ def update_received_pkts ( nb ) :
34+ self . total_packets += nb
3235
3336 def compute_avg (list_of_values ):
3437 if (len (list_of_values ) == 0 ):
@@ -102,15 +105,6 @@ def DNS_over_TCP_ratio(packets_list):
102105 def compute_duration_flow (packets_list ):
103106 return packets_list [len (packets_list ) - 1 ].time - packets_list [0 ].time
104107
105- # Calcola la grandezza in byte della lista di pacchetti
106- def window_bytes_lenght (packets_list ):
107- total_lenght = []
108- lenght = 0.0
109- pkt_lenght_list = packets_bytes_lenght (packets_list )
110- for pkt_lenght in pkt_lenght_list :
111- lenght += pkt_lenght
112- return total_lenght .append (float (lenght ))
113-
114108 # Calcola la grandezza in byte di ogni pacchetto in una lista di pacchetti
115109 def packets_bytes_lenght (packets_list ):
116110 pkt_lenght_list = []
@@ -271,40 +265,50 @@ def compute_tcp_flags(packets_list):
271265 rst_counter .append (0.0 )
272266 return (syn_counter , fin_counter , ack_counter , psh_counter , urg_counter , rst_counter )
273267
274- syn_lst , fin_lst , ack_lst , psh_lst , urg_lst , rst_lst = compute_tcp_flags (packets_list )
275-
276- syn_avg = compute_avg (syn_lst )
277- fin_avg = compute_avg (fin_lst )
278- ack_avg = compute_avg (ack_lst )
279- psh_avg = compute_avg (psh_lst )
280- urg_avg = compute_avg (urg_lst )
281- rst_avg = compute_avg (rst_lst )
282-
283- durationFlow = compute_duration_flow (packets_list )
284- avgTimeFlow = compute_avg (compute_delta_time (packets_list ))
285- minTimeFlow = compute_min (compute_delta_time (packets_list ))
286- maxTimeFlow = compute_max (compute_delta_time (packets_list ))
287- stdevTimeFlow = compute_stDev (compute_delta_time (packets_list ))
288- dns_pkt = compute_avg (compute_DNS_packets (packets_list ))
289- tcp_pkt = compute_avg (compute_TCP_packets (packets_list ))
290- udp_pkt = compute_avg (compute_UDP_packets (packets_list ))
291- icmp_pkt = compute_avg (compute_ICMP_packets (packets_list ))
292- pktLenghtAvg = compute_avg (packets_bytes_lenght (packets_list ))
293- pktLenghtMin = compute_min (packets_bytes_lenght (packets_list ))
294- pktLenghtMax = compute_max (packets_bytes_lenght (packets_list ))
295- pktLenghtStDev = compute_stDev (packets_bytes_lenght (packets_list ))
296- smallPktPayloadAvg = compute_avg (compute_packet_with_small_TCP_payload (packets_list , False ))
297- avgPayload = compute_avg (compute_packet_TCP_payload_size (packets_list , False ))
298- minPayload = compute_min (compute_packet_TCP_payload_size (packets_list , False ))
299- maxPayload = compute_max (compute_packet_TCP_payload_size (packets_list , False ))
300- stDevPayload = compute_stDev (compute_packet_TCP_payload_size (packets_list , False ))
301- dnsOverTcpRatioNormalized = compute_avg (DNS_over_TCP_ratio (packets_list ))
302-
303- row = [syn_avg , urg_avg , fin_avg , ack_avg , psh_avg , rst_avg , dns_pkt , tcp_pkt , udp_pkt , icmp_pkt , durationFlow , avgTimeFlow ,
304- minTimeFlow , maxTimeFlow , stdevTimeFlow , pktLenghtAvg , pktLenghtMin , pktLenghtMax , pktLenghtStDev , smallPktPayloadAvg ,
305- avgPayload , minPayload , maxPayload , stDevPayload , dnsOverTcpRatioNormalized , self .label ]
306- return row
307-
268+ if (len (packets_list ) < self .get_min_window_size ()):
269+ print ("\n Numero di paccheti troppo basso\n " )
270+ return None
271+ else :
272+ syn_lst , fin_lst , ack_lst , psh_lst , urg_lst , rst_lst = compute_tcp_flags (packets_list )
273+ syn_avg = compute_avg (syn_lst )
274+ fin_avg = compute_avg (fin_lst )
275+ ack_avg = compute_avg (ack_lst )
276+ psh_avg = compute_avg (psh_lst )
277+ urg_avg = compute_avg (urg_lst )
278+ rst_avg = compute_avg (rst_lst )
279+
280+ durationFlow = compute_duration_flow (packets_list )
281+ avgTimeFlow = compute_avg (compute_delta_time (packets_list ))
282+ minTimeFlow = compute_min (compute_delta_time (packets_list ))
283+ maxTimeFlow = compute_max (compute_delta_time (packets_list ))
284+ stdevTimeFlow = compute_stDev (compute_delta_time (packets_list ))
285+ dns_pkt = compute_avg (compute_DNS_packets (packets_list ))
286+ tcp_pkt = compute_avg (compute_TCP_packets (packets_list ))
287+ udp_pkt = compute_avg (compute_UDP_packets (packets_list ))
288+ icmp_pkt = compute_avg (compute_ICMP_packets (packets_list ))
289+ pktLenghtAvg = compute_avg (packets_bytes_lenght (packets_list ))
290+ pktLenghtMin = compute_min (packets_bytes_lenght (packets_list ))
291+ pktLenghtMax = compute_max (packets_bytes_lenght (packets_list ))
292+ pktLenghtStDev = compute_stDev (packets_bytes_lenght (packets_list ))
293+ smallPktPayloadAvg = compute_avg (compute_packet_with_small_TCP_payload (packets_list , False ))
294+ avgPayload = compute_avg (compute_packet_TCP_payload_size (packets_list , False ))
295+ minPayload = compute_min (compute_packet_TCP_payload_size (packets_list , False ))
296+ maxPayload = compute_max (compute_packet_TCP_payload_size (packets_list , False ))
297+ stDevPayload = compute_stDev (compute_packet_TCP_payload_size (packets_list , False ))
298+ dnsOverTcpRatioNormalized = compute_avg (DNS_over_TCP_ratio (packets_list ))
299+
300+ row = [syn_avg , urg_avg , fin_avg , ack_avg , psh_avg , rst_avg , dns_pkt , tcp_pkt , udp_pkt , icmp_pkt , durationFlow , avgTimeFlow ,
301+ minTimeFlow , maxTimeFlow , stdevTimeFlow , pktLenghtAvg , pktLenghtMin , pktLenghtMax , pktLenghtStDev , smallPktPayloadAvg ,
302+ avgPayload , minPayload , maxPayload , stDevPayload , dnsOverTcpRatioNormalized , self .label ]
303+ increment_sample_nb (1 )
304+ update_received_pkts (len (packets_list ))
305+ return row
306+
307+ def get_total_pkts (self ):
308+ return self .total_packets
309+
310+ def get_total_sample (self ):
311+ return self .nb_samples
308312
309313 def set_min_window_size (self , val ):
310314 self .min_window_size = val
0 commit comments