// final String triggerTimesFile = path + "/2018-10/st-plug/st-plug-oct-18-2018.timestamps";
// final String deviceIp = "192.168.1.246"; // .246 == phone; .142 == SmartThings Hub (note: use eth0 capture for this!)
// TODO: EXPERIMENT - November 12, 2018
- final String inputPcapFile = path + "/experimental_result/standalone/st-plug/wlan1/st-plug.wlan1.local.pcap";
- final String outputPcapFile = path + "/experimental_result/standalone/st-plug/wlan1/st-plug-processed.pcap";
-// final String inputPcapFile = path + "/experimental_result/standalone/st-plug/eth1/st-plug.eth1.local.pcap";
-// final String outputPcapFile = path + "/experimental_result/standalone/st-plug/eth1/st-plug-processed.pcap";
- final String triggerTimesFile = path + "/experimental_result/standalone/st-plug/timestamps/st-plug-nov-12-2018.timestamps";
-// final String deviceIp = "192.168.1.142"; // .246 == phone; .142 == SmartThings Hub (note: use eth0 capture for this!)
- final String deviceIp = "192.168.1.246"; // .246 == phone; .142 == SmartThings Hub (note: use eth0 capture for this!)
+// final String inputPcapFile = path + "/experimental_result/standalone/st-plug/wlan1/st-plug.wlan1.local.pcap";
+// final String outputPcapFile = path + "/experimental_result/standalone/st-plug/wlan1/st-plug-processed.pcap";
+//// final String inputPcapFile = path + "/experimental_result/standalone/st-plug/eth1/st-plug.eth1.local.pcap";
+//// final String outputPcapFile = path + "/experimental_result/standalone/st-plug/eth1/st-plug-processed.pcap";
+// final String triggerTimesFile = path + "/experimental_result/standalone/st-plug/timestamps/st-plug-nov-12-2018.timestamps";
+//// final String deviceIp = "192.168.1.142"; // .246 == phone; .142 == SmartThings Hub (note: use eth0 capture for this!)
+// final String deviceIp = "192.168.1.246"; // .246 == phone; .142 == SmartThings Hub (note: use eth0 capture for this!)
// 4) Wemo July 30 experiment
// final String inputPcapFile = path + "/2018-07/wemo/wemo.wlan1.local.pcap";
// final String outputPcapFile = path + "/2018-08/tplink-bulb/tplinkbulb-processed.pcap";
// final String triggerTimesFile = path + "/2018-08/tplink-bulb/tplink-bulb-aug-3-2018.timestamps";
// final String deviceIp = "192.168.1.246"; // .246 == phone; .140 == TP-Link bulb
+ // TODO: EXPERIMENT - November 16, 2018
+ final String inputPcapFile = path + "/experimental_result/standalone/tplink-bulb/wlan1/tplink-bulb.wlan1.local.pcap";
+ final String outputPcapFile = path + "/experimental_result/standalone/tplink-bulb/wlan1/tplink-bulb-processed.pcap";
+// final String inputPcapFile = path + "/experimental_result/standalone/tplink-bulb/eth0/tplink-bulb.eth1.local.pcap";
+// final String outputPcapFile = path + "/experimental_result/standalone/tplink-bulb/eth0/tplink-bulb-processed.pcap";
+ final String triggerTimesFile = path + "/experimental_result/standalone/tplink-bulb/timestamps/tplink-bulb-nov-16-2018.timestamps";
+// final String deviceIp = "192.168.1.140"; // .246 == phone; .140 == TP-Link bulb
+ final String deviceIp = "192.168.1.246"; // .246 == phone; .140 == TP-Link bulb
// 7) Kwikset Doorlock August 6 experiment
// final String inputPcapFile = path + "/2018-08/kwikset-doorlock/kwikset-doorlock.data.wlan1.pcap";
// final String inputPcapFile = path + "/2018-08/arlo-camera/arlo-camera.wlan1.local.pcap";
// final String outputPcapFile = path + "/2018-08/arlo-camera/arlo-camera-processed.pcap";
// final String triggerTimesFile = path + "/2018-08/arlo-camera/arlo-camera-aug-10-2018.timestamps";
+// final String deviceIp = "192.168.1.246"; // .246 == phone; .140 == camera
+ // TODO: EXPERIMENT - November 13, 2018
+// final String inputPcapFile = path + "/experimental_result/standalone/arlo-camera/wlan1/arlo-camera.wlan1.local.pcap";
+// final String outputPcapFile = path + "/experimental_result/standalone/arlo-camera/wlan1/arlo-camera-processed.pcap";
+//// final String inputPcapFile = path + "/experimental_result/standalone/arlo-camera/eth0/arlo-camera.eth1.local.pcap";
+//// final String outputPcapFile = path + "/experimental_result/standalone/arlo-camera/eth0/arlo-camera-processed.pcap";
+// final String triggerTimesFile = path + "/experimental_result/standalone/arlo-camera/timestamps/arlo-camera-nov-13-2018.timestamps";
+//// final String deviceIp = "192.168.1.140"; // .246 == phone; .140 == camera
// final String deviceIp = "192.168.1.246"; // .246 == phone; .140 == camera
// 12) Blossom sprinkler August 13 experiment
// final String inputPcapFile = path + "/2018-08/nest/nest.wlan1.local.pcap";
// final String outputPcapFile = path + "/2018-08/nest/nest-processed.pcap";
// final String triggerTimesFile = path + "/2018-08/nest/nest-aug-15-2018.timestamps";
+// final String deviceIp = "192.168.1.246"; // .246 == phone; .127 == Nest thermostat
+ // TODO: EXPERIMENT - November 14, 2018
+// final String inputPcapFile = path + "/experimental_result/standalone/nest-thermostat/wlan1/nest-thermostat.wlan1.local.pcap";
+// final String outputPcapFile = path + "/experimental_result/standalone/nest-thermostat/wlan1/nest-thermostat-processed.pcap";
+//// final String inputPcapFile = path + "/experimental_result/standalone/nest-thermostat/eth0/nest-thermostat.eth1.local.pcap";
+//// final String outputPcapFile = path + "/experimental_result/standalone/nest-thermostat/eth0/nest-thermostat-processed.pcap";
+// final String triggerTimesFile = path + "/experimental_result/standalone/nest-thermostat/timestamps/nest-thermostat-nov-15-2018.timestamps";
+//// final String deviceIp = "192.168.1.127"; // .246 == phone; .127 == Nest thermostat
// final String deviceIp = "192.168.1.246"; // .246 == phone; .127 == Nest thermostat
// 15) Alexa August 16 experiment
Stream.concat(Stream.of(onPairs), Stream.of(offPairs)).flatMap(List::stream).forEach(p -> p.setDnsMap(dnsMap));
// Perform clustering on conversation logged as part of all ON events.
DBSCANClusterer<PcapPacketPair> onClusterer = new DBSCANClusterer<>(10.0, 45);
+ //DBSCANClusterer<PcapPacketPair> onClusterer = new DBSCANClusterer<>(10.0, 10);
List<Cluster<PcapPacketPair>> onClusters = onClusterer.cluster(onPairs);
// Perform clustering on conversation logged as part of all OFF events.
DBSCANClusterer<PcapPacketPair> offClusterer = new DBSCANClusterer<>(10.0, 45);
+ //DBSCANClusterer<PcapPacketPair> offClusterer = new DBSCANClusterer<>(10.0, 10);
List<Cluster<PcapPacketPair>> offClusters = offClusterer.cluster(offPairs);
// Sort the conversations as reference
List<Conversation> sortedAllConversation = TcpConversationUtils.sortConversationList(allConversations);
System.out.println(String.format("<<< Cluster #%02d (%03d points) >>>", ++count, c.getPoints().size()));
System.out.print(PrintUtils.toSummaryString(c));
if(c.getPoints().size() > 45 && c.getPoints().size() < 55) {
+ //if(c.getPoints().size() > 25) {
// Print to file
List<List<PcapPacket>> ppListOfList = PcapPacketUtils.clusterToListOfPcapPackets(c);
ppListOfListListOn.add(ppListOfList);
ppListOfListListOn = PcapPacketUtils.sortSignatures(ppListOfListListOn);
// TODO: Need to remove sequence number 2 for ST plug since it is not a good signature!
//PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOn, 2);
+ // TODO: Need to remove sequence number 0 for Arlo Camera since it is not a good signature!
+ //PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOn, 0);
// TODO: Need to remove sequence number 0 for TP-Link plug since it is not a good signature!
// TODO: This sequence actually belongs to the local communication between the plug and the phone
//PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOn, 0);
System.out.println(String.format("<<< Cluster #%03d (%06d points) >>>", ++count, c.getPoints().size()));
System.out.print(PrintUtils.toSummaryString(c));
if(c.getPoints().size() > 45 && c.getPoints().size() < 55) {
+ //if(c.getPoints().size() > 25) {
// Print to file
List<List<PcapPacket>> ppListOfList = PcapPacketUtils.clusterToListOfPcapPackets(c);
ppListOfListListOff.add(ppListOfList);
}
// TODO: Merging test
ppListOfListListOff = PcapPacketUtils.mergeSignatures(ppListOfListListOff, sortedAllConversation);
- ppListOfListListOff = PcapPacketUtils.sortSignatures(ppListOfListListOff);
+ //ppListOfListListOff = PcapPacketUtils.sortSignatures(ppListOfListListOff);
// TODO: Need to remove sequence number 1 for Nest Thermostat since it is not a good signature!
//PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOff, 1);
// TODO: Need to remove sequence number 0 for Arlo Camera since it is not a good signature!
- //PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOff, 0);
+ //PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOff, 1);
// TODO: Need to remove sequence number 2 for ST plug since it is not a good signature!
//PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOff, 2);
// TODO: Need to remove sequence number 0 for TP-Link plug since it is not a good signature!
// 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";
+// final String inputPcapFile = path + "/UNSW/16-09-25.pcap";
// final String inputPcapFile = path + "/UNSW/16-09-26.pcap";
// final String inputPcapFile = path + "/UNSW/16-09-27.pcap";
// final String inputPcapFile = path + "/UNSW/16-09-29.pcap";
// final String inputPcapFile = path + "/UNSW/16-10-12.pcap";
// TODO: The following are tests for signatures against training data
- /*
+
// D-Link Plug experiment
- final String inputPcapFile = path + "/training/dlink-plug/wlan1/dlink-plug.wlan1.local.pcap";
+// final String inputPcapFile = path + "/training/dlink-plug/wlan1/dlink-plug.wlan1.local.pcap";
// D-Link Plug DEVICE signatures
- //final String onSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-onSignature-device-side.sig";
- //final String offSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-offSignature-device-side.sig";
+// final String onSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-onSignature-device-side.sig";
+// final String offSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-offSignature-device-side.sig";
// D-Link Plug PHONE signatures
- final String onSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-onSignature-phone-side.sig";
- final String offSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-offSignature-phone-side.sig";
- */
+// final String onSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-onSignature-phone-side.sig";
+// final String offSignatureFile = path + "/training/dlink-plug/signatures/dlink-plug-offSignature-phone-side.sig";
+
// TODO: EXPERIMENT - November 7, 2018
// D-Link Plug experiment
//final String inputPcapFile = path + "/experimental_result/standalone/dlink-plug/wlan1/dlink-plug.wlan1.local.pcap";
// Arlo camera experiment
// final String inputPcapFile = path + "/training/arlo-camera/wlan1/arlo-camera.wlan1.local.pcap";
-// // TP-Link Plug DEVICE signatures
+//// // TP-Link Plug DEVICE signatures
// final String onSignatureFile = path + "/training/arlo-camera/signatures/arlo-camera-onSignature-phone-side.sig";
// final String offSignatureFile = path + "/training/arlo-camera/signatures/arlo-camera-offSignature-phone-side.sig";
+ // TODO: EXPERIMENT - November 13, 2018
+ // Arlo Camera experiment
+// final String inputPcapFile = path + "/experimental_result/standalone/arlo-camera/wlan1/arlo-camera.wlan1.local.pcap";
+// final String inputPcapFile = path + "/experimental_result/standalone/arlo-camera/eth0/arlo-camera.eth0.local.pcap";
+// final String inputPcapFile = path + "/experimental_result/smarthome/arlo-camera/wlan1/arlo-camera.wlan1.detection.pcap";
+// final String inputPcapFile = path + "/experimental_result/smarthome/arlo-camera/eth0/arlo-camera.eth0.detection.pcap";
+// final String inputPcapFile = path + "/training/arlo-camera/eth0/arlo-camera.eth0.local.pcap";
+ // Arlo Camera PHONE signatures
+// final String onSignatureFile = path + "/experimental_result/standalone/arlo-camera/signatures/arlo-camera-onSignature-phone-side.sig";
+// final String offSignatureFile = path + "/experimental_result/standalone/arlo-camera/signatures/arlo-camera-offSignature-phone-side.sig";
// Amazon Alexa experiment
// final String inputPcapFile = path + "/training/amazon-alexa/wlan1/alexa2.wlan1.local.pcap";
// SmartThings Plug experiment
// final String inputPcapFile = path + "/training/st-plug/wlan1/st-plug.wlan1.local.pcap";
-// // TP-Link Plug DEVICE signatures
+// // SmartThings Plug DEVICE signatures
// //final String onSignatureFile = path + "/training/st-plug/signatures/st-plug-onSignature-device-side.sig";
// //final String offSignatureFile = path + "/training/st-plug/signatures/st-plug-offSignature-device-side.sig";
-// // TP-Link Plug PHONE signatures
+// // SmartThings Plug PHONE signatures
// final String onSignatureFile = path + "/training/st-plug/signatures/st-plug-onSignature-phone-side.sig";
// final String offSignatureFile = path + "/training/st-plug/signatures/st-plug-offSignature-phone-side.sig";
// TODO: EXPERIMENT - November 12, 2018
// //final String inputPcapFile = path + "/experimental_result/smarthome/st-plug/wlan1/st-plug.wlan1.detection.pcap";
// final String inputPcapFile = path + "/experimental_result/smarthome/st-plug/eth0/st-plug.eth0.detection.pcap";
// // SmartThings Plug PHONE signatures
- final String onSignatureFile = path + "/experimental_result/standalone/st-plug/signatures/st-plug-onSignature-phone-side.sig";
- final String offSignatureFile = path + "/experimental_result/standalone/st-plug/signatures/st-plug-offSignature-phone-side.sig";
+// final String onSignatureFile = path + "/experimental_result/standalone/st-plug/signatures/st-plug-onSignature-phone-side.sig";
+// final String offSignatureFile = path + "/experimental_result/standalone/st-plug/signatures/st-plug-offSignature-phone-side.sig";
// LiFX Bulb experiment
// // Nest Thermostat PHONE signatures
// final String onSignatureFile = path + "/training/nest-thermostat/signatures/nest-thermostat-onSignature-phone-side.sig";
// final String offSignatureFile = path + "/training/nest-thermostat/signatures/nest-thermostat-offSignature-phone-side.sig";
+ // TODO: EXPERIMENT - November 15, 2018
+ // Nest Thermostat experiment
+// final String inputPcapFile = path + "/experimental_result/standalone/nest-thermostat/wlan1/nest-thermostat.wlan1.local.pcap";
+//// final String inputPcapFile = path + "/experimental_result/standalone/nest-thermostat/eth0/nest-thermostat.eth0.local.pcap";
+//// final String inputPcapFile = path + "/experimental_result/smarthome/nest-thermostat/wlan1/nest-thermostat.wlan1.detection.pcap";
+// final String inputPcapFile = path + "/experimental_result/smarthome/nest-thermostat/eth0/nest-thermostat.eth0.detection.pcap";
+//// // Nest Thermostat PHONE signatures
+// final String onSignatureFile = path + "/experimental_result/standalone/nest-thermostat/signatures/nest-thermostat-onSignature-phone-side.sig";
+// final String offSignatureFile = path + "/experimental_result/standalone/nest-thermostat/signatures/nest-thermostat-offSignature-phone-side.sig";
/*
// Hue Bulb experiment
final String offSignatureFile = path + "/training/hue-bulb/signatures/hue-bulb-offSignature-phone-side.sig";
*/
- /*
+
// TP-Link Bulb experiment
- final String inputPcapFile = path + "/training/tplink-bulb/wlan1/tplink-bulb.wlan1.local.pcap";
- // TP-Link Bulb PHONE signatures
- final String onSignatureFile = path + "/training/tplink-bulb/signatures/tplink-bulb-onSignature-phone-side.sig";
- final String offSignatureFile = path + "/training/tplink-bulb/signatures/tplink-bulb-offSignature-phone-side.sig";
- */
+// final String inputPcapFile = path + "/training/tplink-bulb/wlan1/tplink-bulb.wlan1.local.pcap";
+// // TP-Link Bulb PHONE signatures
+// final String onSignatureFile = path + "/training/tplink-bulb/signatures/tplink-bulb-onSignature-phone-side.sig";
+// final String offSignatureFile = path + "/training/tplink-bulb/signatures/tplink-bulb-offSignature-phone-side.sig";
+ // TODO: EXPERIMENT - November 16, 2018
+ // TP-Link Bulb experiment
+ final String inputPcapFile = path + "/experimental_result/standalone/tplink-bulb/wlan1/tplink-bulb.wlan1.local.pcap";
+// final String inputPcapFile = path + "/experimental_result/standalone/tplink-bulb/eth0/tplink-bulb.eth0.local.pcap";
+// final String inputPcapFile = path + "/experimental_result/smarthome/tplink-bulb/wlan1/tplink-bulb.wlan1.detection.pcap";
+// final String inputPcapFile = path + "/experimental_result/smarthome/tplink-bulb/eth0/tplink-bulb.eth0.detection.pcap";
+// // TP-Link Bulb PHONE signatures
+ final String onSignatureFile = path + "/experimental_result/standalone/tplink-bulb/signatures/tplink-bulb-onSignature-phone-side.sig";
+ final String offSignatureFile = path + "/experimental_result/standalone/tplink-bulb/signatures/tplink-bulb-offSignature-phone-side.sig";
/*
// WeMo Plug experiment
PcapPacket firstPkt = match.get(0).get(0);
detectedEvents.add(new UserAction(UserAction.Type.TOGGLE_ON, firstPkt.getTimestamp()));
});
-// offDetector.addObserver((searched, match) -> {
-// PcapPacket firstPkt = match.get(0).get(0);
-// detectedEvents.add(new UserAction(UserAction.Type.TOGGLE_OFF, firstPkt.getTimestamp()));
-// });
+ offDetector.addObserver((searched, match) -> {
+ PcapPacket firstPkt = match.get(0).get(0);
+ detectedEvents.add(new UserAction(UserAction.Type.TOGGLE_OFF, firstPkt.getTimestamp()));
+ });
PcapHandle handle;
try {
// TODO: need a better way of triggering detection than this...
onDetector.mClusterMatchers.forEach(cm -> cm.performDetection());
-// offDetector.mClusterMatchers.forEach(cm -> cm.performDetection());
+ offDetector.mClusterMatchers.forEach(cm -> cm.performDetection());
// Sort the list of detected events by timestamp to make it easier to compare it line-by-line with the trigger
// times file.
if (Integer.signum(compare) != Integer.signum(comparePrev)) {
// Throw an exception if the order of the two signatures is not consistent,
// E.g., 111, 222, 333 in one occassion and 222, 333, 111 in the other.
- throw new Error("For some reason, the order of signatures are not always consistent!" +
- "Returning the original data structure of signatures...");
+// throw new Error("For some reason, the order of signatures are not always consistent!" +
+// "Returning the original data structure of signatures...");
}
}
comparePrev = compare;
# Range of random number (in seconds)
# Five websites
BRO_RAN_STA=0
-BRO_RAN_END=4
+BRO_RAN_END=9
# Browsing interval (every 100-500 seconds)
-SLP_RAN_STA=100
+SLP_RAN_STA=10
SLP_RAN_END=500
# List of websites
from datetime import datetime
-path = "/scratch/July-2018/experimental_result/smarthome/"
-#path = "/scratch/July-2018/experimental_result/standalone/"
+#path = "/scratch/July-2018/experimental_result/smarthome/"
+path = "/scratch/July-2018/experimental_result/standalone/"
# D-Link plug
#device = "dlink-plug/self-test"
#fileExperiment = "dlink-plug-nov-7-2018.timestamps"
#device = "st-plug/self-test"
#fileExperiment = "st-plug-nov-13-2018.timestamps"
#fileDetection = "phone-side-detection"
-device = "st-plug/timestamps"
-fileExperiment = "st-plug-smarthome-nov-13-2018.timestamps"
-fileDetection = "st-plug-smarthome-nov-13-2018.eth0.phone.detections"
+#device = "st-plug/timestamps"
+#fileExperiment = "st-plug-smarthome-nov-13-2018.timestamps"
+#fileDetection = "st-plug-smarthome-nov-13-2018.eth0.phone.detections"
+# Arlo camera
+#device = "arlo-camera/self-test"
+#fileExperiment = "arlo-camera-nov-13-2018.timestamps"
+#fileDetection = "phone-side-detection"
+#device = "arlo-camera/timestamps"
+#fileExperiment = "arlo-camera-smarthome-nov-15-2018.timestamps"
+#fileDetection = "arlo-camera-smarthome-nov-15-2018.phone.eth0.detections"
+
+# Nest Thermostat
+#device = "nest-thermostat/self-test"
+#fileExperiment = "nest-thermostat-nov-15-2018.timestamps"
+#fileDetection = "phone-side-detection"
+device = "nest-thermostat/timestamps"
+fileExperiment = "nest-thermostat-smarthome-nov-16-2018.timestamps"
+fileDetection = "nest-thermostat-smarthome-nov-16-2018.phone.eth0.detections"
+
+# TP-Link Bulb
+device = "tplink-bulb/self-test"
+fileExperiment = "tplink-bulb-nov-16-2018.timestamps"
+fileDetection = "phone-side-detection"
+#device = "tplink-bulb/timestamps"
+#fileExperiment = "tplink-bulb-smarthome-nov-16-2018.timestamps"
+#fileDetection = "tplink-bulb-smarthome-nov-16-2018.phone.eth0.detections"
# Arlo camera
#device = "arlo-camera/self-test"