Browse Source

fix an argument bug

aidmar.wainakh 6 years ago
parent
commit
b518a5b38f

+ 1 - 1
code/Attack/BaseAttack.py

@@ -289,7 +289,7 @@ class BaseAttack(metaclass=ABCMeta):
         elif param_type == ParameterTypes.TYPE_BOOLEAN:
             is_valid, value = self._is_boolean(value)
         elif param_type == ParameterTypes.TYPE_PACKET_POSITION:
-            ts = pr.pcap_processor(self.statistics.pcap_filepath).get_timestamp_mu_sec(int(value))
+            ts = pr.pcap_processor(self.statistics.pcap_filepath, "False").get_timestamp_mu_sec(int(value))
             if 0 <= int(value) <= self.statistics.get_packet_count() and ts >= 0:
                 is_valid = True
                 param_name = Parameter.INJECT_AT_TIMESTAMP

+ 1 - 1
code/ID2TLib/PcapFile.py

@@ -20,7 +20,7 @@ class PcapFile(object):
         :param attack_pcap_path: The path to the PCAP file to merge with the PCAP at pcap_file_path
         :return: The file path of the resulting PCAP file
         """
-        pcap = pr.pcap_processor(self.pcap_file_path)
+        pcap = pr.pcap_processor(self.pcap_file_path, "False")
         file_out_path = pcap.merge_pcaps(attack_pcap_path)
         return file_out_path
 

+ 55 - 2
code/ID2TLib/Statistics.py

@@ -122,7 +122,7 @@ class Statistics:
                     pass  # do nothing -> value was not a float
             # round float
             if isinstance(value, float):
-                value = round(value, 2)
+                value = round(value, 4)
             # write into file
             if len(entry) == 3:
                 unit = entry[2]
@@ -140,6 +140,56 @@ class Statistics:
         Statistics.write_list(self.get_general_file_statistics(), print, "")
         print("\n")
 
+    # Aidmar
+    def get_tests_statistics(self):
+        """
+        Writes the calculated basic defects tests statistics into a file.
+        """
+        # self.stats_db._process_user_defined_query output is list of tuples, thus, we ned [0][0] to access data
+        sumPayloadCount = self.stats_db._process_user_defined_query("SELECT sum(payloadCount) FROM interval_statistics")
+        pktCount = self.stats_db._process_user_defined_query("SELECT packetCount FROM file_statistics")
+        payloadRatio=0
+        if(pktCount[0][0]!=0):
+            payloadRatio = float(sumPayloadCount[0][0] / pktCount[0][0] * 100)
+
+        incorrectChecksumCount = self.stats_db._process_user_defined_query("SELECT sum(incorrectTCPChecksumCount) FROM interval_statistics")
+        correctChecksumCount = self.stats_db._process_user_defined_query("SELECT avg(correctTCPChecksumCount) FROM interval_statistics")
+        incorrectChecksumRatio=0
+        if(incorrectChecksumCount[0][0] + correctChecksumCount[0][0])!=0:
+            incorrectChecksumRatio = float(incorrectChecksumCount[0][0]  / (incorrectChecksumCount[0][0] + correctChecksumCount[0][0] ) * 100)
+
+        def calc_normalized_avg(valuesList):
+            sumValues = 0
+            for x in valuesList: sumValues += x[0]
+            normalizedValues = []
+            for row in valuesList:
+                normalizedValues.append(float(row[0] ))#/ sumValues))
+            return float(sum(normalizedValues) / len(normalizedValues))
+
+        newIPCount = self.stats_db._process_user_defined_query("SELECT newIPCount FROM interval_statistics")
+        avgNewIPCount = calc_normalized_avg(newIPCount)
+
+        newTTLCount = self.stats_db._process_user_defined_query("SELECT newTTLCount FROM interval_statistics")
+        avgNewTTLCount = calc_normalized_avg(newTTLCount)
+
+        newWinSizeCount = self.stats_db._process_user_defined_query("SELECT newWinSizeCount FROM interval_statistics")
+        avgNewWinCount = calc_normalized_avg(newWinSizeCount)
+
+        newToSCount = self.stats_db._process_user_defined_query("SELECT newToSCount FROM interval_statistics")
+        avgNewToSCount = calc_normalized_avg(newToSCount)
+
+        newMSSCount = self.stats_db._process_user_defined_query("SELECT newMSSCount FROM interval_statistics")
+        avgNewMSSCount = calc_normalized_avg(newMSSCount)
+
+
+        return [("Payload ratio", payloadRatio, "%"),
+                ("Incorrect TCP checksum ratio", incorrectChecksumRatio, "%"),
+                ("Avg. new IP", avgNewIPCount, ""),
+                ("Avg. new TTL", avgNewTTLCount, ""),
+                ("Avg. new WinSize", avgNewWinCount, ""),
+                ("Avg. new ToS", avgNewToSCount, ""),
+                ("Avg. new MSS", avgNewMSSCount, "")]
+
     def write_statistics_to_file(self):
         """
         Writes the calculated basic statistics into a file.
@@ -164,6 +214,9 @@ class Statistics:
         _write_header("General statistics")
         Statistics.write_list(self.get_general_file_statistics(), target.write)
 
+        _write_header("Tests statistics")
+        Statistics.write_list(self.get_tests_statistics(), target.write)
+
         target.close()
 
     def get_capture_duration(self):
@@ -304,7 +357,7 @@ class Statistics:
                     any(x in value.lower().strip() for x in self.stats_db.get_all_sql_query_keywords()))
 
 
-
+    # Aidmar
     def calculate_standard_deviation(self, lst):
         """Calculates the standard deviation for a list of numbers."""
         num_items = len(lst)

+ 2 - 2
code/ID2TLib/StatsDatabase.py

@@ -60,8 +60,8 @@ class StatsDatabase:
         :return: True if the database was already existent, otherwise False
         """
         # Aidmar - for testing: return false always
-        return self.existing_db
-        #return False
+        #return self.existing_db
+        return False
 
     @staticmethod
     def _get_selector_keywords():

+ 26 - 0
code/capture_1.pcap.stat

@@ -0,0 +1,26 @@
+====================== 
+PCAP file information 
+====================== 
+Pcap file:	capture_1.pcap
+#Packets:	23211 packets
+Capture length:	32.503 seconds
+Capture start:	2017-06-12 15:40:36.142820
+Capture end:	2017-06-12 15:47:08.645789
+====================== 
+General statistics 
+====================== 
+Avg. packet rate:	714.1194 packets/sec
+Avg. packet size:	0.0 kbytes
+Avg. packets sent:	321.0 packets
+Avg. bandwidth in:	57.2475 kbit/s
+Avg. bandwidth out:	57.2475 kbit/s
+====================== 
+Tests statistics 
+====================== 
+Payload ratio:	0.0 %
+Incorrect TCP checksum ratio:	0 %
+Avg. new IP:	0.72 
+Avg. new TTL:	0.27 
+Avg. new WinSize:	0.1 
+Avg. new ToS:	0.04 
+Avg. new MSS:	0.04 

+ 1 - 1
code_boost/src/cxx/pcap_processor.cpp

@@ -192,7 +192,7 @@ void pcap_processor::process_packets(const Packet &pkt) {
     const PDU *pdu_l3 = pkt.pdu()->inner_pdu();
     const PDU::PDUType pdu_l3_type = pdu_l3->pdu_type();
     std::string ipAddressSender;
-    std::string ipAddressReceiver;    
+    std::string ipAddressReceiver;
     
     // PDU is IPv4
     if (pdu_l3_type == PDU::PDUType::IP) {