From: Janus Varmarken Date: Fri, 27 Jul 2018 19:22:17 +0000 (-0700) Subject: TcpConversationUtils.java and Main.java: add support for counting packet pair frequen... X-Git-Url: http://plrg.eecs.uci.edu/git/?p=pingpong.git;a=commitdiff_plain;h=e193fa2e8bc7dc4d218e5b6177d13d350712d7fa;hp=-c TcpConversationUtils.java and Main.java: add support for counting packet pair frequencies per hostname; switch filepaths to point to D-Link files. --- e193fa2e8bc7dc4d218e5b6177d13d350712d7fa diff --git a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/Main.java b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/Main.java index 89448cf..45fea17 100644 --- a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/Main.java +++ b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/Main.java @@ -28,12 +28,18 @@ public class Main { public static void main(String[] args) throws PcapNativeException, NotOpenException, EOFException, TimeoutException, UnknownHostException { // ------------------------------------------------------------------------------------------------------------- // ------------ # Code for extracting traffic generated by a device within x seconds of a trigger # ------------ - // Paths to input and output files (consider supplying these as arguments instead) - final String inputPcapFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/tplink/tplink.wlan1.local.pcap"; - final String outputPcapFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/tplink/tplink-processed.pcap"; - final String triggerTimesFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/tplink/tplink-july-25-2018.timestamps"; - // IP of the device for which traffic is to be extracted - final String deviceIp = "192.168.1.159"; + // Paths to input and output files (consider supplying these as arguments instead) and IP of the device for + // which traffic is to be extracted: + // D-Link July 26 experiment + final String inputPcapFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/dlink/dlink.wlan1.local.pcap"; + final String outputPcapFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/dlink/dlink-processed.pcap"; + final String triggerTimesFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/dlink/dlink-july-26-2018.timestamps"; + final String deviceIp = "192.168.1.246"; + // TP-Link July 25 experiment +// final String inputPcapFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/tplink/tplink.wlan1.local.pcap"; +// final String outputPcapFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/tplink/tplink-processed.pcap"; +// final String triggerTimesFile = "/Users/varmarken/temp/UCI IoT Project/experiments/2018-07/tplink/tplink-july-25-2018.timestamps"; +// final String deviceIp = "192.168.1.159"; TriggerTimesFileReader ttfr = new TriggerTimesFileReader(); List triggerTimes = ttfr.readTriggerTimes(triggerTimesFile, false); @@ -65,9 +71,10 @@ public class Main { final Map> pktSeqFreqsByHostname = new HashMap<>(); convsByHostname.forEach((host, convs) -> pktSeqFreqsByHostname.put(host, TcpConversationUtils.countPacketSequenceFrequencies(convs))); System.out.println("Counted frequencies of packet sequences exchanged with each hostname."); - - - + // For each hostname, count frequencies of packet pairs exchanged with that hostname across all conversations + final Map> pktPairFreqsByHostname = + TcpConversationUtils.countPacketPairFrequenciesByHostname(allConversations, dnsMap); + System.out.println("Counted frequencies of packet pairs per hostname"); // ------------------------------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------------- } diff --git a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/analysis/TcpConversationUtils.java b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/analysis/TcpConversationUtils.java index ff7b4ad..427d890 100644 --- a/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/analysis/TcpConversationUtils.java +++ b/Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/analysis/TcpConversationUtils.java @@ -173,4 +173,17 @@ public class TcpConversationUtils { return result; } + public static Map> countPacketPairFrequenciesByHostname(Collection tcpConversations, DnsMap ipHostnameMappings) { + Map> convsByHostname = groupConversationsByHostname(tcpConversations, ipHostnameMappings); + HashMap> result = new HashMap<>(); + for (Map.Entry> entry : convsByHostname.entrySet()) { + // Merge all packet pairs exchanged during the course of all conversations with hostname into one list + List allPairsExchangedWithHostname = new ArrayList<>(); + entry.getValue().forEach(conversation -> allPairsExchangedWithHostname.addAll(extractPacketPairs(conversation))); + // Then count the frequencies of packet pairs exchanged with the hostname, irrespective of individual + // conversations + result.put(entry.getKey(), countPacketPairFrequencies(allPairsExchangedWithHostname)); + } + return result; + } }