|
@@ -4,6 +4,8 @@
|
|
|
package de.tu_darmstadt.tk.SmartHomeNetworkSim.core.anomalydetectors;
|
|
|
|
|
|
import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.sql.Timestamp;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Iterator;
|
|
@@ -13,6 +15,7 @@ import java.util.Map.Entry;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Packet;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.PacketSniffer;
|
|
|
+import weka.classifiers.AbstractClassifier;
|
|
|
import weka.core.Attribute;
|
|
|
import weka.core.DenseInstance;
|
|
|
import weka.core.Instance;
|
|
@@ -106,7 +109,10 @@ public abstract class BaseAnomalyDetector implements PacketSniffer {
|
|
|
|
|
|
j++;
|
|
|
|
|
|
- if(sameSource && sameDestination) directions[i][j] = directions[i][j] +1;
|
|
|
+ if(sameSource && sameDestination) {
|
|
|
+ directions[i][j] = directions[i][j] +1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -122,28 +128,28 @@ public abstract class BaseAnomalyDetector implements PacketSniffer {
|
|
|
}
|
|
|
else {
|
|
|
classify(l, directions[i]);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void classify(Link l, int[] direction) {
|
|
|
try {
|
|
|
- double c = classifyInstance(direction2Instance(l, direction));
|
|
|
-
|
|
|
- if(c == 0) {
|
|
|
- System.out.println("Anomaly found on direction " + direction[0] + " to " + direction[1]);
|
|
|
- }else {
|
|
|
- System.out.println("No Anomaly found");
|
|
|
+ boolean anomaly = classifyInstance(direction2Instance(l, direction));
|
|
|
+ if(anomaly) {
|
|
|
+ System.out.println("Anomaly found on direction " + direction[1] + " to " + direction[2]);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
* Anomaly found
|
|
|
*/
|
|
|
- System.out.println("Couldn't classify instance");
|
|
|
-
|
|
|
+ System.out.println("Error classifying instance");
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -229,5 +235,8 @@ public abstract class BaseAnomalyDetector implements PacketSniffer {
|
|
|
*/
|
|
|
public abstract void trainModel(Instances instances);
|
|
|
|
|
|
- public abstract double classifyInstance(Instance instance) throws Exception;
|
|
|
+ public abstract boolean classifyInstance(Instance instance) throws Exception;
|
|
|
+
|
|
|
+ public abstract void saveModel() throws Exception;
|
|
|
+
|
|
|
}
|