X-Git-Url: http://plrg.eecs.uci.edu/git/?p=pingpong.git;a=blobdiff_plain;f=Code%2FProjects%2FSmartPlugDetector%2Fsrc%2Fmain%2Fjava%2Fedu%2Fuci%2Fiotproject%2Fdetection%2FSignatureDetector.java;h=de3b004e5f1070c688366b58431fb181ff54813f;hp=22e496461d0439d9d96254ffdde645a1c5714968;hb=379f319952b49d7eca92f0f375a02883a126beba;hpb=a26c895f4a5e4779f1e1bc4951e8837d5f2de332 diff --git a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/detection/SignatureDetector.java b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/detection/SignatureDetector.java index 22e4964..de3b004 100644 --- a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/detection/SignatureDetector.java +++ b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/detection/SignatureDetector.java @@ -17,6 +17,7 @@ import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.*; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * Detects an event signature that spans one or multiple TCP connections. @@ -28,8 +29,10 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster // Test client public static void main(String[] args) throws PcapNativeException, NotOpenException { - String path = "/scratch/July-2018"; // Rahmadi - //String path = "/Users/varmarken/temp/UCI IoT Project/experiments"; // Janus +// String path = "/scratch/July-2018"; // Rahmadi +// String path = "/Users/varmarken/temp/UCI IoT Project/experiments"; // Janus +// String path = "/home/jvarmark/iot_project/datasets"; // Hera (server) + String path = "/raid/varmarken/iot_project/datasets"; // Zeus (server) // No activity test //final String inputPcapFile = path + "/evaluation/no-activity/no-activity.wlan1.pcap"; @@ -81,7 +84,6 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster // final String inputPcapFile = path + "/UNSW/16-10-10.pcap"; // TODO: Seems to be broken! // final String inputPcapFile = path + "/UNSW/16-10-11.pcap"; // TODO: Seems to be broken! - // final String inputPcapFile = path + "/UNSW/16-09-23.pcap"; // final String inputPcapFile = path + "/UNSW/16-09-24.pcap"; // final String inputPcapFile = path + "/UNSW/16-09-25.pcap"; @@ -90,6 +92,8 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster // final String inputPcapFile = path + "/UNSW/16-09-29.pcap"; // final String inputPcapFile = path + "/UNSW/16-10-01.pcap"; // final String inputPcapFile = path + "/UNSW/16-10-06.pcap"; + // Negative test: dataset from UNB + final String inputPcapFile = path + "/evaluation/negative-datasets/UNB/Monday-WorkingHours_one-local-endpoint.pcap"; // TODO: The following one is very long!!! // final String inputPcapFile = path + "/UNSW/16-10-12.pcap"; @@ -129,6 +133,8 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster // D-Link Siren PHONE signatures // final String onSignatureFile = path + "/experimental_result/standalone/dlink-siren/signatures/dlink-siren-onSignature-phone-side.sig"; // final String offSignatureFile = path + "/experimental_result/standalone/dlink-siren/signatures/dlink-siren-offSignature-phone-side.sig"; +// final String onSignatureFile = path + "/training/signatures/dlink-siren/dlink-siren-onSignature-phone-side.sig"; +// final String offSignatureFile = path + "/training/signatures/dlink-siren/dlink-siren-offSignature-phone-side.sig"; // TP-Link Plug experiment //final String inputPcapFile = path + "/training/tplink-plug/wlan1/tplink-plug.wlan1.local.pcap"; @@ -283,11 +289,11 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster // final String inputPcapFile = path + "/experimental_result/standalone/wemo-insight-plug/wlan1/wemo-insight-plug.wlan1.local.pcap"; // final String inputPcapFile = path + "/experimental_result/standalone/wemo-insight-plug/eth0/wemo-insight-plug.eth0.local.pcap"; // TODO: WE HAVE 1 ADDITIONAL EVENT (FROM WEMO PLUG) - final String inputPcapFile = path + "/experimental_result/smarthome/wemo-insight-plug/wlan1/wemo-insight-plug.wlan1.detection.pcap"; +// final String inputPcapFile = path + "/experimental_result/smarthome/wemo-insight-plug/wlan1/wemo-insight-plug.wlan1.detection.pcap"; // final String inputPcapFile = path + "/experimental_result/smarthome/wemo-insight-plug/eth0/wemo-insight-plug.eth0.detection.pcap"; // WeMo Insight Plug PHONE signatures - final String onSignatureFile = path + "/experimental_result/standalone/wemo-insight-plug/signatures/wemo-insight-plug-onSignature-phone-side.sig"; - final String offSignatureFile = path + "/experimental_result/standalone/wemo-insight-plug/signatures/wemo-insight-plug-offSignature-phone-side.sig"; +// final String onSignatureFile = path + "/experimental_result/standalone/wemo-insight-plug/signatures/wemo-insight-plug-onSignature-phone-side.sig"; +// final String offSignatureFile = path + "/experimental_result/standalone/wemo-insight-plug/signatures/wemo-insight-plug-offSignature-phone-side.sig"; // Kwikset Doorlock Sep 12 experiment @@ -303,29 +309,35 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster //// // Kwikset Door lock PHONE signatures // final String onSignatureFile = path + "/experimental_result/standalone/kwikset-doorlock/signatures/kwikset-doorlock-onSignature-phone-side.sig"; // final String offSignatureFile = path + "/experimental_result/standalone/kwikset-doorlock/signatures/kwikset-doorlock-offSignature-phone-side.sig"; + final String onSignatureFile = path + "/training/signatures/kwikset-doorlock/kwikset-doorlock-onSignature-phone-side.sig"; + final String offSignatureFile = path + "/training/signatures/kwikset-doorlock/kwikset-doorlock-offSignature-phone-side.sig"; - /* // D-Link Siren experiment - final String inputPcapFile = path + "/2018-08/dlink-siren/dlink-siren.wlan1.local.pcap"; +// final String inputPcapFile = path + "/2018-08/dlink-siren/dlink-siren.wlan1.local.pcap"; // D-Link Siren DEVICE signatures //final String onSignatureFile = path + "/2018-08/dlink-siren/onSignature-DLink-Siren-device.sig"; //final String offSignatureFile = path + "/2018-08/dlink-siren/offSignature-DLink-Siren-device.sig"; // D-Link Siren PHONE signatures - final String onSignatureFile = path + "/2018-08/dlink-siren/onSignature-DLink-Siren-phone.sig"; - final String offSignatureFile = path + "/2018-08/dlink-siren/offSignature-DLink-Siren-phone.sig"; - */ +// final String onSignatureFile = path + "/2018-08/dlink-siren/onSignature-DLink-Siren-phone.sig"; +// final String offSignatureFile = path + "/2018-08/dlink-siren/offSignature-DLink-Siren-phone.sig"; + + + // Output file names used (to make it easy to catch if one forgets to change them) + System.out.println("ON signature file in use is " + onSignatureFile); + System.out.println("OFF signature file in use is " + offSignatureFile); + System.out.println("PCAP file that is the target of detection is " + inputPcapFile); List>> onSignature = PrintUtils.deserializeSignatureFromFile(onSignatureFile); List>> offSignature = PrintUtils.deserializeSignatureFromFile(offSignatureFile); // LAN -// SignatureDetector onDetector = new SignatureDetector(onSignature, null); -// SignatureDetector offDetector = new SignatureDetector(offSignature, null); + SignatureDetector onDetector = new SignatureDetector(onSignature, null); + SignatureDetector offDetector = new SignatureDetector(offSignature, null); // WAN - SignatureDetector onDetector = new SignatureDetector(onSignature, "128.195.205.105"); - SignatureDetector offDetector = new SignatureDetector(offSignature, "128.195.205.105"); +// SignatureDetector onDetector = new SignatureDetector(onSignature, "128.195.205.105"); +// SignatureDetector offDetector = new SignatureDetector(offSignature, "128.195.205.105"); final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM). withLocale(Locale.US).withZone(ZoneId.of("America/Los_Angeles")); @@ -378,13 +390,18 @@ public class SignatureDetector implements PacketListener, ClusterMatcher.Cluster // times file. Collections.sort(detectedEvents, Comparator.comparing(UserAction::getTimestamp)); - // Output the detected events - //detectedEvents.forEach(outputter); + detectedEvents.forEach(outputter); + + System.out.println("Number of detected events of type " + UserAction.Type.TOGGLE_ON + ": " + + detectedEvents.stream().filter(ua -> ua.getType() == UserAction.Type.TOGGLE_ON).count()); + System.out.println("Number of detected events of type " + UserAction.Type.TOGGLE_OFF + ": " + + detectedEvents.stream().filter(ua -> ua.getType() == UserAction.Type.TOGGLE_OFF).count()); + // TODO: Temporary clean up until we clean the pipeline - List cleanedDetectedEvents = SignatureDetector.removeDuplicates(detectedEvents); - cleanedDetectedEvents.forEach(outputter); +// List cleanedDetectedEvents = SignatureDetector.removeDuplicates(detectedEvents); +// cleanedDetectedEvents.forEach(outputter); } /**