generateThreats function

Future generateThreats()

Parsing ':Global:threats' Node Normal threats -> GEIGER threats (12) GEIGER threats (12) defined by CERT

Implementation

Future generateThreats() async {
  try {

    var globalThreats = await Storage.controller.get(':Global:threats');
    var nodesCsv = await globalThreats.getChildNodesCsv();

    if(nodesCsv.isNotEmpty) {

      ///get all threat nodes
      var getChildren = await globalThreats.getChildren();
      var threatsIterator = getChildren.entries.iterator;

      ///To makes threat uuid list
      ///this uuid use on map as key
      var uuidThreats = nodesCsv.toString().split(',');
      logger.d('uuidThreats => ${uuidThreats.toString()}');
      var uuidIterator = uuidThreats.iterator;
      CoreValues.uuidThreats = uuidThreats;

      ///loop threats
      while (threatsIterator.moveNext()) {
        uuidIterator.moveNext();

        var threatNameNode = await threatsIterator.current.value.getValue('name');
        var threatName = threatNameNode!.getValue('en');

  var geigerThreatNameNode = await threatsIterator.current.value.getValue('GEIGER_threat');  //geigerThreat
  var geigerThreatName = geigerThreatNameNode!.getValue('en');


  ///Making the threat maps
  CoreValues.threatUUIDThreatName[uuidIterator.current] = threatName;
  CoreValues.threatNameThreatUUID[threatName] = uuidIterator.current;

  CoreValues.threatUUIDGeigerName[uuidIterator.current] = geigerThreatName;

  if(!CoreValues.geigerNameThreatUUID.containsKey(geigerThreatName)){
  CoreValues.geigerNameThreatUUID[geigerThreatName] = [];
  CoreValues.geigerNameThreatUUID[geigerThreatName].add(uuidIterator.current);
  }else{
  CoreValues.geigerNameThreatUUID[geigerThreatName].add(uuidIterator.current);
  }

  }
  }

  //이름 같은 것 끼리 묶어야함 - 프로파일은 12개로 고정되어있음, 맵핑안되는 위협들은 점수를 못가짐
  //UUID -> NAME ->
  //기준 UUID를 찾고
  //기준 UUID의 NAME알고
  //기준 NAME과 같은 모든 Threat에 같은 값을 넣는다


  }catch(e) {
  logger.e('generateThreats ${e.toString()}');
  }
}