Commit bec9ad8d authored by Luis de la Cal's avatar Luis de la Cal
Browse files

Obtaining ML features through ONNX file metadata

Modified CAD component to send ML features to DAD
parent e0a8039a
Loading
Loading
Loading
Loading
+13 −21
Original line number Original line Diff line number Diff line
@@ -22,7 +22,7 @@ import onnxruntime as rt
import logging
import logging
import time
import time


from common.proto.l3_centralizedattackdetector_pb2 import Empty
from common.proto.l3_centralizedattackdetector_pb2 import Empty, AutoFeatures
from common.proto.l3_centralizedattackdetector_pb2_grpc import L3CentralizedattackdetectorServicer
from common.proto.l3_centralizedattackdetector_pb2_grpc import L3CentralizedattackdetectorServicer


from common.proto.l3_attackmitigator_pb2 import L3AttackmitigatorOutput
from common.proto.l3_attackmitigator_pb2 import L3AttackmitigatorOutput
@@ -59,11 +59,10 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
        self.inference_results = []
        self.inference_results = []
        self.model = rt.InferenceSession(MODEL_FILE)
        self.model = rt.InferenceSession(MODEL_FILE)
        
        
        # Load features metadata from onnx file
        self.meta = list(self.model.get_modelmeta().custom_metadata_map.values())
        self.meta = list(self.model.get_modelmeta().custom_metadata_map.values())
        self.meta = [int(x) for x in self.meta]
        self.meta = [float(x) for x in self.meta]
        self.meta.sort()
        self.meta.sort()
        LOGGER.debug(self.meta)
        LOGGER.debug("Prueba onnx")
        
        
        self.input_name = self.model.get_inputs()[0].name
        self.input_name = self.model.get_inputs()[0].name
        self.label_name = self.model.get_outputs()[0].name
        self.label_name = self.model.get_outputs()[0].name
@@ -455,23 +454,6 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
    """
    """


    def make_inference(self, request):
    def make_inference(self, request):
        '''x_data = np.array(
            [
                [
                    request.c_pkts_all,
                    request.c_ack_cnt,
                    request.c_bytes_uniq,
                    request.c_pkts_data,
                    request.c_bytes_all,
                    request.s_pkts_all,
                    request.s_ack_cnt,
                    request.s_bytes_uniq,
                    request.s_pkts_data,
                    request.s_bytes_all,
                ]
            ]
        )'''
        
        x_data = np.array(
        x_data = np.array(
            [
            [
                [feature.feature for feature in request.features]
                [feature.feature for feature in request.features]
@@ -643,3 +625,13 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
            logging.info("No attack detected")
            logging.info("No attack detected")


            return Empty(message="Ok, information received (no attack detected)")
            return Empty(message="Ok, information received (no attack detected)")
        
    """
    Send features allocated in the metadata of the onnx file to the DAD
        -output: ONNX metadata as a list of integers
    """
    def SendFeatures(self, request : Empty, context):
        features = AutoFeatures()
        for feature in self.meta:
            features.autoFeatures.append(feature)
        return features
 No newline at end of file