From d3026c4b1681bea17b79f88f49162c6b78e781a1 Mon Sep 17 00:00:00 2001 From: rtrimana Date: Tue, 9 Apr 2019 14:45:40 -0700 Subject: [PATCH] Adding skipped packets correlation. --- .../execute_layer2_smarthome_all_detection.sh | 57 ++++++--- .../execute_signature_generation.sh | 109 +++++++++++++++--- .../execute_signature_validation.sh | 106 ++++++++++++++--- ...e_signature_validation_results_analysis.sh | 86 +++++++++++--- .../layer2/Layer2ClusterMatcher.java | 58 ++++++---- .../layer2/Layer2SignatureDetector.java | 87 +++++++------- 6 files changed, 381 insertions(+), 122 deletions(-) diff --git a/Code/Projects/PacketLevelSignatureExtractor/execute_layer2_smarthome_all_detection.sh b/Code/Projects/PacketLevelSignatureExtractor/execute_layer2_smarthome_all_detection.sh index a394819..0dd5d04 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_layer2_smarthome_all_detection.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_layer2_smarthome_all_detection.sh @@ -30,8 +30,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/arlo-camera/signatures/arlo-camera-offSignat RESULTS_FILE="$OUTPUT_DIR/arlo-camera/arlo-camera.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="548" EPSILON="10.0" +ON_SKIPPED_PACKETS="8" +OFF_SKIPPED_PACKETS="10" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -48,8 +50,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/blossom-sprinkler/signatures/blossom-sprinkl RESULTS_FILE="$OUTPUT_DIR/blossom-sprinkler/blossom-sprinkler.wlan1.detection.pcap___device-side.detectionresults" SIGNATURE_DURATION="9274" EPSILON="10.0" +ON_SKIPPED_PACKETS="9" +OFF_SKIPPED_PACKETS="4" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # PHONE SIDE @@ -60,8 +64,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/blossom-sprinkler/signatures/blossom-sprinkl RESULTS_FILE="$OUTPUT_DIR/blossom-sprinkler/blossom-sprinkler.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="3670" EPSILON="10.0" +ON_SKIPPED_PACKETS="28" +OFF_SKIPPED_PACKETS="8" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -78,8 +84,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/dlink-plug/signatures/dlink-plug-offSignatur RESULTS_FILE="$OUTPUT_DIR/dlink-plug/dlink-plug.wlan1.detection.pcap___device-side.detectionresults" SIGNATURE_DURATION="8866" EPSILON="10.0" +ON_SKIPPED_PACKETS="33" +OFF_SKIPPED_PACKETS="33" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # PHONE SIDE @@ -90,8 +98,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/dlink-plug/signatures/dlink-plug-offSignatur RESULTS_FILE="$OUTPUT_DIR/dlink-plug/dlink-plug.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="193" EPSILON="10.0" +ON_SKIPPED_PACKETS="2" +OFF_SKIPPED_PACKETS="4" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -108,8 +118,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/dlink-siren/signatures/dlink-siren-offSignat RESULTS_FILE="$OUTPUT_DIR/dlink-siren/dlink-siren.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="71" EPSILON="10.0" +ON_SKIPPED_PACKETS="3" +OFF_SKIPPED_PACKETS="5" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -128,8 +140,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/kwikset-doorlock/signatures/kwikset-doorlock RESULTS_FILE="$OUTPUT_DIR/kwikset-doorlock/kwikset-doorlock.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="3161" EPSILON="10.0" +ON_SKIPPED_PACKETS="12" +OFF_SKIPPED_PACKETS="6" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -148,8 +162,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/nest-thermostat/signatures/nest-thermostat-o RESULTS_FILE="$OUTPUT_DIR/nest-thermostat/nest-thermostat.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="1179" EPSILON="10.0" +ON_SKIPPED_PACKETS="12" +OFF_SKIPPED_PACKETS="39" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -167,9 +183,10 @@ ON_SIGNATURE="$SIGNATURES_BASE_DIR/st-plug/signatures/st-plug-onSignature-phone- OFF_SIGNATURE="$SIGNATURES_BASE_DIR/st-plug/signatures/st-plug-offSignature-phone-side.sig" RESULTS_FILE="$OUTPUT_DIR/st-plug/st-plug.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="2445" -EPSILON="10.0" +ON_SKIPPED_PACKETS="5" +OFF_SKIPPED_PACKETS="5" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -188,8 +205,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/tplink-bulb/signatures/tplink-bulb-offSignat RESULTS_FILE="$OUTPUT_DIR/tplink-bulb/tplink-bulb.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="162" EPSILON="10.0" +ON_SKIPPED_PACKETS="9" +OFF_SKIPPED_PACKETS="20" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -206,8 +225,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/tplink-plug/signatures/tplink-plug-offSignat RESULTS_FILE="$OUTPUT_DIR/tplink-plug/tplink-plug.wlan1.detection.pcap___device-side.detectionresults" SIGNATURE_DURATION="3660" EPSILON="10.0" +ON_SKIPPED_PACKETS="33" +OFF_SKIPPED_PACKETS="33" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # DEVICE SIDE OUTBOUND (contains only those packets that go through the WAN port, i.e., only the 556, 1293 sequence) @@ -218,8 +239,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/tplink-plug/signatures/tplink-plug-offSignat RESULTS_FILE="$OUTPUT_DIR/tplink-plug/tplink-plug.wlan1.detection.pcap___device-side-outbound.detectionresults" SIGNATURE_DURATION="224" EPSILON="10.0" +ON_SKIPPED_PACKETS="3" +OFF_SKIPPED_PACKETS="4" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # Phone side does not make sense as it is merely a subset of the device side and does not differentiate ONs from OFFs. @@ -240,8 +263,10 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/wemo-insight-plug/signatures/wemo-insight-pl RESULTS_FILE="$OUTPUT_DIR/wemo-insight-plug/wemo-insight-plug.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="106" EPSILON="10.0" +ON_SKIPPED_PACKETS="5" +OFF_SKIPPED_PACKETS="5" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -260,7 +285,9 @@ OFF_SIGNATURE="$SIGNATURES_BASE_DIR/wemo-plug/signatures/wemo-plug-offSignature- RESULTS_FILE="$OUTPUT_DIR/wemo-plug/wemo-plug.wlan1.detection.pcap___phone-side.detectionresults" SIGNATURE_DURATION="147" EPSILON="10.0" +ON_SKIPPED_PACKETS="4" +OFF_SKIPPED_PACKETS="4" -PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON'" +PROGRAM_ARGS="'$PCAP_FILE' '$ON_ANALYSIS' '$OFF_ANALYSIS' '$ON_SIGNATURE' '$OFF_SIGNATURE' '$RESULTS_FILE' '$SIGNATURE_DURATION' '$EPSILON' '$ON_SKIPPED_PACKETS' '$OFF_SKIPPED_PACKETS'" ./gradlew run -DmainClass=edu.uci.iotproject.detection.layer2.Layer2SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== diff --git a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh index abca11e..2e10d52 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_generation.sh @@ -31,7 +31,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ================================================= BLOSSOM SPRINKLER ================================================== @@ -50,7 +50,7 @@ DELETED_SEQUENCES_ON="2" DELETED_SEQUENCES_OFF="3" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # PHONE SIDE DEVICE_IP="192.168.1.246" @@ -63,7 +63,7 @@ DELETED_SEQUENCES_ON="0" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ==================================================== D-LINK PLUG ===================================================== @@ -81,7 +81,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # PHONE SIDE DEVICE_IP="192.168.1.246" @@ -94,7 +94,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ==================================================== D-LINK SIREN ==================================================== @@ -114,7 +114,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ===================================================== HUE BULB ======================================================= @@ -134,7 +134,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ================================================= KWIKSET DOORLOCK =================================================== @@ -154,7 +154,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ================================================= NEST THERMOSTAT ==================================================== @@ -174,7 +174,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ====================================================== ST PLUG ======================================================= @@ -194,7 +194,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ==================================================== TP-LINK BULB ==================================================== @@ -213,7 +213,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== # ==================================================== TP-LINK PLUG ==================================================== @@ -234,7 +234,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # DEVICE SIDE OUTBOUND (contains only those packets that go through the WAN port, i.e., only the 556, 1293 sequence) # WAN signature. @@ -246,7 +246,7 @@ DELETED_SEQUENCES_ON="0" DELETED_SEQUENCES_OFF="0" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # Phone side does not make sense as it is merely a subset of the device side and does not differentiate ONs from OFFs. # ====================================================================================================================== @@ -267,7 +267,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -288,5 +288,84 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.SignatureGenerator --args="$PROGRAM_ARGS" +# ====================================================================================================================== + + + +# NEW DEVICES WITH ST APP +# ================================================= WEMO PLUG ST APP =================================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/wemo-plug-stapp/wlan1/wemo-plug-stapp.wlan1.local.pcap" + +# Has WAN signature. +OUTPUT_PCAP="$OUTPUT_DIR/wemo-plug-stapp/wlan1/wemo-plug-stapp-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/wemo-plug-stapp/timestamps/wemo-plug-stapp-apr-4-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/wemo-plug-stapp/signatures/wemo-plug-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/wemo-plug-stapp/signatures/wemo-plug-stapp-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/wemo-plug-stapp/analyses/wemo-plug-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/wemo-plug-stapp/analyses/wemo-plug-stapp-offClusters-phone-side.cls" +EPSILON="10.0" +DELETED_SEQUENCES_ON="1,2,2" +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" +# ====================================================================================================================== + +# ============================================= WEMO INSIGHT PLUG ST APP =============================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/wlan1/wemo-insight-plug-stapp.wlan1.local.pcap" + +# Has WAN signature. +OUTPUT_PCAP="$OUTPUT_DIR/wemo-insight-plug-stapp/wlan1/wemo-insight-plug-stapp-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/timestamps/wemo-insight-plug-stapp-apr-4-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/wemo-insight-plug-stapp/signatures/wemo-insight-plug-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/wemo-insight-plug-stapp/signatures/wemo-insight-plug-stapp-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/wemo-insight-plug-stapp/analyses/wemo-insight-plug-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/wemo-insight-plug-stapp/analyses/wemo-insight-plug-stapp-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" +# ====================================================================================================================== + +# ================================================= HUE BULB ST APP ==================================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/hue-bulb-stapp/wlan1/hue-bulb-stapp.wlan1.local.pcap" + +# Has WAN signature. +OUTPUT_PCAP="$OUTPUT_DIR/hue-bulb-stapp/wlan1/hue-bulb-stapp-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/hue-bulb-stapp/timestamps/hue-bulb-stapp-apr-5-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/hue-bulb-stapp/signatures/hue-bulb-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/hue-bulb-stapp/signatures/hue-bulb-stapp-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/hue-bulb-stapp/analyses/hue-bulb-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/hue-bulb-stapp/analyses/hue-bulb-stapp-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" # ====================================================================================================================== + +# ================================================= LIFX BULB ST APP =================================================== +INPUT_PCAP="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/wlan1/lifx-bulb-stapp.wlan1.local.pcap" + +# Has WAN signature. +OUTPUT_PCAP="$OUTPUT_DIR/lifx-bulb-stapp/wlan1/lifx-bulb-stapp-processed.pcap" +TIMESTAMP_FILE="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/timestamps/lifx-bulb-stapp-apr-5-2019.timestamps" +DEVICE_IP="192.168.1.246" +ON_SIGNATURE="$OUTPUT_DIR/lifx-bulb-stapp/signatures/lifx-bulb-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$OUTPUT_DIR/lifx-bulb-stapp/signatures/lifx-bulb-stapp-offSignature-phone-side.sig" +ON_ANALYSIS="$OUTPUT_DIR/lifx-bulb-stapp/analyses/lifx-bulb-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$OUTPUT_DIR/lifx-bulb-stapp/analyses/lifx-bulb-stapp-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 188d3c8..37a3310 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation.sh @@ -29,7 +29,7 @@ SIGNATURE_DURATION="548" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -47,7 +47,7 @@ SIGNATURE_DURATION="9274" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # PHONE SIDE ON_ANALYSIS="$SIGNATURES_BASE_DIR/blossom-sprinkler/analyses/blossom-sprinkler-onClusters-phone-side.cls" @@ -59,7 +59,7 @@ SIGNATURE_DURATION="3670" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -77,7 +77,7 @@ SIGNATURE_DURATION="8866" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # PHONE SIDE ON_ANALYSIS="$SIGNATURES_BASE_DIR/dlink-plug/analyses/dlink-plug-onClusters-phone-side.cls" @@ -89,7 +89,7 @@ SIGNATURE_DURATION="193" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -107,7 +107,7 @@ SIGNATURE_DURATION="71" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -126,7 +126,7 @@ SIGNATURE_DURATION="25" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -146,7 +146,7 @@ SIGNATURE_DURATION="3161" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -166,7 +166,7 @@ SIGNATURE_DURATION="1179" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -186,7 +186,7 @@ SIGNATURE_DURATION="2445" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -206,7 +206,7 @@ SIGNATURE_DURATION="162" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -224,7 +224,7 @@ SIGNATURE_DURATION="3660" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" PCAP_FILE="$SIGNATURES_BASE_DIR/tplink-plug/wlan1/tplink-plug.wlan1.local.pcap" @@ -238,7 +238,7 @@ SIGNATURE_DURATION="224" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # Phone side does not make sense as it is merely a subset of the device side and does not differentiate ONs from OFFs. # ====================================================================================================================== @@ -260,7 +260,7 @@ SIGNATURE_DURATION="106" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -280,5 +280,81 @@ SIGNATURE_DURATION="147" 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" +#./gradlew run -DmainClass=edu.uci.iotproject.detection.layer3.Layer3SignatureDetector --args="$PROGRAM_ARGS" +# ====================================================================================================================== + + + + +# NEW DEVICES WITH ST APP +# ================================================= WEMO PLUG ST APP =================================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/wemo-plug-stapp/wlan1/wemo-plug-stapp.wlan1.local.pcap" + +# Has no device side signature. + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/wemo-plug-stapp/analyses/wemo-plug-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/wemo-plug-stapp/analyses/wemo-plug-stapp-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/wemo-plug-stapp/signatures/wemo-plug-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/wemo-plug-stapp/signatures/wemo-plug-stapp-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/wemo-plug-stapp/wemo-plug-stapp.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="2073" +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" # ====================================================================================================================== + +# ================================================= WEMO PLUG ST APP =================================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/wlan1/wemo-insight-plug-stapp.wlan1.local.pcap" + +# Has no device side signature. + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/analyses/wemo-insight-plug-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/analyses/wemo-insight-plug-stapp-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/signatures/wemo-insight-plug-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/wemo-insight-plug-stapp/signatures/wemo-insight-plug-stapp-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/wemo-insight-plug-stapp/wemo-insight-plug-stapp.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="5457" +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" +# ====================================================================================================================== + +# ================================================= HUE BULB ST APP ==================================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/hue-bulb-stapp/wlan1/hue-bulb-stapp.wlan1.local.pcap" + +# Has no device side signature. + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/hue-bulb-stapp/analyses/hue-bulb-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/hue-bulb-stapp/analyses/hue-bulb-stapp-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/hue-bulb-stapp/signatures/hue-bulb-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/hue-bulb-stapp/signatures/hue-bulb-stapp-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/hue-bulb-stapp/hue-bulb-stapp.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="3086" +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" +# ====================================================================================================================== + +# ================================================= LIFX BULB ST APP =================================================== +PCAP_FILE="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/wlan1/lifx-bulb-stapp.wlan1.local.pcap" + +# Has no device side signature. + +# PHONE SIDE +ON_ANALYSIS="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/analyses/lifx-bulb-stapp-onClusters-phone-side.cls" +OFF_ANALYSIS="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/analyses/lifx-bulb-stapp-offClusters-phone-side.cls" +ON_SIGNATURE="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/signatures/lifx-bulb-stapp-onSignature-phone-side.sig" +OFF_SIGNATURE="$SIGNATURES_BASE_DIR/lifx-bulb-stapp/signatures/lifx-bulb-stapp-offSignature-phone-side.sig" +RESULTS_FILE="$OUTPUT_DIR/lifx-bulb-stapp/lifx-bulb-stapp.wlan1.validation.pcap___phone-side.detectionresults" +SIGNATURE_DURATION="3086" +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 2286983..56aa6f3 100755 --- a/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation_results_analysis.sh +++ b/Code/Projects/PacketLevelSignatureExtractor/execute_signature_validation_results_analysis.sh @@ -20,7 +20,7 @@ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -33,14 +33,14 @@ RESULTS_FILE="$RESULTS_BASE_DIR/blossom-sprinkler/blossom-sprinkler.wlan1.valida 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # PHONE SIDE RESULTS_FILE="$RESULTS_BASE_DIR/blossom-sprinkler/blossom-sprinkler.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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -54,14 +54,14 @@ RESULTS_FILE="$RESULTS_BASE_DIR/dlink-plug/dlink-plug.wlan1.validation.pcap___de 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # PHONE SIDE RESULTS_FILE="$RESULTS_BASE_DIR/dlink-plug/dlink-plug.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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -74,7 +74,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/dlink-siren/dlink-siren.wlan1.validation.pcap___ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -87,7 +87,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/hue-bulb/hue-bulb.wlan1.validation.pcap___phone- 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -102,7 +102,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/kwikset-doorlock/kwikset-doorlock.wlan1.validati 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -117,7 +117,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/nest-thermostat/nest-thermostat.wlan1.validation 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -132,7 +132,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/st-plug/st-plug.wlan1.validation.pcap___phone-si 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -147,7 +147,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/tplink-bulb/tplink-bulb.wlan1.validation.pcap___ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -160,14 +160,14 @@ RESULTS_FILE="$RESULTS_BASE_DIR/tplink-plug/tplink-plug.wlan1.validation.pcap___ 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # DEVICE SIDE OUTBOUND RESULTS_FILE="$RESULTS_BASE_DIR/tplink-plug/tplink-plug.wlan1.validation.pcap___device-side-outbound.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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -183,7 +183,7 @@ RESULTS_FILE="$RESULTS_BASE_DIR/wemo-insight-plug/wemo-insight-plug.wlan1.valida 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" +#./gradlew run -DmainClass=edu.uci.iotproject.evaluation.DetectionResultsAnalyzer --args="$PROGRAM_ARGS" # ====================================================================================================================== @@ -199,5 +199,63 @@ RESULTS_FILE="$RESULTS_BASE_DIR/wemo-plug/wemo-plug.wlan1.validation.pcap___phon 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" +# ====================================================================================================================== + + +# NEW DEVICES WITH ST APP +# ================================================== WEMO PLUG ST APP ================================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/wemo-plug-stapp/timestamps/wemo-plug-stapp-apr-4-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/wemo-plug-stapp/wemo-plug-stapp.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" +# ====================================================================================================================== + +# ================================================== WEMO PLUG ST APP ================================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/wemo-insight-plug-stapp/timestamps/wemo-insight-plug-stapp-apr-4-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/wemo-insight-plug-stapp/wemo-insight-plug-stapp.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" +# ====================================================================================================================== + +# ================================================== HUE BULB ST APP =================================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/hue-bulb-stapp/timestamps/hue-bulb-stapp-apr-5-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/hue-bulb-stapp/hue-bulb-stapp.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" +# ====================================================================================================================== + +# ================================================== LIFX BULB ST APP ================================================== +TIMESTAMPS_FILE="$TIMESTAMPS_BASE_DIR/lifx-bulb-stapp/timestamps/lifx-bulb-stapp-apr-5-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/lifx-bulb-stapp/lifx-bulb-stapp.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" # ====================================================================================================================== \ No newline at end of file diff --git a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2ClusterMatcher.java b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2ClusterMatcher.java index 3bb7207..5bf4655 100644 --- a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2ClusterMatcher.java +++ b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2ClusterMatcher.java @@ -28,7 +28,6 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye * of {@link #mCluster} and has so far matched {@code j} packets of that particular sequence. */ private final Map mPerFlowSeqMatchers = new HashMap<>(); -// private final Map mPerFlowRangeMatcher = new HashMap<>(); private final Map> mPerFlowRangeMatcher = new HashMap<>(); private final Function mFlowFilter; @@ -48,17 +47,19 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye /** * Keeping track of maximum number of skipped packets */ - //private int mMaxSkippedPackets; - private List mMaxSkippedPackets; + private int mMaxSkippedPackets; +// private List mMaxSkippedPackets; + + private int mLimitSkippedPackets; /** * Create a new {@link Layer2ClusterMatcher} that attempts to find occurrences of {@code cluster}'s members. * @param cluster The sequence mutations that the new {@link Layer2ClusterMatcher} should search for. */ public Layer2ClusterMatcher(List> cluster, int inclusionTimeMillis, - boolean isRangeBased, double eps) { + boolean isRangeBased, double eps, int limitSkippedPackets) { // Consider all flows if no flow filter specified. - this(cluster, flow -> true, inclusionTimeMillis, isRangeBased, eps); + this(cluster, flow -> true, inclusionTimeMillis, isRangeBased, eps, limitSkippedPackets); } /** @@ -75,15 +76,17 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye * @param eps The epsilon value used in the DBSCAN algorithm. */ public Layer2ClusterMatcher(List> cluster, Function flowFilter, - int inclusionTimeMillis, boolean isRangeBased, double eps) { + int inclusionTimeMillis, boolean isRangeBased, double eps, int limitSkippedPackets) { super(cluster, isRangeBased); mFlowFilter = flowFilter; mRangeBased = isRangeBased; mEps = eps; mInclusionTimeMillis = inclusionTimeMillis == 0 ? TriggerTrafficExtractor.INCLUSION_WINDOW_MILLIS : inclusionTimeMillis; - //mMaxSkippedPackets = 0; - mMaxSkippedPackets = new ArrayList<>(); + mMaxSkippedPackets = 0; +// mMaxSkippedPackets = new ArrayList<>(); + // Give integer's MAX_VALUE if -1 + mLimitSkippedPackets = limitSkippedPackets == -1 ? Integer.MAX_VALUE : limitSkippedPackets; } @Override @@ -127,9 +130,11 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye if (matched) { if (sm.getMatchedPacketsCount() == sm.getTargetSequencePacketCount()) { // Update maximum skipped packets - updateMaxSkippedPackets(flow.getPackets(), sm.getMatchedPackets()); - // Sequence matcher has a match. Report it to observers. - mObservers.forEach(o -> o.onMatch(this, sm.getMatchedPackets())); + boolean stillMatch = checkMaxSkippedPackets(flow.getPackets(), sm.getMatchedPackets()); + if (stillMatch) { + // Sequence matcher has a match. Report it to observers. + mObservers.forEach(o -> o.onMatch(this, sm.getMatchedPackets())); + } // Remove the now terminated sequence matcher. matchers[i][j] = null; } else { @@ -155,18 +160,21 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye } // Update the maximum number of skipped packets - private void updateMaxSkippedPackets(List flowPackets, List matchedPackets) { + private boolean checkMaxSkippedPackets(List flowPackets, List matchedPackets) { // Count number of skipped packets by looking into // the difference of indices of two matched packets + boolean stillMatch = true; for(int i = 1; i < matchedPackets.size(); ++i) { int currIndex = flowPackets.indexOf(matchedPackets.get(i-1)); int nextIndex = flowPackets.indexOf(matchedPackets.get(i)); int skippedPackets = nextIndex - currIndex; -// if (mMaxSkippedPackets < skippedPackets) { -// mMaxSkippedPackets = skippedPackets; -// } - mMaxSkippedPackets.add(skippedPackets); + if (mMaxSkippedPackets < skippedPackets) { + mMaxSkippedPackets = skippedPackets; + stillMatch = false; + } +// mMaxSkippedPackets.add(skippedPackets); } + return stillMatch; } private void rangeBasedMatching(Layer2Flow flow, PcapPacket newPacket) { @@ -216,9 +224,11 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye if (matched) { if (sm.getMatchedPacketsCount() == sm.getTargetSequencePacketCount()) { // Update maximum skipped packets - updateMaxSkippedPackets(flow.getPackets(), sm.getMatchedPackets()); - // Sequence matcher has a match. Report it to observers. - mObservers.forEach(o -> o.onMatch(this, sm.getMatchedPackets())); + boolean stillMatch = checkMaxSkippedPackets(flow.getPackets(), sm.getMatchedPackets()); + if (stillMatch) { + // Sequence matcher has a match. Report it to observers. + mObservers.forEach(o -> o.onMatch(this, sm.getMatchedPackets())); + } // Terminate sequence matcher since matching is complete. listMatchers.remove(matcher); } @@ -268,10 +278,10 @@ public class Layer2ClusterMatcher extends AbstractClusterMatcher implements Laye /** * Return the maximum number of skipped packets. */ -// public int getMaxSkippedPackets() { -// return mMaxSkippedPackets; -// } - public List getMaxSkippedPackets() { - return mMaxSkippedPackets; + public int getMaxSkippedPackets() { + return mMaxSkippedPackets; } +// public List getMaxSkippedPackets() { +// return mMaxSkippedPackets; +// } } diff --git a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2SignatureDetector.java b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2SignatureDetector.java index 8627aa2..90c47c2 100644 --- a/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2SignatureDetector.java +++ b/Code/Projects/PacketLevelSignatureExtractor/src/main/java/edu/uci/iotproject/detection/layer2/Layer2SignatureDetector.java @@ -52,19 +52,23 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb public static void main(String[] args) throws PcapNativeException, NotOpenException, IOException { // Parse required parameters. - if (args.length < 8) { + if (args.length < 10) { String errMsg = String.format("SPECTO version 1.0\n" + "Copyright (C) 2018-2019 Janus Varmarken and Rahmadi Trimananda.\n" + "University of California, Irvine.\n" + "All rights reserved.\n\n" + - "Usage: %s inputPcapFile onAnalysisFile offAnalysisFile onSignatureFile offSignatureFile resultsFile" + + "Usage: %s inputPcapFile onAnalysisFile offAnalysisFile onSignatureFile offSignatureFile " + + "resultsFile signatureDuration eps onMaxSkippedPackets offMaxSkippedPackets" + "\n inputPcapFile: the target of the detection" + "\n onAnalysisFile: the file that contains the ON clusters analysis" + "\n offAnalysisFile: the file that contains the OFF clusters analysis" + "\n onSignatureFile: the file that contains the ON signature to search for" + "\n offSignatureFile: the file that contains the OFF signature to search for" + "\n resultsFile: where to write the results of the detection" + - "\n signatureDuration: the maximum duration of signature detection", + "\n signatureDuration: the maximum duration of signature detection" + + "\n eps: the epsilon value for the DBSCAN algorithm" + + "\n onMaxSkippedPackets: the maximum duration of ON signature detection (put -1 if not used)" + + "\n offMaxSkippedPackets: the maximum duration of OFF signature detection (put -1 if not used)", Layer2SignatureDetector.class.getSimpleName()); System.out.println(errMsg); String optParamsExplained = "Above are the required, positional arguments. In addition to these, the " + @@ -81,7 +85,6 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb System.out.println(optParamsExplained); return; } - // TODO: We could take 7 inputs if we decided to use the cluster analyses. final String pcapFile = args[0]; final String onClusterAnalysisFile = args[1]; final String offClusterAnalysisFile = args[2]; @@ -90,6 +93,8 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb final String resultsFile = args[5]; final int signatureDuration = Integer.parseInt(args[6]); final double eps = Double.parseDouble(args[7]); + final int onMaxSkippedPackets = Integer.parseInt(args[8]); + final int offMaxSkippedPackets = Integer.parseInt(args[8]); // Parse optional parameters. List> onSignatureMacFilters = null, offSignatureMacFilters = null; @@ -146,11 +151,13 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb offSignature = PcapPacketUtils.useRangeBasedMatching(offSignature, offClusterAnalysis); } Layer2SignatureDetector onDetector = onSignatureMacFilters == null ? - new Layer2SignatureDetector(onSignature, signatureDuration, isRangeBasedForOn, eps) : - new Layer2SignatureDetector(onSignature, onSignatureMacFilters, signatureDuration, isRangeBasedForOn, eps); + new Layer2SignatureDetector(onSignature, signatureDuration, isRangeBasedForOn, eps, onMaxSkippedPackets) : + new Layer2SignatureDetector(onSignature, onSignatureMacFilters, signatureDuration, + isRangeBasedForOn, eps, onMaxSkippedPackets); Layer2SignatureDetector offDetector = offSignatureMacFilters == null ? - new Layer2SignatureDetector(offSignature, signatureDuration, isRangeBasedForOff, eps) : - new Layer2SignatureDetector(offSignature, offSignatureMacFilters, signatureDuration, isRangeBasedForOff, eps); + new Layer2SignatureDetector(offSignature, signatureDuration, isRangeBasedForOff, eps, offMaxSkippedPackets) : + new Layer2SignatureDetector(offSignature, offSignatureMacFilters, signatureDuration, + isRangeBasedForOff, eps, offMaxSkippedPackets); final List detectedEvents = new ArrayList<>(); onDetector.addObserver((signature, match) -> { UserAction event = new UserAction(UserAction.Type.TOGGLE_ON, match.get(0).get(0).getTimestamp()); @@ -178,22 +185,22 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb detectedEvents.stream().filter(ua -> ua.getType() == UserAction.Type.TOGGLE_ON).count(); String resultOff = "# Number of detected events of type " + UserAction.Type.TOGGLE_OFF + ": " + detectedEvents.stream().filter(ua -> ua.getType() == UserAction.Type.TOGGLE_OFF).count(); -// String onMaxSkippedPackets = "# Number of skipped packets in ON signature " + -// Integer.toString(onDetector.getMaxSkippedPackets()); - String onMaxSkippedPackets = "# Number of skipped packets in ON signature: "; - for(Integer skippedPackets : onDetector.getMaxSkippedPackets()) { - System.out.println(skippedPackets); - } -// String offMaxSkippedPackets = "# Number of skipped packets in OFF signature " + -// Integer.toString(offDetector.getMaxSkippedPackets()); - String offMaxSkippedPackets = "# Number of skipped packets in OFF signature: "; - for(Integer skippedPackets : offDetector.getMaxSkippedPackets()) { - System.out.println(skippedPackets); - } + String onMaximumSkippedPackets = "# Maximum number of skipped packets in ON signature " + + Integer.toString(onDetector.getMaxSkippedPackets()); +// String onMaxSkippedPackets = "# Number of skipped packets in ON signature: "; +// for(Integer skippedPackets : onDetector.getMaxSkippedPackets()) { +// System.out.println(skippedPackets); +// } + String offMaximumSkippedPackets = "# Maximum number of skipped packets in OFF signature " + + Integer.toString(offDetector.getMaxSkippedPackets()); +// String offMaxSkippedPackets = "# Number of skipped packets in OFF signature: "; +// for(Integer skippedPackets : offDetector.getMaxSkippedPackets()) { +// System.out.println(skippedPackets); +// } PrintWriterUtils.println(resultOn, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); PrintWriterUtils.println(resultOff, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); - PrintWriterUtils.println(onMaxSkippedPackets, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); - PrintWriterUtils.println(offMaxSkippedPackets, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); + PrintWriterUtils.println(onMaximumSkippedPackets, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); + PrintWriterUtils.println(offMaximumSkippedPackets, resultsWriter, DUPLICATE_OUTPUT_TO_STD_OUT); // Flush output to results file and close it. resultsWriter.flush(); @@ -233,15 +240,16 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb private int mInclusionTimeMillis; - //private int mMaxSkippedPackets; - private List mMaxSkippedPackets; + private int mMaxSkippedPackets; +// private List mMaxSkippedPackets; - public Layer2SignatureDetector(List>> searchedSignature, int signatureDuration, boolean isRangeBased, double eps) { - this(searchedSignature, null, signatureDuration, isRangeBased, eps); + public Layer2SignatureDetector(List>> searchedSignature, int signatureDuration, + boolean isRangeBased, double eps, int limitSkippedPackets) { + this(searchedSignature, null, signatureDuration, isRangeBased, eps, limitSkippedPackets); } public Layer2SignatureDetector(List>> searchedSignature, List> flowFilters, int inclusionTimeMillis, boolean isRangeBased, double eps) { + Boolean>> flowFilters, int inclusionTimeMillis, boolean isRangeBased, double eps, int limitSkippedPackets) { if (flowFilters != null && flowFilters.size() != searchedSignature.size()) { throw new IllegalArgumentException("If flow filters are used, there must be a flow filter for each cluster " + "of the signature."); @@ -251,8 +259,9 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb for (int i = 0; i < mSignature.size(); i++) { List> cluster = mSignature.get(i); Layer2ClusterMatcher clusterMatcher = flowFilters == null ? - new Layer2ClusterMatcher(cluster, inclusionTimeMillis, isRangeBased, eps) : - new Layer2ClusterMatcher(cluster, flowFilters.get(i), inclusionTimeMillis, isRangeBased, eps); + new Layer2ClusterMatcher(cluster, inclusionTimeMillis, isRangeBased, eps, limitSkippedPackets) : + new Layer2ClusterMatcher(cluster, flowFilters.get(i), inclusionTimeMillis, isRangeBased, + eps, limitSkippedPackets); clusterMatcher.addObserver(this); clusterMatchers.add(clusterMatcher); } @@ -270,16 +279,16 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb mClusterMatchers.forEach(cm -> mFlowReassembler.addObserver(cm)); mInclusionTimeMillis = inclusionTimeMillis == 0 ? TriggerTrafficExtractor.INCLUSION_WINDOW_MILLIS : inclusionTimeMillis; - //mMaxSkippedPackets = 0; - mMaxSkippedPackets = new ArrayList<>(); + mMaxSkippedPackets = 0; +// mMaxSkippedPackets = new ArrayList<>(); } -// public int getMaxSkippedPackets() { -// return mMaxSkippedPackets; -// } - public List getMaxSkippedPackets() { + public int getMaxSkippedPackets() { return mMaxSkippedPackets; } +// public List getMaxSkippedPackets() { +// return mMaxSkippedPackets; +// } @Override public void gotPacket(PcapPacket packet) { @@ -295,10 +304,10 @@ public class Layer2SignatureDetector implements PacketListener, ClusterMatcherOb mPendingMatches[mClusterMatcherIds.get(clusterMatcher)].add(match); checkSignatureMatch(); // Update maximum number of skipped packets - //if (mMaxSkippedPackets < ((Layer2ClusterMatcher) clusterMatcher).getMaxSkippedPackets()) { - // mMaxSkippedPackets = ((Layer2ClusterMatcher) clusterMatcher).getMaxSkippedPackets(); - //} - mMaxSkippedPackets = ((Layer2ClusterMatcher) clusterMatcher).getMaxSkippedPackets(); + if (mMaxSkippedPackets < ((Layer2ClusterMatcher) clusterMatcher).getMaxSkippedPackets()) { + mMaxSkippedPackets = ((Layer2ClusterMatcher) clusterMatcher).getMaxSkippedPackets(); + } +// mMaxSkippedPackets = ((Layer2ClusterMatcher) clusterMatcher).getMaxSkippedPackets(); } } -- 2.34.1