From 7edd186d19df055d465b60d1abcf5c49045a41ae Mon Sep 17 00:00:00 2001 From: rtrimana Date: Thu, 18 Apr 2019 08:20:26 -0700 Subject: [PATCH] Adding new devices; Fixing bugs in concatenation. --- .../execute_signature_generation.sh | 184 +++++++++++++++++- .../execute_signature_validation.sh | 97 ++++++++- ...e_signature_validation_results_analysis.sh | 67 ++++++- .../uci/iotproject/SignatureGenerator.java | 7 +- .../uci/iotproject/util/PcapPacketUtils.java | 44 ++++- 5 files changed, 374 insertions(+), 25 deletions(-) diff --git a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh index 62f09f6..be08cd6 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh @@ -388,10 +388,10 @@ PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_S # =============================================== NEST THERMOSTAT MODE ================================================= INPUT_PCAP="$SIGNATURES_BASE_DIR/nest-thermostat-mode/wlan1/nest-thermostat-mode.wlan1.local.pcap" -# No signature found for both phone and device sides +# Phone side - TODO: THIS SIDE GENERATES SOME FALSE POSITIVES OUTPUT_PCAP="$OUTPUT_DIR/nest-thermostat-mode/wlan1/nest-thermostat-mode-processed.pcap" -TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/nest-thermostat-mode/timestamps/nest-thermostat-mode-apr-15-2019.timestamps" -DEVICE_IP="192.168.1.246" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/nest-thermostat-mode/timestamps/nest-thermostat-mode-apr-16-2019.timestamps" +DEVICE_IP="192.168.1.130" ON_SIGNATURE="$OUTPUT_DIR/nest-thermostat-mode/signatures/nest-thermostat-mode-onSignature-phone-side.sig" OFF_SIGNATURE="$OUTPUT_DIR/nest-thermostat-mode/signatures/nest-thermostat-mode-offSignature-phone-side.sig" ON_ANALYSIS="$OUTPUT_DIR/nest-thermostat-mode/analyses/nest-thermostat-mode-onClusters-phone-side.cls" @@ -407,7 +407,7 @@ PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_S # ================================================= ARLO CAMERA RECORD ================================================= INPUT_PCAP="$SIGNATURES_BASE_DIR/arlo-camera-record/wlan1/arlo-camera-record.wlan1.local.pcap" -# No signature found for both phone and device sides +# Signature OUTPUT_PCAP="$OUTPUT_DIR/arlo-camera-record/wlan1/arlo-camera-record-processed.pcap" TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/arlo-camera-record/timestamps/arlo-camera-record-apr-15-2019.timestamps" # We used a different phone here @@ -420,6 +420,182 @@ EPSILON="10.0" DELETED_SEQUENCES_ON="-1" DELETED_SEQUENCES_OFF="-1" +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# ================================================= ARLO CAMERA SOUND ================================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/arlo-camera-sound/wlan1/arlo-camera-sound.wlan1.local.pcap" + +# Signature +OUTPUT_PCAP="$OUTPUT_DIR/arlo-camera-sound/wlan1/arlo-camera-sound-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/arlo-camera-sound/timestamps/arlo-camera-sound-apr-17-2019.timestamps" +# We used a different phone here +DEVICE_IP="192.168.1.130" +ON_SIGNATURE="$OUTPUT_DIR/arlo-camera-sound/signatures/arlo-camera-sound-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/arlo-camera-sound/signatures/arlo-camera-sound-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/arlo-camera-sound/analyses/arlo-camera-sound-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/arlo-camera-sound/analyses/arlo-camera-sound-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =================================================== AMAZON PLUG ====================================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/amazon-plug/wlan1/amazon-plug.wlan1.local.pcap" + +# TODO: The phone side does not really have a clear signature +# Device Signature +OUTPUT_PCAP="$OUTPUT_DIR/amazon-plug/wlan1/amazon-plug-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/amazon-plug/timestamps/amazon-plug-apr-16-2019.timestamps" +DEVICE_IP="192.168.1.189" +ON_SIGNATURE="$OUTPUT_DIR/amazon-plug/signatures/amazon-plug-onSignature-device-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/amazon-plug/signatures/amazon-plug-offSignature-device-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/amazon-plug/analyses/amazon-plug-onClusters-device-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/amazon-plug/analyses/amazon-plug-offClusters-device-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =================================================== SENGLED BULB ===================================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/sengled-bulb/wlan1/sengled-bulb.wlan1.local.pcap" + +# Phone Signature +OUTPUT_PCAP="$OUTPUT_DIR/sengled-bulb/wlan1/sengled-bulb-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/sengled-bulb/timestamps/sengled-bulb-apr-16-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/sengled-bulb/signatures/sengled-bulb-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/sengled-bulb/signatures/sengled-bulb-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/sengled-bulb/analyses/sengled-bulb-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/sengled-bulb/analyses/sengled-bulb-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" + +INPUT_PCAP="$SIGNATURES_BASE_DIR/sengled-bulb/eth1/sengled-bulb.eth1.local.pcap" + +# Device Signature +DEVICE_IP="192.168.1.201" +ON_SIGNATURE="$OUTPUT_DIR/sengled-bulb/signatures/sengled-bulb-onSignature-device-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/sengled-bulb/signatures/sengled-bulb-offSignature-device-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/sengled-bulb/analyses/sengled-bulb-onClusters-device-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/sengled-bulb/analyses/sengled-bulb-offClusters-device-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =============================================== SENGLED BULB INTENSITY =============================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/wlan1/sengled-bulb-intensity.wlan1.local.pcap" + +# Phone Signature +OUTPUT_PCAP="$OUTPUT_DIR/sengled-bulb-intensity/wlan1/sengled-bulb-intensity-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/timestamps/sengled-bulb-intensity-apr-17-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" + +INPUT_PCAP="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/eth1/sengled-bulb-intensity.eth1.local.pcap" + +# Device Signature +DEVICE_IP="192.168.1.201" +ON_SIGNATURE="$OUTPUT_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-onSignature-device-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-offSignature-device-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-onClusters-device-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-offClusters-device-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =============================================== RACHIO SPRINKLER STANDBY ============================================= +INPUT_PCAP="$SIGNATURES_BASE_DIR/rachio-sprinkler-standby/wlan1/rachio-sprinkler-standby.wlan1.local.pcap" + +# Phone Signature +OUTPUT_PCAP="$OUTPUT_DIR/rachio-sprinkler-standby/wlan1/rachio-sprinkler-standby-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/rachio-sprinkler-standby/timestamps/rachio-sprinkler-standby-apr-17-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/rachio-sprinkler-standby/signatures/rachio-sprinkler-standby-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/rachio-sprinkler-standby/signatures/rachio-sprinkler-standby-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/rachio-sprinkler-standby/analyses/rachio-sprinkler-standby-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/rachio-sprinkler-standby/analyses/rachio-sprinkler-standby-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" + +# Device Signature +OUTPUT_PCAP="$OUTPUT_DIR/rachio-sprinkler-standby/wlan1/rachio-sprinkler-standby-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/rachio-sprinkler-standby/timestamps/rachio-sprinkler-standby-apr-17-2019.timestamps" +DEVICE_IP="192.168.1.143" +ON_SIGNATURE="$OUTPUT_DIR/rachio-sprinkler-standby/signatures/rachio-sprinkler-standby-onSignature-device-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/rachio-sprinkler-standby/signatures/rachio-sprinkler-standby-offSignature-device-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/rachio-sprinkler-standby/analyses/rachio-sprinkler-standby-onClusters-device-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/rachio-sprinkler-standby/analyses/rachio-sprinkler-standby-offClusters-device-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" ./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =================================================== RING DOORBELL RING =============================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/ring-doorbell-ring/wlan1/ring-doorbell-ring.wlan1.local.pcap" + +# Phone Signature +OUTPUT_PCAP="$OUTPUT_DIR/ring-doorbell-ring/wlan1/ring-doorbell-ring-standby-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/ring-doorbell-ring/timestamps/ring-doorbell-ring-apr-17-2019.timestamps" +DEVICE_IP="192.168.1.130" +ON_SIGNATURE="$OUTPUT_DIR/ring-doorbell-ring/signatures/ring-doorbell-ring-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/ring-doorbell-ring/signatures/ring-doorbell-ring-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/ring-doorbell-ring/analyses/ring-doorbell-ring-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/ring-doorbell-ring/analyses/ring-doorbell-ring-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" + +# Device Signature +OUTPUT_PCAP="$OUTPUT_DIR/ring-doorbell-ring/wlan1/ring-doorbell-ring-standby-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/ring-doorbell-ring/timestamps/ring-doorbell-ring-apr-17-2019.timestamps" +DEVICE_IP="192.168.1.130" +ON_SIGNATURE="$OUTPUT_DIR/ring-doorbell-ring/signatures/ring-doorbell-ring-onSignature-device-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/ring-doorbell-ring/signatures/ring-doorbell-ring-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/ring-doorbell-ring/analyses/ring-doorbell-ring-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/ring-doorbell-ring/analyses/ring-doorbell-ring-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="-1" +DELETED_SEQUENCES_OFF="-1" + +PROGRAM_ARGS="'$INPUT_PCAP' '$OUTPUT_PCAP' '$TIMESTAMP_FILE' '$DEVICE_IP' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$EPSILON' '$DELETED_SEQUENCES_ON' '$DELETED_SEQUENCES_OFF'" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== \ No newline at end of file diff --git a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation.sh b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation.sh index 458a988..c7a3302 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation.sh @@ -308,8 +308,6 @@ PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_ # =============================================== TP LINK BULB INTENSITY =============================================== PCAP_FILE="$SIGNATURES_BASE_DIR/tplink-bulb-intensity/wlan1/tplink-bulb-intensity.wlan1.local.pcap" -# Has no device side signature. - # PHONE SIDE ON_ANALYSIS="$SIGNATURES_BASE_DIR/tplink-bulb-intensity/analyses/tplink-bulb-intensity-onClusters-phone-side.cls" OFF_ANALYSIS="$SIGNATURES_BASE_DIR/tplink-bulb-intensity/analyses/tplink-bulb-intensity-offClusters-phone-side.cls" @@ -326,9 +324,7 @@ PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_ # =============================================== BLOSSOM SPRINKLER MODE =============================================== PCAP_FILE="$SIGNATURES_BASE_DIR/blossom-sprinkler-mode/wlan1/blossom-sprinkler-mode.wlan1.local.pcap" -# Has no device side signature. - -# PHONE SIDE (TODO: may possibly be the .incomplete signatures) +# PHONE SIDE ON_ANALYSIS="$SIGNATURES_BASE_DIR/blossom-sprinkler-mode/analyses/blossom-sprinkler-mode-onClusters-phone-side.cls" OFF_ANALYSIS="$SIGNATURES_BASE_DIR/blossom-sprinkler-mode/analyses/blossom-sprinkler-mode-offClusters-phone-side.cls" ON_SIGNATURE="$SIGNATURES_BASE_DIR/blossom-sprinkler-mode/signatures/blossom-sprinkler-mode-onSignature-phone-side.sig" @@ -339,4 +335,95 @@ EPSILON="10.0" PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" #./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =============================================== NEST THERMOSTAT MODE ================================================= +PCAP_FILE="$SIGNATURES_BASE_DIR/nest-thermostat-mode/wlan1/nest-thermostat-mode.wlan1.local.pcap" + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/nest-thermostat-mode/analyses/nest-thermostat-mode-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/nest-thermostat-mode/analyses/nest-thermostat-mode-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/nest-thermostat-mode/signatures/nest-thermostat-mode-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/nest-thermostat-mode/signatures/nest-thermostat-mode-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/nest-thermostat-mode/nest-thermostat-mode.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="13456" +EPSILON="10.0" + +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# ==================================================== AMAZON PLUG ===================================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/amazon-plug/wlan1/amazon-plug.wlan1.local.pcap" + +# DEVICE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/amazon-plug/analyses/amazon-plug-onClusters-device-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/amazon-plug/analyses/amazon-plug-offClusters-device-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/amazon-plug/signatures/amazon-plug-onSignature-device-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/amazon-plug/signatures/amazon-plug-offSignature-device-side.sig" +RESULTS_FILE="$OUTPUT_DIR/amazon-plug/amazon-plug.wlan1.validation.pcap___device-side.detectionresults" +SIGNATURE_DURATION="4990" +EPSILON="10.0" + +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =================================================== SENGLED BULB ===================================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/sengled-bulb/wlan1/sengled-bulb.wlan1.local.pcap" + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb/analyses/sengled-bulb-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb/analyses/sengled-bulb-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb/signatures/sengled-bulb-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb/signatures/sengled-bulb-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/sengled-bulb/sengled-bulb.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="8545" +EPSILON="10.0" + +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" + + +PCAP_FILE="$SIGNATURES_BASE_DIR/sengled-bulb/eth1/sengled-bulb.eth1.local.pcap" +# DEVICE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb/analyses/sengled-bulb-onClusters-device-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb/analyses/sengled-bulb-offClusters-device-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb/signatures/sengled-bulb-onSignature-device-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb/signatures/sengled-bulb-offSignature-device-side.sig" +RESULTS_FILE="$OUTPUT_DIR/sengled-bulb/sengled-bulb.eth1.validation.pcap___device-side.detectionresults" +SIGNATURE_DURATION="8467" +EPSILON="10.0" + +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =============================================== SENGLED BULB INTENSITY =============================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/wlan1/sengled-bulb-intensity.wlan1.local.pcap" + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/sengled-bulb-intensity/sengled-bulb-intensity.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="7888" +EPSILON="10.0" + +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" + +PCAP_FILE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/eth1/sengled-bulb-intensity.eth1.local.pcap" +# DEVICE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-onClusters-device-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/analyses/sengled-bulb-intensity-offClusters-device-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-onSignature-device-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/sengled-bulb-intensity/signatures/sengled-bulb-intensity-offSignature-device-side.sig" +RESULTS_FILE="$OUTPUT_DIR/sengled-bulb-intensity/sengled-bulb-intensity.eth1.validation.pcap___device-side.detectionresults" +SIGNATURE_DURATION="906" +EPSILON="10.0" + +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== \ No newline at end of file diff --git a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation_results_analysis.sh b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation_results_analysis.sh index db35651..15f9adb 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation_results_analysis.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation_results_analysis.sh @@ -207,8 +207,6 @@ PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXAC # ================================================= TP LINK BULB COLOR ================================================= TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/tplink-bulb-color/timestamps/tplink-bulb-color-apr-12-2019.timestamps" -# Has no device side signature. - # PHONE SIDE # This one is going to generate 100 FPs because every event is counted twice (same signatures for ON and OFF). RESULTS_FILE="$RESULTS_BASE_DIR/tplink-bulb-color/tplink-bulb-color.wlan1.validation.pcap___phone-side.detectionresults" @@ -221,8 +219,6 @@ PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXAC # =============================================== TP LINK BULB INTENSITY =============================================== TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/tplink-bulb-intensity/timestamps/tplink-bulb-intensity-apr-12-2019.timestamps" -# Has no device side signature. - # PHONE SIDE # This one is going to generate 100 FPs because every event is counted twice (same signatures for ON and OFF). RESULTS_FILE="$RESULTS_BASE_DIR/tplink-bulb-intensity/tplink-bulb-intensity.wlan1.validation.pcap___phone-side.detectionresults" @@ -235,13 +231,70 @@ PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXAC # =============================================== BLOSSOM SPRINKLER MODE =============================================== TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/blossom-sprinkler-mode/timestamps/blossom-sprinkler-mode-apr-15-2019.timestamps" -# Has no device side signature. - # PHONE SIDE -# This one is going to generate 100 FPs because every event is counted twice (same signatures for ON and OFF). RESULTS_FILE="$RESULTS_BASE_DIR/blossom-sprinkler-mode/blossom-sprinkler-mode.wlan1.validation.pcap___phone-side.detectionresults" ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" EXACT_MATCH="true" PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =============================================== NEST THERMOSTAT MODE ================================================= +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/nest-thermostat-mode/timestamps/nest-thermostat-mode-apr-16-2019.timestamps" + +# PHONE SIDE +RESULTS_FILE="$RESULTS_BASE_DIR/nest-thermostat-mode/nest-thermostat-mode.wlan1.validation.pcap___phone-side.detectionresults" +ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" +EXACT_MATCH="true" +PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# ==================================================== AMAZON PLUG ===================================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/amazon-plug/timestamps/amazon-plug-apr-16-2019.timestamps" + +# DEVICE SIDE +RESULTS_FILE="$RESULTS_BASE_DIR/amazon-plug/amazon-plug.wlan1.validation.pcap___device-side.detectionresults" +ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" +EXACT_MATCH="true" +PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =================================================== SENGLED BULB ===================================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/sengled-bulb/timestamps/sengled-bulb-apr-16-2019.timestamps" + +# DEVICE SIDE +RESULTS_FILE="$RESULTS_BASE_DIR/sengled-bulb/sengled-bulb.wlan1.validation.pcap___phone-side.detectionresults" +ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" +EXACT_MATCH="true" +PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" + +# PHONE SIDE +# DEVICE SIDE +RESULTS_FILE="$RESULTS_BASE_DIR/sengled-bulb/sengled-bulb.eth1.validation.pcap___device-side.detectionresults" +ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" +EXACT_MATCH="true" +PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" +# ====================================================================================================================== + +# =============================================== SENGLED BULB INTENSITY =============================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/sengled-bulb-intensity/timestamps/sengled-bulb-intensity-apr-17-2019.timestamps" + +# DEVICE SIDE +RESULTS_FILE="$RESULTS_BASE_DIR/sengled-bulb-intensity/sengled-bulb-intensity.wlan1.validation.pcap___phone-side.detectionresults" +ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" +EXACT_MATCH="true" +PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" + +# PHONE SIDE +# DEVICE SIDE +RESULTS_FILE="$RESULTS_BASE_DIR/sengled-bulb-intensity/sengled-bulb-intensity.eth1.validation.pcap___device-side.detectionresults" +ANALYSIS_RESULTS_FILE="$RESULTS_FILE.analysis" +EXACT_MATCH="true" +PROGRAM_ARGS="'$TIMESTAMPS_FILE' '$RESULTS_FILE' '$ANALYSIS_RESULTS_FILE' '$EXACT_MATCH'" ./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== \ No newline at end of file diff --git a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/SignatureGenerator.java b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/SignatureGenerator.java index 50417e7..c074014 100644 --- a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/SignatureGenerator.java +++ b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/SignatureGenerator.java @@ -282,7 +282,7 @@ public class SignatureGenerator { } PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOn, sequenceToDelete); } - PrintWriterUtils.println("ON Sequences after removal: ", resultsWriter, + PrintWriterUtils.println("ON Sequences: ", resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); for(List> listOfList : ppListOfListListOn) { PrintWriterUtils.println(listOfList.get(0).get(0).length() + "...", resultsWriter, @@ -303,7 +303,7 @@ public class SignatureGenerator { } PcapPacketUtils.removeSequenceFromSignature(ppListOfListListOff, sequenceToDelete); } - PrintWriterUtils.println("OFF Sequences after removal: ", resultsWriter, + PrintWriterUtils.println("OFF Sequences: ", resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); for(List> listOfList : ppListOfListListOff) { PrintWriterUtils.println(listOfList.get(0).get(0).length() + "...", resultsWriter, @@ -328,6 +328,9 @@ public class SignatureGenerator { PrintWriterUtils.println("========================================", resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); PcapPacketUtils.printSignatures(ppListOfListListOff, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); + // Clean signatures from null elements + PcapPacketUtils.cleanSignature(ppListOfListListOn); + PcapPacketUtils.cleanSignature(ppListOfListListOff); // Printing signatures into files PrintUtils.serializeIntoFile(onSignatureFile, ppListOfListListOn); PrintUtils.serializeIntoFile(offSignatureFile, ppListOfListListOff); diff --git a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/util/PcapPacketUtils.java b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/util/PcapPacketUtils.java index b413068..2601dc1 100644 --- a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/util/PcapPacketUtils.java +++ b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/util/PcapPacketUtils.java @@ -234,7 +234,11 @@ public final class PcapPacketUtils { List>> copySignatures = new ArrayList<>(); listDeepCopy(copySignatures, signatures); // Traverse and look into the pairs. - for (int first = 0; first < signatures.size(); first++) { + //for (int first = 0; first < signatures.size(); first++) { + int first = 0; + int signaturesSize = signatures.size(); + while(first < signaturesSize) { +// System.out.println("First: " + first + " Signatures: " + signatures.get(0).size()); List> firstList = signatures.get(first); for (int second = first+1; second < signatures.size(); second++) { int maxSignatureEl = 0; @@ -255,7 +259,9 @@ public final class PcapPacketUtils { if (position == TcpConversationUtils.SignaturePosition.LEFT_ADJACENT) { // Merge to the left side of the first sequence. ppList.addAll(signature); - signature = ppList; + // Remove and then add again to keep the same reference + signature.removeAll(signature); + signature.addAll(ppList); maxSignatureEl = signature.size() > maxSignatureEl ? signature.size() : maxSignatureEl; secondList.remove(ppList); // Remove as we merge. break; @@ -268,6 +274,7 @@ public final class PcapPacketUtils { } // TcpConversationUtils.SignaturePosition.NOT_ADJACENT. } } +// System.out.println("First list size: " + firstList.get(35).size()); // Call it a successful merging if there are only less than 5 elements from the second list that // cannot be merged. if (secondList.size() < SIGNATURE_MERGE_THRESHOLD) { @@ -285,17 +292,40 @@ public final class PcapPacketUtils { return copySignatures; } } + if (signatures.size() < signaturesSize) { + // If there is a concatenation, we check again from index 0 + signaturesSize = signatures.size(); + first = 0; + } else { + signaturesSize = signatures.size(); + first++; + } + } return signatures; } /** - * Deep copy to create an entirely new {@link List} of {@link List} of {@link List} of {@link PcapPacket} objects. - * @param destList A {@link List} of {@link List} of {@link List} of - * {@link PcapPacket} objects that will be the final container of the deep copy - * @param sourceList A {@link List} of {@link List} of {@link List} of - * {@link PcapPacket} objects that will be the source of the deep copy. + * Clean up null values in in {@code List} of {@code List} of {@code List} of {@code PcapPacket} objects. + * @param signature A {@link List} of {@link List} of {@link List} of + * {@link PcapPacket} objects that needs to be cleaned up from null values. */ + public static void cleanSignature(List>> signature) { + + for(List> listOfListPcap : signature) { + for(List listOfPcap : listOfListPcap) { + listOfPcap.removeIf(el -> el == null); + } + } + } + + /** + * Deep copy to create an entirely new {@link List} of {@link List} of {@link List} of {@link PcapPacket} objects. + * @param destList A {@link List} of {@link List} of {@link List} of + * {@link PcapPacket} objects that will be the final container of the deep copy + * @param sourceList A {@link List} of {@link List} of {@link List} of + * {@link PcapPacket} objects that will be the source of the deep copy. + */ private static void listDeepCopy(List>> destList, List>> sourceList) { for(List> llPcapPacket : sourceList) { -- 2.34.1