├── LICENSE ├── README.md ├── samples ├── README.md ├── Visualization.ipynb ├── Visualization.py ├── classifier.ipynb ├── classifier.py ├── decisiontree.png ├── google │ ├── README.md │ ├── google-webbrowse.pcap │ └── spl.log ├── meterpreter │ ├── meterpreter_https.pcap │ └── spl.log ├── poshc2 │ ├── poshc2_pcap.pcap │ └── spl.log ├── shade-ransomware │ ├── 2019-10-15-Shade-ransomware-infection-traffic.pcap │ ├── README.md │ └── spl.log └── web-browse │ └── spl.log ├── scripts ├── __load__.zeek └── spl-spt.zeek └── zkg.meta /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 by Michael Torres 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | (1) Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | 9 | (2) Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in 11 | the documentation and/or other materials provided with the 12 | distribution. 13 | 14 | (3) Neither the name of Michael Torres, nor 15 | the names of contributors may be used to endorse or promote 16 | products derived from this software without specific prior written 17 | permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 | POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | SPL-SPT 3 | Sequence of Payload Lengths/Sequence of Payload Times 4 | ================================= 5 | 6 | ## Purpose 7 | This Zeek plugin will save the following fields to _spl.log_ in the logging directory. 8 | 9 | * uid - The related SSL session's unique identifier. 10 | * orig_spl - A vector of configurable length (default 20), containing the lengths of encrypted payloads from the session originator 11 | * resp_spl - A vector of configurable length (default 20), containing the lengths of encrypted payloads from the session responder 12 | * orig_spt - A vector of configurable length (default 20), containing the time interval between encrypted payloads from the session originator 13 | * resp_spt - A vector of configurable length (default 20), containing the time interval between encrypted payloads from the session responder 14 | 15 | ## Rationale 16 | 17 | Cisco researchers performed a study with the goal of identifying malicious network traffic when it uses TLS. 18 | In this study, they showed that a random-forest model, as implemented by SciKit-Learn, can be made up to 30% more accurate by including data on per-payload sizes and per-payload intervals. Other research has supported this claim. 19 | 20 | By creating a log containing this data, I hope to enable the creation of new and interesting analytics to detect malware using TLS to communicate. 21 | 22 | ## Installation 23 | 24 | If cloned from source: 25 | ``` 26 | $ zkg install . 27 | ``` 28 | 29 | Alternatively, you could copy _spl-spt.zeek_ into _/opt/zeek/share/zeek/site/spl-spt/_, then add the following to _local.zeek_ 30 | ``` 31 | @load ./spl-spt 32 | ``` 33 | 34 | If using Zeek > 3.0 or a Zeek-product, like Corelight: 35 | ``` 36 | zkg install spl-spt 37 | ``` 38 | 39 | For what it's worth, I highly recommend enabling JSON logging by adding the following to _local.zeek_ 40 | ``` 41 | @load tuning/json-logs.zeek 42 | ``` 43 | 44 | ## Configuration 45 | 46 | If you want the vectors to be larger (or smaller) in length, edit the following values inside _local.zeek_ after the package is loaded. 47 | 48 | * SPL::spl_length - The length of the two payload-length vectors 49 | * SPL::spt_length - The length of the two payload-time vectors 50 | 51 | ## Errata 52 | As Anthony Kaza points out, the generated data is not actually the length/interval of packets, it is the interval between TLS encrypted records. This oversight was because my original implementation generated this data using the _tcp\_packet_ event, where the length parameter is actually the length of the packet. Due to performance considerations, I elected to generate the data only when DPD identifies a SSL/TLS session, and then only for the encrypted data transfer, by using the _ssl\_encrypted\_data_ event. 53 | 54 | Unfortunately, at that point I was already committed to the "SPL-SPT" acronym. As such, I renamed this package to "Sequence of Payload Lengths," which, while still not wholly correct, is at least closer to correct. 55 | 56 | 57 | ## References 58 | https://blogs.cisco.com/security/detecting-encrypted-malware-traffic-without-decryption 59 | 60 | http://ccr.sigcomm.org/online/files/p7-williams.pdf 61 | 62 | https://dl.acm.org/doi/pdf/10.1145/3097983.3098163 63 | -------------------------------------------------------------------------------- /samples/README.md: -------------------------------------------------------------------------------- 1 | # Sample data 2 | 3 | Here I have a couple quick scripts for visualizing and classification of data based upon the pre-computed SPL logs in sub-directories. Note, I didn't include the raw PCAP for _web-browse_ because it included traffic from my personal devices, and I don't want to accidentally disclose something private. -------------------------------------------------------------------------------- /samples/Visualization.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import matplotlib.pyplot as plt" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "samples = ['google','shade-ransomware']\n", 20 | "\n", 21 | "dataframes = dict()\n", 22 | "for sample in samples:\n", 23 | " with open(sample + \"/spl.log\") as fl:\n", 24 | " dataframes[sample] = pd.read_json(fl, lines=True)" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 8, 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "data": { 34 | "image/png": "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\n", 35 | "text/plain": [ 36 | "
" 37 | ] 38 | }, 39 | "metadata": { 40 | "needs_background": "light" 41 | }, 42 | "output_type": "display_data" 43 | } 44 | ], 45 | "source": [ 46 | "google_spls = []\n", 47 | "for x in dataframes['google']['orig_spl'].iloc:\n", 48 | " google_spls += x\n", 49 | "\n", 50 | "plt.subplot(1,3,1)\n", 51 | "plt.suptitle(\"Sequence of packet lengths - Originator\")\n", 52 | "plt.title(\"Google\")\n", 53 | "plt.plot(google_spls, 'ko-')\n", 54 | "plt.xlabel(\"Sequence\")\n", 55 | "plt.ylabel(\"Packet size\")\n", 56 | "\n", 57 | "\n", 58 | "shade_spls = []\n", 59 | "for x in dataframes['shade-ransomware']['orig_spl'].iloc:\n", 60 | " shade_spls += x\n", 61 | "\n", 62 | "\n", 63 | "plt.axis([0,len(shade_spls),0,max(google_spls)])\n", 64 | "\n", 65 | "plt.subplot(1,3,3)\n", 66 | "plt.title(\"Shade Ransomware\")\n", 67 | "plt.plot(shade_spls, 'ro-')\n", 68 | "plt.xlabel(\"Sequence\")\n", 69 | "plt.ylabel(\"Packet size\")\n", 70 | "plt.axis([0,len(shade_spls),0,max(shade_spls)])\n", 71 | "\n", 72 | "plt.show()" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 4, 78 | "metadata": {}, 79 | "outputs": [ 80 | { 81 | "data": { 82 | "image/png": "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\n", 83 | "text/plain": [ 84 | "
" 85 | ] 86 | }, 87 | "metadata": { 88 | "needs_background": "light" 89 | }, 90 | "output_type": "display_data" 91 | } 92 | ], 93 | "source": [ 94 | "google_spls = []\n", 95 | "for x in dataframes['google']['resp_spl'].iloc:\n", 96 | " google_spls += x\n", 97 | "\n", 98 | "plt.subplot(1,3,1)\n", 99 | "plt.suptitle(\"Sequence of packet lengths - Responder\")\n", 100 | "plt.title(\"Google\")\n", 101 | "plt.plot(google_spls, 'ko-')\n", 102 | "plt.xlabel(\"Sequence\")\n", 103 | "plt.ylabel(\"Packet size\")\n", 104 | "\n", 105 | "\n", 106 | "shade_spls = []\n", 107 | "for x in dataframes['shade-ransomware']['resp_spl'].iloc:\n", 108 | " shade_spls += x\n", 109 | "\n", 110 | "\n", 111 | "plt.axis([0,len(shade_spls),0,max(google_spls)])\n", 112 | "\n", 113 | "plt.subplot(1,3,3)\n", 114 | "plt.title(\"Shade Ransomware\")\n", 115 | "plt.plot(shade_spls, 'ro-')\n", 116 | "plt.xlabel(\"Sequence\")\n", 117 | "plt.ylabel(\"Packet size\")\n", 118 | "plt.axis([0,len(shade_spls),0,max(shade_spls)])\n", 119 | "plt.show()" 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "execution_count": 10, 125 | "metadata": {}, 126 | "outputs": [ 127 | { 128 | "data": { 129 | "image/png": "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\n", 130 | "text/plain": [ 131 | "
" 132 | ] 133 | }, 134 | "metadata": { 135 | "needs_background": "light" 136 | }, 137 | "output_type": "display_data" 138 | } 139 | ], 140 | "source": [ 141 | "google_spts = []\n", 142 | "for x in dataframes['google']['orig_spt'].iloc:\n", 143 | " google_spts += x\n", 144 | "\n", 145 | "plt.subplot(1,3,1)\n", 146 | "plt.suptitle(\"Sequence of packet times - Originator\")\n", 147 | "plt.title(\"Google\")\n", 148 | "plt.plot(google_spts, 'ko-')\n", 149 | "plt.xlabel(\"Sequence\")\n", 150 | "plt.ylabel(\"Packet size\")\n", 151 | "\n", 152 | "\n", 153 | "shade_spts = []\n", 154 | "for x in dataframes['shade-ransomware']['orig_spt'].iloc:\n", 155 | " shade_spts += x\n", 156 | "\n", 157 | "\n", 158 | "plt.axis([0,len(shade_spts),0,max(google_spts)])\n", 159 | "\n", 160 | "plt.subplot(1,3,3)\n", 161 | "plt.title(\"Shade Ransomware\")\n", 162 | "plt.plot(shade_spts, 'ro-')\n", 163 | "plt.xlabel(\"Sequence\")\n", 164 | "plt.ylabel(\"Packet size\")\n", 165 | "plt.axis([0,len(shade_spts),0,max(google_spts)])\n", 166 | "plt.show()" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 9, 172 | "metadata": {}, 173 | "outputs": [ 174 | { 175 | "data": { 176 | "image/png": "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\n", 177 | "text/plain": [ 178 | "
" 179 | ] 180 | }, 181 | "metadata": { 182 | "needs_background": "light" 183 | }, 184 | "output_type": "display_data" 185 | } 186 | ], 187 | "source": [ 188 | "google_spts = []\n", 189 | "for x in dataframes['google']['resp_spt'].iloc:\n", 190 | " google_spts += x\n", 191 | "\n", 192 | "plt.subplot(1,3,1)\n", 193 | "plt.suptitle(\"Sequence of packet times - Responder\")\n", 194 | "plt.title(\"Google\")\n", 195 | "plt.plot(google_spts, 'ko-')\n", 196 | "plt.xlabel(\"Sequence\")\n", 197 | "plt.ylabel(\"Packet size\")\n", 198 | "\n", 199 | "\n", 200 | "shade_spts = []\n", 201 | "for x in dataframes['shade-ransomware']['resp_spt'].iloc:\n", 202 | " shade_spts += x\n", 203 | "\n", 204 | "\n", 205 | "plt.axis([0,len(shade_spts),0,max(shade_spts)])\n", 206 | "\n", 207 | "plt.subplot(1,3,3)\n", 208 | "plt.title(\"Shade Ransomware\")\n", 209 | "plt.plot(shade_spts, 'ro-')\n", 210 | "plt.xlabel(\"Sequence\")\n", 211 | "plt.ylabel(\"Packet size\")\n", 212 | "plt.axis([0,len(shade_spts),0,max(shade_spts)])\n", 213 | "plt.show()" 214 | ] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": null, 219 | "metadata": {}, 220 | "outputs": [], 221 | "source": [] 222 | } 223 | ], 224 | "metadata": { 225 | "kernelspec": { 226 | "display_name": "Python 3", 227 | "language": "python", 228 | "name": "python3" 229 | }, 230 | "language_info": { 231 | "codemirror_mode": { 232 | "name": "ipython", 233 | "version": 3 234 | }, 235 | "file_extension": ".py", 236 | "mimetype": "text/x-python", 237 | "name": "python", 238 | "nbconvert_exporter": "python", 239 | "pygments_lexer": "ipython3", 240 | "version": "3.7.6" 241 | } 242 | }, 243 | "nbformat": 4, 244 | "nbformat_minor": 4 245 | } 246 | -------------------------------------------------------------------------------- /samples/Visualization.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # In[27]: 5 | 6 | 7 | import pandas as pd 8 | import matplotlib.pyplot as plt 9 | 10 | 11 | # In[28]: 12 | 13 | 14 | samples = ['google','shade-ransomware','trickbot'] 15 | 16 | dataframes = dict() 17 | for sample in samples: 18 | with open(sample + "/spl.log") as fl: 19 | dataframes[sample] = pd.read_json(fl, lines=True) 20 | 21 | 22 | # In[81]: 23 | 24 | 25 | google_spls = [] 26 | for x in dataframes['google']['orig_spl'].iloc: 27 | google_spls += x 28 | 29 | plt.subplot(1,3,1) 30 | plt.suptitle("Sequence of packet lengths - Originator") 31 | plt.title("Google") 32 | plt.plot(google_spls, 'ko-') 33 | plt.xlabel("Sequence") 34 | plt.ylabel("Packet size") 35 | 36 | 37 | shade_spls = [] 38 | for x in dataframes['shade-ransomware']['orig_spl'].iloc: 39 | shade_spls += x 40 | 41 | 42 | plt.axis([0,len(shade_spls),0,max(google_spls)]) 43 | 44 | plt.subplot(1,3,3) 45 | plt.title("Shade Ransomware") 46 | plt.plot(shade_spls, 'ro-') 47 | plt.xlabel("Sequence") 48 | plt.ylabel("Packet size") 49 | plt.axis([0,len(shade_spls),0,max(shade_spls)]) 50 | 51 | plt.show() 52 | 53 | 54 | # In[83]: 55 | 56 | 57 | google_spls = [] 58 | for x in dataframes['google']['resp_spl'].iloc: 59 | google_spls += x 60 | 61 | plt.subplot(1,3,1) 62 | plt.suptitle("Sequence of packet lengths - Responder") 63 | plt.title("Google") 64 | plt.plot(google_spls, 'ko-') 65 | plt.xlabel("Sequence") 66 | plt.ylabel("Packet size") 67 | 68 | 69 | shade_spls = [] 70 | for x in dataframes['shade-ransomware']['resp_spl'].iloc: 71 | shade_spls += x 72 | 73 | 74 | plt.axis([0,len(shade_spls),0,max(google_spls)]) 75 | 76 | plt.subplot(1,3,3) 77 | plt.title("Shade Ransomware") 78 | plt.plot(shade_spls, 'ro-') 79 | plt.xlabel("Sequence") 80 | plt.ylabel("Packet size") 81 | plt.axis([0,len(shade_spls),0,max(shade_spls)]) 82 | plt.show() 83 | 84 | 85 | # In[85]: 86 | 87 | 88 | google_spts = [] 89 | for x in dataframes['google']['orig_spt'].iloc: 90 | google_spts += x 91 | 92 | plt.subplot(1,3,1) 93 | plt.suptitle("Sequence of packet times - Originator") 94 | plt.title("Google") 95 | plt.plot(google_spts, 'ko-') 96 | plt.xlabel("Sequence") 97 | plt.ylabel("Packet size") 98 | 99 | 100 | shade_spts = [] 101 | for x in dataframes['shade-ransomware']['orig_spt'].iloc: 102 | shade_spts += x 103 | 104 | 105 | plt.axis([0,len(shade_spts),0,max(google_spts)]) 106 | 107 | plt.subplot(1,3,3) 108 | plt.title("Shade Ransomware") 109 | plt.plot(shade_spts, 'ro-') 110 | plt.xlabel("Sequence") 111 | plt.ylabel("Packet size") 112 | plt.axis([0,len(shade_spts),0,max(shade_spts)]) 113 | plt.show() 114 | 115 | 116 | # In[86]: 117 | 118 | 119 | google_spts = [] 120 | for x in dataframes['google']['resp_spt'].iloc: 121 | google_spts += x 122 | 123 | plt.subplot(1,3,1) 124 | plt.suptitle("Sequence of packet times - Responder") 125 | plt.title("Google") 126 | plt.plot(google_spts, 'ko-') 127 | plt.xlabel("Sequence") 128 | plt.ylabel("Packet size") 129 | 130 | 131 | shade_spts = [] 132 | for x in dataframes['shade-ransomware']['resp_spt'].iloc: 133 | shade_spts += x 134 | 135 | 136 | plt.axis([0,len(shade_spts),0,max(google_spts)]) 137 | 138 | plt.subplot(1,3,3) 139 | plt.title("Shade Ransomware") 140 | plt.plot(shade_spts, 'ro-') 141 | plt.xlabel("Sequence") 142 | plt.ylabel("Packet size") 143 | plt.axis([0,len(shade_spts),0,max(shade_spts)]) 144 | plt.show() 145 | 146 | 147 | # In[ ]: 148 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /samples/classifier.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import pandas as pd 5 | import matplotlib.pyplot as plt 6 | from sklearn import tree 7 | from sklearn.model_selection import train_test_split 8 | from sklearn import metrics 9 | 10 | 11 | malware_df = [] 12 | benign_df = [] 13 | 14 | malwares = ['shade','meterpreter','poshc2'] 15 | benigns = ['google','web-browse'] 16 | 17 | for mal in malwares: 18 | with open(f"./{mal}/spl.log") as fl: 19 | malware_df.append(pd.read_json(fl, lines=True)) 20 | 21 | for name in benigns: 22 | with open(f"./{name}/spl.log") as fl: 23 | benign_df.append(pd.read_json(fl, lines=True)) 24 | 25 | malware_df = pd.concat(malware_df) 26 | malware_df['label'] = True 27 | 28 | benign_df = pd.concat(benign_df) 29 | benign_df['label'] = False 30 | 31 | df = pd.concat([malware_df,benign_df]) 32 | df = df.fillna(0) 33 | 34 | def get_column_max(row, col): 35 | if col in row: 36 | if not isinstance(row[col],list): 37 | return row[col] 38 | return max(row[col]) 39 | return 0 40 | 41 | def get_column_min(row, col): 42 | if col in row: 43 | if not isinstance(row[col],list): 44 | return row[col] 45 | return max(row[col]) 46 | return 0 47 | 48 | def get_column_avg(row, col): 49 | if col in row: 50 | if not isinstance(row[col],list): 51 | return row[col] 52 | return sum(row[col]) / len(row[col]) 53 | return 0 54 | 55 | df['max_orig_spl'] = df.apply(lambda row: get_column_max(row, 'orig_spl'), axis=1) 56 | df['min_orig_spl'] = df.apply(lambda row: get_column_min(row, 'orig_spl'), axis=1) 57 | df['avg_orig_spl'] = df.apply(lambda row: get_column_avg(row, 'orig_spl'), axis=1) 58 | 59 | df['max_resp_spl'] = df.apply(lambda row: get_column_max(row, 'resp_spl'), axis=1) 60 | df['min_resp_spl'] = df.apply(lambda row: get_column_min(row, 'resp_spl'), axis=1) 61 | df['avg_resp_spl'] = df.apply(lambda row: get_column_avg(row, 'resp_spl'), axis=1) 62 | 63 | df['max_orig_spt'] = df.apply(lambda row: get_column_max(row, 'orig_spt'), axis=1) 64 | df['min_orig_spt'] = df.apply(lambda row: get_column_min(row, 'orig_spt'), axis=1) 65 | df['avg_orig_spt'] = df.apply(lambda row: get_column_avg(row, 'orig_spt'), axis=1) 66 | 67 | df['max_resp_spt'] = df.apply(lambda row: get_column_max(row, 'resp_spt'), axis=1) 68 | df['min_resp_spt'] = df.apply(lambda row: get_column_min(row, 'resp_spt'), axis=1) 69 | df['avg_resp_spt'] = df.apply(lambda row: get_column_avg(row, 'resp_spt'), axis=1) 70 | 71 | # Static model for tree visualization 72 | 73 | y = df['label'] 74 | 75 | mod_df = df[['max_orig_spl','min_orig_spl','avg_orig_spl', 76 | 'max_resp_spl','min_resp_spl','avg_resp_spl', 'max_orig_spt','min_orig_spt','avg_orig_spt', 77 | 'max_resp_spt','min_resp_spt','avg_resp_spt']] 78 | 79 | X = dict() 80 | Y = dict() 81 | 82 | X['train'], X['test'], Y['train'], Y['test'] = train_test_split(mod_df, y, test_size=0.3) 83 | 84 | # Static model to visualize the tree 85 | model = tree.DecisionTreeClassifier(random_state=97) 86 | model = model.fit(X['train'], Y['train']) 87 | 88 | fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=600) 89 | tree.plot_tree(model, feature_names=mod_df.columns, class_names=['malware','clean'], filled=True) 90 | fig.savefig("decision-tree.png") 91 | 92 | # Get best and worst case stats 93 | 94 | min_acc = float("inf") 95 | max_acc = 0 96 | max_fp = 0 97 | max_fn = 0 98 | 99 | print("Testing model over 100 iterations...") 100 | for _ in range(0,100): 101 | X['train'], X['test'], Y['train'], Y['test'] = train_test_split(mod_df, y, test_size=0.3) 102 | t_mod = tree.DecisionTreeClassifier() 103 | t_mod = t_mod.fit(X['train'], Y['train']) 104 | 105 | y_pred = t_mod.predict(X['test']) 106 | 107 | min_acc = min(min_acc, metrics.accuracy_score(Y['test'], y_pred)) 108 | max_acc = max(max_acc, metrics.accuracy_score(Y['test'], y_pred)) 109 | 110 | CM = metrics.confusion_matrix(Y['test'], y_pred) 111 | max_fp = max(max_fp, CM[0][1]) 112 | max_fn = max(max_fn, CM[1][0]) 113 | 114 | print(f"Sample size: {len(X['test'])}\n") 115 | 116 | print(f"Max accuracy :\t\t{max_acc}") 117 | print(f"Min accuracy :\t\t{min_acc}") 118 | print(f"Max false negative:\t{max_fn/len(X['test'])}\t{max_fn}") 119 | print(f"Max false positive:\t{max_fp/len(X['test'])}\t{max_fp}") 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /samples/decisiontree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/micrictor/spl-spt/072bc17a892c56fdb43b1be29069e8b137bb22ea/samples/decisiontree.png -------------------------------------------------------------------------------- /samples/google/README.md: -------------------------------------------------------------------------------- 1 | # Sample 02 - Normal web traffic 2 | Captured locally using iexplore.exe to browse to www.google.com 3 | 4 | -------------------------------------------------------------------------------- /samples/google/google-webbrowse.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/micrictor/spl-spt/072bc17a892c56fdb43b1be29069e8b137bb22ea/samples/google/google-webbrowse.pcap -------------------------------------------------------------------------------- /samples/google/spl.log: -------------------------------------------------------------------------------- 1 | {"uid":"CcnA3y3t8ENAOo2o52","orig_spl":[40,811,26],"resp_spl":[40,309],"orig_spt":[0.0,0.0007112026214599609,0.0005249977111816406],"resp_spt":[0.0,0.11039400100708008]} 2 | {"uid":"CFFR9e46zPvZ3jn1Pf","orig_spl":[40,82,2091,33,37,130,131,132,133,37,133,134,135,136,37,136,37,2098,138,37],"resp_spl":[40,64,33,520,33,361,33,380,33,365,33,355,33,354,33,192,217,33,351,33],"orig_spt":[0.0,0.00013399124145507813,0.00013709068298339844,0.00047397613525390625,0.05421805381774902,0.003968000411987305,0.11839699745178223,0.1498699188232422,0.162888765335083,0.09087300300598145,0.0045680999755859375,0.029072046279907227,0.03400397300720215,0.06072807312011719,0.08332300186157227,0.0044879913330078125,0.00012302398681640625,0.03905987739562988,0.1349940299987793,0.07969403266906738],"resp_spt":[0.0,9.5367431640625e-07,0.0016150474548339844,0.0990440845489502,9.5367431640625e-07,0.10743999481201172,0.0,0.09326314926147461,0.0,0.15052103996276855,0.0,0.08407783508300781,1.1920928955078125e-06,0.0884389877319336,9.5367431640625e-07,0.006323814392089844,0.0,0.0,0.07726001739501953,2.1457672119140625e-06]} 3 | {"uid":"Cdy9LZ2LtqS5m9wgff","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00011396408081054688,0.0005109310150146484],"resp_spt":[0.0,9.5367431640625e-07,0.01359701156616211]} 4 | {"uid":"C9o8Uc3Vym4N9expGf","orig_spl":[40,82,136,33,41],"resp_spl":[40,64,393,1215,336,41],"orig_spt":[0.0,0.00011801719665527344,6.103515625e-05,9.918212890625e-05,0.00019097328186035156],"resp_spt":[0.0,0.0007948875427246094,0.0011589527130126953,9.5367431640625e-07,0.0,0.0]} 5 | {"uid":"CSGhqg3c5Wq3IR0KW6","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.0001049041748046875,0.0004260540008544922],"resp_spt":[0.0,1.9073486328125e-06,9.5367431640625e-07]} 6 | {"uid":"CayoXn1j6gS3aej70l","orig_spl":[40,82,251,33,41],"resp_spl":[40,64,33,406,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215],"orig_spt":[0.0,0.00015306472778320313,6.890296936035156e-05,0.0004990100860595703,0.05327606201171875],"resp_spt":[0.0,1.1920928955078125e-06,0.0,0.0011258125305175781,0.0,1.1920928955078125e-06,9.5367431640625e-07,0.0017900466918945313,9.5367431640625e-07,0.001967906951904297,9.5367431640625e-07,0.0022041797637939453,9.5367431640625e-07,0.0023260116577148438,0.0,0.0023038387298583984,0.0,0.0021810531616210938,9.5367431640625e-07,0.0021800994873046875]} 7 | {"uid":"CLIJooeW6dJUrr6za","orig_spl":[40,82,377,33,41],"resp_spl":[40,64,33,548,1215,1215,1215,1215,1215,1215,1215,1215,552,1215,1215,899,74,223,41],"orig_spt":[0.0,0.00013113021850585938,0.00015306472778320313,0.0004868507385253906,9.202957153320313e-05],"resp_spt":[0.0,0.0,1.1920928955078125e-06,0.06380796432495117,1.1920928955078125e-06,9.5367431640625e-07,0.0,0.0,0.0,0.03365302085876465,1.9073486328125e-06,0.0004189014434814453,0.0,1.1920928955078125e-06,0.0,0.0001399517059326172,0.0,0.0,9.5367431640625e-07]} 8 | {"uid":"CExfxA2vt84lhBKjbe","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00021910667419433594,0.0005590915679931641],"resp_spt":[0.0,0.0,0.0]} 9 | {"uid":"Ck6gxpdVb6T1NAy5","orig_spl":[40,82,33,413,663,33,41],"resp_spl":[40,64,33,389,171,111,41],"orig_spt":[0.0,0.0005490779876708984,9.608268737792969e-05,3.4809112548828125e-05,0.00014400482177734375,0.00026416778564453125,0.0002391338348388672],"resp_spt":[0.0,0.0,0.032054901123046875,0.02049398422241211,9.5367431640625e-07,0.0,0.0]} 10 | {"uid":"CHo3h62SnX3aMG3rMj","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00012803077697753906,0.0004820823669433594],"resp_spt":[0.0,0.0,0.0]} 11 | {"uid":"Cl7QcF1Axzthj7mJyk","orig_spl":[40,82,448,33,41],"resp_spl":[40,64,33,400,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215,1215],"orig_spt":[0.0,0.00019693374633789063,6.699562072753906e-05,0.0005719661712646484,0.04418182373046875],"resp_spt":[0.0,0.0,1.9073486328125e-06,0.0015301704406738281,0.0,9.5367431640625e-07,9.5367431640625e-07,0.001461029052734375,0.0,1.9073486328125e-06,0.0033299922943115234,9.5367431640625e-07,0.0021681785583496094,9.5367431640625e-07,0.0023560523986816406,0.0,0.002015829086303711,1.1920928955078125e-06,0.0022859573364257813,0.0]} 12 | {"uid":"C50JrU3t5Ba16IR8R7","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00011801719665527344,0.0005729198455810547],"resp_spt":[0.0,0.0,0.0]} 13 | {"uid":"CmqdqP2ljZgp8UJdb6","orig_spl":[40,82,208,33,41],"resp_spl":[40,64,383,1215,1215,1215,1215,1215,1215,212,41],"orig_spt":[0.0,0.00025177001953125,0.000102996826171875,0.0007200241088867188,0.00015687942504882813],"resp_spt":[0.0,9.5367431640625e-07,0.010918140411376953,0.0,1.9073486328125e-06,0.0,0.0,0.0,9.5367431640625e-07,0.0025491714477539063,0.0]} 14 | {"uid":"CBwkvGSKGKvjzDcy8","orig_spl":[40,82,178,33,41,305,106,81,41,321,130,61,41,120,360,41,400,41,303,41],"resp_spl":[40,64,33,690,1215,1215,1215,1215,1215,1215,333,372,1215,1215,1215,1215,1215,1215,1215,1215],"orig_spt":[0.0,0.00017905235290527344,0.00010514259338378906,0.0005099773406982422,0.04917287826538086,0.5187680721282959,0.001127004623413086,0.05983996391296387,0.0029740333557128906,0.00409388542175293,0.00821995735168457,0.0072650909423828125,0.09318995475769043,0.09377217292785645,0.0199129581451416,0.03616189956665039,0.04430508613586426,0.03657698631286621,0.12774896621704102,0.07746100425720215],"resp_spt":[0.0,9.5367431640625e-07,0.0,0.08561897277832031,0.0,1.1920928955078125e-06,9.5367431640625e-07,0.0,0.0,0.002981901168823242,9.5367431640625e-07,0.0,1.1920928955078125e-06,0.0,0.0030558109283447266,1.1920928955078125e-06,0.002070903778076172,9.5367431640625e-07,0.0024471282958984375,0.0]} 15 | {"uid":"CjH1c04o9LumxU9MG4","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.0001571178436279297,0.0005540847778320313],"resp_spt":[0.0,0.0,0.0010459423065185547]} 16 | {"uid":"Czj1VhWgLcfrCtj1h","orig_spl":[40,3371],"resp_spl":[40,700],"orig_spt":[0.0,0.0002598762512207031],"resp_spt":[0.0,0.0036690235137939453]} 17 | {"uid":"C3geMsUZ7ItCKyH42","orig_spl":[40],"resp_spl":[40],"orig_spt":[0.0],"resp_spt":[0.0]} 18 | {"uid":"CuAzd68ZQSMd9X1Tf","orig_spl":[40,82,33,272,897,138,571,135,16408,4814,137,1017,72,11024,72,11305,141,908],"resp_spl":[40,64,33,37,777,37,383,50,50,50,50,50,50,50,50,50,50,50,37,16408],"orig_spt":[0.0,0.0005121231079101563,4.100799560546875e-05,2.7894973754882813e-05,2.8133392333984375e-05,0.011327028274536133,5.888938903808594e-05,0.11268401145935059,0.06409788131713867,0.0028290748596191406,0.13739609718322754,6.389617919921875e-05,0.30946993827819824,7.295608520507813e-05,0.11102008819580078,8.606910705566406e-05,0.3619840145111084,6.29425048828125e-05],"resp_spt":[0.0,9.5367431640625e-07,0.06231498718261719,0.0011029243469238281,0.0,0.06286811828613281,0.0,0.06156802177429199,0.0,9.5367431640625e-07,0.0,0.0,0.0,0.0,0.0,0.0024690628051757813,9.5367431640625e-07,0.0,0.0,0.018954038619995117]} 19 | {"uid":"CESTX64I2S0iuVo6N7","orig_spl":[40,965,970],"resp_spl":[40,352],"orig_spt":[0.0,0.0036890506744384766,7.987022399902344e-05],"resp_spt":[0.0,0.06119513511657715]} 20 | {"uid":"CP38Zm19N0cuojKoK6","orig_spl":[40,966,2839],"resp_spl":[40,353],"orig_spt":[0.0,0.0022919178009033203,7.82012939453125e-05],"resp_spt":[0.0,0.16163992881774902]} 21 | {"uid":"C2xLDI3GbteVTNCkvg","orig_spl":[40,1529,3627,1516],"resp_spl":[40,3886,307],"orig_spt":[0.0,0.00040912628173828125,5.602836608886719e-05,0.02027297019958496],"resp_spt":[0.0,0.08307003974914551,0.07462501525878906]} 22 | {"uid":"CKYXve3Ewo4TvjmdH4","orig_spl":[53,682,675,672,676,672,675],"resp_spl":[42,2873,281,53,74,74,1058,1058,1058,1284,1387,90,1058,1058],"orig_spt":[0.0,0.0001671314239501953,0.09922409057617188,0.10104894638061523,0.10437297821044922,0.10634016990661621,0.10293698310852051],"resp_spt":[0.0,9.5367431640625e-07,0.0,0.0,0.1389758586883545,9.5367431640625e-07,0.18473601341247559,0.2738380432128906,0.30041003227233887,0.2774059772491455,1.9073486328125e-06,0.0,0.34388089179992676,0.303814172744751]} 23 | {"uid":"CVMbuj4g89H06WVWRd","orig_spl":[40,82,242,33],"resp_spl":[40,64,33,3936,8225,6435,33],"orig_spt":[0.0,0.00013685226440429688,0.00011801719665527344,0.00035119056701660156],"resp_spt":[0.0,9.5367431640625e-07,0.005764007568359375,0.04620099067687988,9.5367431640625e-07,1.9073486328125e-06,0.0]} 24 | {"uid":"CkT2il2KjPssH4Nm1i","orig_spl":[40,82,213,33,6336],"resp_spl":[40,64,33,50,50,50,37,792],"orig_spt":[0.0,0.0004589557647705078,4.410743713378906e-05,4.601478576660156e-05,2.5987625122070313e-05],"resp_spt":[0.0,0.0,0.16071605682373047,0.0062618255615234375,0.0,0.0,0.0,0.0021791458129882813]} 25 | {"uid":"C8SoCH1doz4NPTh3r6","orig_spl":[40,82,33],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00012993812561035156,0.00038504600524902344],"resp_spt":[0.0,0.0,0.005731105804443359]} 26 | -------------------------------------------------------------------------------- /samples/meterpreter/meterpreter_https.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/micrictor/spl-spt/072bc17a892c56fdb43b1be29069e8b137bb22ea/samples/meterpreter/meterpreter_https.pcap -------------------------------------------------------------------------------- /samples/meterpreter/spl.log: -------------------------------------------------------------------------------- 1 | {"uid":"CjYQh11yjChmrmDUTl","orig_spl":[80,288],"resp_spl":[80,304,64],"orig_spt":[0.0,0.00013899803161621094],"resp_spt":[0.0,0.01844501495361328,0.0002129077911376953]} 2 | {"uid":"CeNYHT3kLbzz6zz5nf","orig_spl":[80,288],"resp_spl":[80,304,64],"orig_spt":[0.0,0.00010395050048828125],"resp_spt":[0.0,0.011898994445800781,5.602836608886719e-05]} 3 | {"uid":"CGEJG0366TEKdinC05","orig_spl":[80,288],"resp_spl":[80,288,64],"orig_spt":[0.0,0.00016379356384277344],"resp_spt":[0.0,0.017727136611938477,6.103515625e-05]} 4 | {"uid":"CTVLSe1hwybYQsWnf2","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00012493133544921875],"resp_spt":[0.0,0.12631011009216309,4.792213439941406e-05]} 5 | {"uid":"CiRvRI3Sg1ObD2SWsa","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00012803077697753906],"resp_spt":[0.0,0.026414871215820313,4.506111145019531e-05]} 6 | {"uid":"CnUpgx3Gkeqez6Iof","orig_spl":[80,320],"resp_spl":[80,736,64],"orig_spt":[0.0,0.0002961158752441406],"resp_spt":[0.0,0.0007388591766357422,6.29425048828125e-05]} 7 | {"uid":"CBGZ5l1WPFRRyOizI1","orig_spl":[80,800],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011515617370605469],"resp_spt":[0.0,0.0007510185241699219,5.5789947509765625e-05]} 8 | {"uid":"CZ1M3m1TYusFcXDf4k","orig_spl":[80,320],"resp_spl":[80,304,64],"orig_spt":[0.0,0.00012683868408203125],"resp_spt":[0.0,0.00045609474182128906,5.412101745605469e-05]} 9 | {"uid":"CXfx8832NcUAlINwlf","orig_spl":[80,592],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001709461212158203],"resp_spt":[0.0,0.0006120204925537109,4.100799560546875e-05]} 10 | {"uid":"CgWOgoLMGajFvs3wl","orig_spl":[80,320],"resp_spl":[80,320,64],"orig_spt":[0.0,0.00013494491577148438],"resp_spt":[0.0,0.0004780292510986328,5.1975250244140625e-05]} 11 | {"uid":"CCRUOd1rtIjt8n6XZe","orig_spl":[80,320],"resp_spl":[80,128,64],"orig_spt":[0.0,0.00018215179443359375],"resp_spt":[0.0,0.20382094383239746,0.0003249645233154297]} 12 | {"uid":"CuraDe1lE3HSgd4797","orig_spl":[80,544],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00013494491577148438],"resp_spt":[0.0,0.0005960464477539063,5.1975250244140625e-05]} 13 | {"uid":"COygIwRLo756F4bNd","orig_spl":[80,320],"resp_spl":[80,320,64],"orig_spt":[0.0,0.00011992454528808594],"resp_spt":[0.0,0.0006740093231201172,5.507469177246094e-05]} 14 | {"uid":"CK0BZE4GN2QkD7iLVl","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00025582313537597656],"resp_spt":[0.0,0.10119915008544922,0.0003218650817871094]} 15 | {"uid":"CiTYyX18CWav4UZQkj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001800060272216797],"resp_spt":[0.0,0.20215082168579102,6.508827209472656e-05]} 16 | {"uid":"CxixMzkTnT6hAtEoj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00013899803161621094],"resp_spt":[0.0,0.10197019577026367,4.792213439941406e-05]} 17 | {"uid":"CaaXF31loFaGM71Eb3","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011110305786132813],"resp_spt":[0.0,0.1024630069732666,7.390975952148438e-05]} 18 | {"uid":"CUi3p1240STrPzOzpj","orig_spl":[80,400,2000],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011897087097167969,1.0011229515075684],"resp_spt":[0.0,0.0013000965118408203,5.888938903808594e-05]} 19 | {"uid":"CuCDw53Mp7SiKWxjJg","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011181831359863281],"resp_spt":[0.0,0.09876108169555664,4.506111145019531e-05]} 20 | {"uid":"CDn8cy1mEW9THBDPd9","orig_spl":[80,320],"resp_spl":[80,304,64],"orig_spt":[0.0,0.00010895729064941406],"resp_spt":[0.0,0.0005500316619873047,5.507469177246094e-05]} 21 | {"uid":"CX3CJgmeZLpnWJSSk","orig_spl":[80,592],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00012993812561035156],"resp_spt":[0.0,0.0007500648498535156,6.604194641113281e-05]} 22 | {"uid":"CnKJOU1sZZFzN0dSg9","orig_spl":[80,320],"resp_spl":[80,304,64],"orig_spt":[0.0,0.00014710426330566406],"resp_spt":[0.0,0.00041294097900390625,5.3882598876953125e-05]} 23 | {"uid":"CuH7Fm3bC8kO7kUjYa","orig_spl":[80,656],"resp_spl":[80,176,64],"orig_spt":[0.0,0.000125885009765625],"resp_spt":[0.0,0.0006949901580810547,5.221366882324219e-05]} 24 | {"uid":"CDkFj73GivG7Zd6e5k","orig_spl":[80,320],"resp_spl":[80,320,64],"orig_spt":[0.0,0.00012183189392089844],"resp_spt":[0.0,0.0004761219024658203,5.3882598876953125e-05]} 25 | {"uid":"CJR3r62kr76lcNDGRa","orig_spl":[80,880],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001251697540283203],"resp_spt":[0.0,0.0007748603820800781,0.0004470348358154297]} 26 | {"uid":"CbPcSb4WfvHT7yMxTb","orig_spl":[80,320],"resp_spl":[80,304,64],"orig_spt":[0.0,0.00012302398681640625],"resp_spt":[0.0,0.0005879402160644531,7.009506225585938e-05]} 27 | {"uid":"CpG4UM1CsoOc7IsJP4","orig_spl":[80,688],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00012421607971191406],"resp_spt":[0.0,0.0008327960968017578,5.412101745605469e-05]} 28 | {"uid":"CbChkM2PdVDJBxSkX","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010895729064941406],"resp_spt":[0.0,0.0008480548858642578,6.604194641113281e-05]} 29 | {"uid":"CeOq6f1onOYbxZGue5","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001609325408935547],"resp_spt":[0.0,0.0005841255187988281,5.602836608886719e-05]} 30 | {"uid":"ChbzEq34yFiiXwHobj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010514259338378906],"resp_spt":[0.0,0.0005459785461425781,5.602836608886719e-05]} 31 | {"uid":"CjQYeI1qN4QElgnKuh","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010704994201660156],"resp_spt":[0.0,0.0006871223449707031,5.698204040527344e-05]} 32 | {"uid":"Cp8skD1UbNgH6uaIo7","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010895729064941406],"resp_spt":[0.0,0.0005850791931152344,5.793571472167969e-05]} 33 | {"uid":"CtSwol1frR8cSXMaT1","orig_spl":[80,320],"resp_spl":[80,320,64],"orig_spt":[0.0,0.00011897087097167969],"resp_spt":[0.0,0.0008749961853027344,6.508827209472656e-05]} 34 | {"uid":"CKAVI4N4Wqki4VFpa","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00014710426330566406],"resp_spt":[0.0,0.10087013244628906,6.079673767089844e-05]} 35 | {"uid":"C0W0aZ2hgCm0zkUxx1","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001220703125],"resp_spt":[0.0,0.2013399600982666,8.0108642578125e-05]} 36 | {"uid":"CMIDq22rReeRJEVFW2","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010800361633300781],"resp_spt":[0.0,0.10082197189331055,5.793571472167969e-05]} 37 | {"uid":"ClxyZh2nx6uQ6GJ99i","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001270771026611328],"resp_spt":[0.0,0.10149192810058594,7.104873657226563e-05]} 38 | {"uid":"CTiwtP2jceXlMMKTuj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001819133758544922],"resp_spt":[0.0,0.11304402351379395,4.8160552978515625e-05]} 39 | {"uid":"C52Ss13O30GT1g1Jb2","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011610984802246094],"resp_spt":[0.0,0.0010480880737304688,6.580352783203125e-05]} 40 | {"uid":"C3jOzlgWQuLlumN28","orig_spl":[80,400,16448,7568],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00015616416931152344,1.001682996749878,0.00011801719665527344],"resp_spt":[0.0,0.01505899429321289,0.00028395652770996094]} 41 | {"uid":"CwG6EAwIjrpm8vUPb","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010991096496582031],"resp_spt":[0.0,0.0006530284881591797,6.914138793945313e-05]} 42 | {"uid":"CgCREA2dEKYSrOUeL9","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011086463928222656],"resp_spt":[0.0,0.0010349750518798828,5.412101745605469e-05]} 43 | {"uid":"CqEpjn1Hdmro0dmoy8","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011801719665527344],"resp_spt":[0.0,0.0006361007690429688,6.29425048828125e-05]} 44 | {"uid":"CtTR7rRAlfePd538g","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001049041748046875],"resp_spt":[0.0,0.0006542205810546875,0.00015497207641601563]} 45 | {"uid":"CO93Pp2XNsQznVzwj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010204315185546875],"resp_spt":[0.0,0.0006821155548095703,5.2928924560546875e-05]} 46 | {"uid":"CKXkX61NJsKJj25ykc","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00024890899658203125],"resp_spt":[0.0,0.0011639595031738281,5.817413330078125e-05]} 47 | {"uid":"CPupCf2WbVB9HwyNVi","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010514259338378906],"resp_spt":[0.0,0.0006718635559082031,5.7220458984375e-05]} 48 | {"uid":"C4beZAotHGzv1cmNd","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00013685226440429688],"resp_spt":[0.0,0.0004470348358154297,5.817413330078125e-05]} 49 | {"uid":"CLqtgZ3niRLqnnoQ19","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00013518333435058594],"resp_spt":[0.0,0.000453948974609375,5.3882598876953125e-05]} 50 | {"uid":"CsTOl12l116PewAlY9","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,8.58306884765625e-05],"resp_spt":[0.0,0.0004961490631103516,5.3882598876953125e-05]} 51 | {"uid":"C5e6Oy7uOZTgxUKYc","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,9.393692016601563e-05],"resp_spt":[0.0,0.0005931854248046875,5.4836273193359375e-05]} 52 | {"uid":"C7gt0p4Y7Wo0YSUvId","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,9.202957153320313e-05],"resp_spt":[0.0,0.0006220340728759766,5.3882598876953125e-05]} 53 | {"uid":"CRiZEZK8OqrgXykZe","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011086463928222656],"resp_spt":[0.0,0.0005850791931152344,6.008148193359375e-05]} 54 | {"uid":"CXvbEj16TZY8QXIMw9","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001239776611328125],"resp_spt":[0.0,0.0005559921264648438,5.412101745605469e-05]} 55 | {"uid":"Csevws30H69DSgo2ld","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,8.606910705566406e-05],"resp_spt":[0.0,0.001316070556640625,6.890296936035156e-05]} 56 | {"uid":"CoQGQg2k8g3UdD7mX7","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.000102996826171875],"resp_spt":[0.0,0.0005600452423095703,5.3882598876953125e-05]} 57 | {"uid":"CviZ2J13Y0vmY0F5Xh","orig_spl":[80,320],"resp_spl":[80,304,64],"orig_spt":[0.0,9.179115295410156e-05],"resp_spt":[0.0,0.0007112026214599609,6.389617919921875e-05]} 58 | {"uid":"CssvkR2sGE9dZ0vnp9","orig_spl":[80,560],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00017404556274414063],"resp_spt":[0.0,0.0010409355163574219,5.221366882324219e-05]} 59 | {"uid":"C8ucDKOLgSZ5nXrZk","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00013399124145507813],"resp_spt":[0.0,0.00698399543762207,0.00010395050048828125]} 60 | {"uid":"CC27532QEIlJNlwpi3","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00019288063049316406],"resp_spt":[0.0,0.0008909702301025391,0.0001571178436279297]} 61 | {"uid":"CP6oDr2uvF9j4LdZG4","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010585784912109375],"resp_spt":[0.0,0.00047898292541503906,5.817413330078125e-05]} 62 | {"uid":"CIFEn52gWvo6z9Vzgj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010919570922851563],"resp_spt":[0.0,0.0006988048553466797,6.318092346191406e-05]} 63 | {"uid":"CnZxyT1wvbNtIral82","orig_spl":[80,320],"resp_spl":[80,320,64],"orig_spt":[0.0,0.00011110305786132813],"resp_spt":[0.0,0.0007109642028808594,6.198883056640625e-05]} 64 | {"uid":"CxA3Wz1rPhOuhMwJw4","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001327991485595703],"resp_spt":[0.0,0.10234808921813965,7.104873657226563e-05]} 65 | {"uid":"C7LJpv3jprLDkooOFe","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010704994201660156],"resp_spt":[0.0,0.0010449886322021484,6.508827209472656e-05]} 66 | {"uid":"C9E04Wbwfsocsbmfj","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0002181529998779297],"resp_spt":[0.0,0.001961946487426758,5.602836608886719e-05]} 67 | {"uid":"CFGIiBmTmbS7EJ1kg","orig_spl":[80,400,16448,7568],"resp_spl":[80,176,64],"orig_spt":[0.0,0.0001068115234375,1.0011491775512695,0.00010800361633300781],"resp_spt":[0.0,0.016965866088867188,6.103515625e-05]} 68 | {"uid":"C6G3I12WIQFHHKMzbi","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00017404556274414063],"resp_spt":[0.0,0.0006959438323974609,6.890296936035156e-05]} 69 | {"uid":"CZd9urXfNxbawAWVh","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011801719665527344],"resp_spt":[0.0,0.0004940032958984375,5.602836608886719e-05]} 70 | {"uid":"CWU8MMM3Js7PcvO0k","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011610984802246094],"resp_spt":[0.0,0.10314202308654785,0.0001399517059326172]} 71 | {"uid":"CeSHdHnhCzpw817zi","orig_spl":[80,320],"resp_spl":[80,288,64],"orig_spt":[0.0,0.00014519691467285156],"resp_spt":[0.0,0.001107931137084961,0.0001308917999267578]} 72 | {"uid":"CCG81u4GBHtTsRNR71","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00010609626770019531],"resp_spt":[0.0,0.0033397674560546875,5.602836608886719e-05]} 73 | {"uid":"CUCp2N3i1nhlKsZuc9","orig_spl":[80,320],"resp_spl":[80,176,64],"orig_spt":[0.0,0.00011610984802246094],"resp_spt":[0.0,0.0008950233459472656,7.081031799316406e-05]} 74 | -------------------------------------------------------------------------------- /samples/poshc2/poshc2_pcap.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/micrictor/spl-spt/072bc17a892c56fdb43b1be29069e8b137bb22ea/samples/poshc2/poshc2_pcap.pcap -------------------------------------------------------------------------------- /samples/poshc2/spl.log: -------------------------------------------------------------------------------- 1 | {"uid":"CgmiSo4owxnreMJtRe","orig_spl":[69,248],"resp_spl":[23,881,281,69,250,250,116,16401,16401,16401,16401,16401,16401,16401,16401,4850],"orig_spt":[0.0,8.082389831542969e-05],"resp_spt":[0.0,0.0,0.0,0.0,5.1021575927734375e-05,3.504753112792969e-05,0.021491050720214844,6.389617919921875e-05,1.9073486328125e-05,1.6927719116210938e-05,1.71661376953125e-05,1.5974044799804688e-05,0.00022482872009277344,4.0531158447265625e-06,0.0,0.0]} 2 | {"uid":"CNLHlP2jcShRzsVAHg","orig_spl":[69,364],"resp_spl":[23,881,281,69,250,250,115,16401,16401,8893],"orig_spt":[0.0,8.106231689453125e-05],"resp_spt":[0.0,0.0,0.0,0.0,5.793571472167969e-05,5.2928924560546875e-05,0.004327058792114258,5.412101745605469e-05,1.9788742065429688e-05,1.621246337890625e-05]} 3 | {"uid":"C3Cg4e3j7B7oclwYz6","orig_spl":[69,267],"resp_spl":[23,881,281,69,250,250,115,98],"orig_spt":[0.0,7.510185241699219e-05],"resp_spt":[0.0,0.0,0.0,0.0,5.888938903808594e-05,5.316734313964844e-05,0.0026769638061523438,4.1961669921875e-05]} 4 | {"uid":"ClGu9G3L0Vy4THh5Oh","orig_spl":[69,248],"resp_spl":[23,881,281,69,250,250,115,72],"orig_spt":[0.0,6.413459777832031e-05],"resp_spt":[0.0,0.0,0.0,0.0,6.985664367675781e-05,5.0067901611328125e-05,0.002569913864135742,6.914138793945313e-05]} 5 | {"uid":"CUfs29KHS98eb810f","orig_spl":[69,244],"resp_spl":[23,881,281,69,250,250,115,98],"orig_spt":[0.0,6.413459777832031e-05],"resp_spt":[0.0,0.0,0.0,0.0,6.985664367675781e-05,5.507469177246094e-05,0.0026140213012695313,4.100799560546875e-05]} 6 | {"uid":"CfjoHQoEMwgyeDFKl","orig_spl":[69,272],"resp_spl":[23,881,281,69,250,250,115,105],"orig_spt":[0.0,6.389617919921875e-05],"resp_spt":[0.0,0.0,0.0,0.0,5.507469177246094e-05,5.1021575927734375e-05,0.006211996078491211,4.38690185546875e-05]} 7 | {"uid":"CdLp5e1rSyC0mhFS83","orig_spl":[69,1929],"resp_spl":[23,881,281,69,250,250,115,59],"orig_spt":[0.0,6.389617919921875e-05],"resp_spt":[0.0,0.0,0.0,0.0,9.012222290039063e-05,5.3882598876953125e-05,0.002978086471557617,6.198883056640625e-05]} 8 | {"uid":"CL5lLr2hClAcviE1El","orig_spl":[69,262],"resp_spl":[23,881,281,69,250,250,115,120],"orig_spt":[0.0,6.103515625e-05],"resp_spt":[0.0,0.0,0.0,0.0,7.605552673339844e-05,5.1021575927734375e-05,0.002794981002807617,4.38690185546875e-05]} 9 | {"uid":"CyMOlE2rw47pxrgrxa","orig_spl":[69,256],"resp_spl":[23,881,281,69,250,250,115,16401,16401,16401,10941],"orig_spt":[0.0,6.389617919921875e-05],"resp_spt":[0.0,0.0,0.0,0.0,7.510185241699219e-05,5.412101745605469e-05,0.007325887680053711,5.3882598876953125e-05,1.9073486328125e-05,1.811981201171875e-05,1.3828277587890625e-05]} 10 | {"uid":"CJlBlakmhAT8C38Ch","orig_spl":[69,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401,16401],"resp_spl":[23,881,281,69,250,250,115,59],"orig_spt":[0.0,8.20159912109375e-05,2.002716064453125e-05,1.2159347534179688e-05,1.8835067749023438e-05,9.059906005859375e-06,0.00046896934509277344,5.0067901611328125e-06,0.0,7.295608520507813e-05,0.0,4.1961669921875e-05,0.0,5.0067901611328125e-06,0.0,1.3113021850585938e-05,0.0,3.814697265625e-06,0.0,6.198883056640625e-06],"resp_spt":[0.0,0.0,0.0,0.0,1.9073486328125e-06,8.106231689453125e-06,1.178142786026001,7.104873657226563e-05]} 11 | {"uid":"CGxyur4bbM4hXTTUX5","orig_spl":[69,256],"resp_spl":[23,881,281,69,250,250,115,28],"orig_spt":[0.0,7.104873657226563e-05],"resp_spt":[0.0,0.0,0.0,0.0,5.698204040527344e-05,5.602836608886719e-05,0.003052949905395508,4.792213439941406e-05]} 12 | {"uid":"CtXgpk4lPXHEEiheO5","orig_spl":[69,268],"resp_spl":[23,881,281,69,250,250],"orig_spt":[0.0,7.390975952148438e-05],"resp_spt":[0.0,0.0,0.0,0.0,5.602836608886719e-05,5.2928924560546875e-05]} 13 | -------------------------------------------------------------------------------- /samples/shade-ransomware/2019-10-15-Shade-ransomware-infection-traffic.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/micrictor/spl-spt/072bc17a892c56fdb43b1be29069e8b137bb22ea/samples/shade-ransomware/2019-10-15-Shade-ransomware-infection-traffic.pcap -------------------------------------------------------------------------------- /samples/shade-ransomware/README.md: -------------------------------------------------------------------------------- 1 | # Sample 02 - Shade Ransomware 2 | SORUCE: http://malware-traffic-analysis.net/2019/10/15/index.html 3 | 4 | 5 | -------------------------------------------------------------------------------- /samples/shade-ransomware/spl.log: -------------------------------------------------------------------------------- 1 | {"uid":"CMhME2104ESf2tkHAf","orig_spl":[64,432],"resp_spl":[64,496,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432,16432],"orig_spt":[0.0,0.014724016189575195],"resp_spt":[0.0,0.2476651668548584,0.24242281913757324,0.007049083709716797,0.23497390747070313,0.0029730796813964844,0.024339914321899414,0.20367813110351563,0.010062932968139648,0.002499103546142578,0.0020270347595214844,0.0020220279693603516,0.017555952072143555,0.20986485481262207,0.008617162704467773,0.0026090145111083984,0.0010139942169189453,0.00152587890625,0.00451207160949707,0.006090879440307617]} 2 | {"uid":"CT5PPHWO7CauisG9k","orig_spl":[40,33,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538],"resp_spl":[40,2057,538,538,4072,4072,666,4072,4072,4072,2272,1052,4072,4072,4072,4072,280,3816,4072,4072],"orig_spt":[0.0,0.0005059242248535156,0.0008988380432128906,0.0002841949462890625,0.0003800392150878906,0.0003170967102050781,0.0005970001220703125,0.0013709068298339844,0.00016498565673828125,0.19671893119812012,0.008958101272583008,0.00010991096496582031,0.2021331787109375,0.012423992156982422,0.00011396408081054688,0.19775795936584473,0.017441987991333008,0.0003199577331542969,0.18929004669189453,0.025889873504638672],"resp_spt":[0.0,0.21040916442871094,0.6145479679107666,0.21602988243103027,0.39163804054260254,0.0003948211669921875,0.0,0.4194600582122803,0.007975101470947266,0.00015401840209960938,0.0006778240203857422,0.0,0.00016117095947265625,0.00015687942504882813,9.989738464355469e-05,0.1972191333770752,0.0017600059509277344,0.006331920623779297,0.00034499168395996094,0.002081155776977539]} 3 | {"uid":"CEQOW87im5sC3IaJ2","orig_spl":[40,33,538,538,538,4096,4096,4096,4096,184,3936,4096,4096,4096,344,4096,4096,4096,4096,184],"resp_spl":[40,2037,538,538,538,4072,602,4072,602,4072,602,4072,4072,666,1052,3622,4072,4072,152,4072],"orig_spt":[0.0,0.0006239414215087891,0.001055002212524414,0.00018715858459472656,0.001528024673461914,0.0003190040588378906,0.0002930164337158203,0.00037288665771484375,0.00019693374633789063,0.0001971721649169922,2.7894973754882813e-05,0.00019502639770507813,0.00027489662170410156,0.0003139972686767578,0.00025010108947753906,0.00023508071899414063,0.0001609325408935547,0.00018405914306640625,0.00013899803161621094,0.00013899803161621094],"resp_spt":[0.0,0.20276689529418945,1.2244069576263428,0.7573738098144531,0.2974061965942383,0.05249786376953125,0.0,0.0009839534759521484,0.0009510517120361328,0.1510629653930664,0.047422170639038086,0.0011467933654785156,0.00041413307189941406,0.0,6.508827209472656e-05,0.0001227855682373047,0.005237102508544922,0.00022411346435546875,0.0,0.15122699737548828]} 4 | {"uid":"C6GDs6GBCpO8HSrQd","orig_spl":[40,33,538,538,538,4096,4096,4096,4096,184,3936,4096,4096,4096,344,4096,4096,4096,4096,184],"resp_spl":[40,2071,538,538,4072,3172,4072,602,4072,4072,152,3622,538,4072,4072,4072,4072,280,3816,4072],"orig_spt":[0.0,0.0005290508270263672,0.0016880035400390625,0.00041294097900390625,0.0019860267639160156,0.00032401084899902344,0.0002288818359375,0.00020813941955566406,0.00012803077697753906,0.0001468658447265625,0.00012302398681640625,0.00017309188842773438,0.00016188621520996094,0.00015807151794433594,0.0002238750457763672,0.0002551078796386719,0.00015592575073242188,0.00019311904907226563,0.00023794174194335938,0.00048804283142089844],"resp_spt":[0.0,0.2028520107269287,0.4390850067138672,0.20058393478393555,0.22966313362121582,0.00047588348388671875,0.0012030601501464844,0.19624590873718262,0.003443002700805664,0.00026607513427734375,0.0,0.00011086463928222656,0.0,0.00450897216796875,0.0009732246398925781,0.09644889831542969,0.10620808601379395,6.699562072753906e-05,0.000125885009765625,0.00023794174194335938]} 5 | {"uid":"CgbvM81Z3nascFar29","orig_spl":[40,33,538,538,538,538],"resp_spl":[40,2075,538,538,4072,4072,4072,4072,280,3816,1372,538],"orig_spt":[0.0,0.0004391670227050781,0.0007300376892089844,0.00015592575073242188,0.000698089599609375,0.0003650188446044922],"resp_spt":[0.0,0.4035308361053467,0.8181710243225098,0.30567193031311035,0.2341921329498291,0.0028929710388183594,0.0002598762512207031,0.00019216537475585938,0.0,0.27436184883117676,0.30876612663269043,62.72413182258606]} 6 | {"uid":"CYcn7x15pHT1afTJol","orig_spl":[40,33,538,538,538,4096,4096,4096,4096,4096,4096,184,3936,4096,4096,4096,344,3776,4096,4096],"resp_spl":[40,2057,538,538,4072,3172,4072,4072,3236,4072,88,4072,602,538,4072,4072,3236,4072,3172,4072],"orig_spt":[0.0,0.0007259845733642578,0.0008471012115478516,0.00023293495178222656,0.0011050701141357422,0.0002200603485107422,0.00028896331787109375,0.0001690387725830078,9.894371032714844e-05,0.0001518726348876953,9.012222290039063e-05,0.00010395050048828125,0.0001430511474609375,0.0001289844512939453,0.00025200843811035156,7.987022399902344e-05,9.608268737792969e-05,8.606910705566406e-05,7.390975952148438e-05,0.00011396408081054688],"resp_spt":[0.0,0.21031880378723145,0.46231603622436523,0.21959400177001953,0.19147515296936035,0.0001659393310546875,0.0044460296630859375,0.19288992881774902,0.002146005630493164,0.0002980232238769531,0.0,0.0003020763397216797,0.0,0.0,0.007326841354370117,0.00400996208190918,0.0006120204925537109,0.22574210166931152,0.0013298988342285156,0.00018405914306640625]} 7 | -------------------------------------------------------------------------------- /samples/web-browse/spl.log: -------------------------------------------------------------------------------- 1 | {"uid":"CK7tRg1CaTzdhC34Qg","orig_spl":[69,165,248,26,211,165,34,19],"resp_spl":[46,2575,281,69,282,282,65,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041],"orig_spt":[0.0,0.0006029605865478516,7.796287536621094e-05,0.00029397010803222656,0.36979103088378906,0.0041010379791259766,40.3291699886322,0.0004968643188476563],"resp_spt":[0.0,3.814697265625e-06,0.0,0.0,0.004309177398681641,9.5367431640625e-07,0.0,0.009078025817871094,4.0531158447265625e-06,0.0,9.5367431640625e-07,0.0,9.5367431640625e-07,9.5367431640625e-07,0.0,9.5367431640625e-07,0.0,1.1920928955078125e-06,9.5367431640625e-07,0.0]} 2 | {"uid":"CbTaBr2sXUL6R9DGZ5","resp_spl":[2486],"resp_spt":[0.0]} 3 | {"uid":"CzQ8dA2B6PZDAhSLVg","orig_spl":[53,1175,1124,19],"resp_spl":[42,3107,281,53,74,74,1387,1056,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387],"orig_spt":[0.0,0.0013408660888671875,0.32951879501342773,0.0011620521545410156],"resp_spt":[0.0,2.1457672119140625e-06,0.0,0.0,0.03339409828186035,9.5367431640625e-07,2.775871992111206,5.0067901611328125e-06,9.5367431640625e-07,1.1920928955078125e-06,9.5367431640625e-07,1.9073486328125e-06,0.0,2.1457672119140625e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,0.03467893600463867,5.0067901611328125e-06,1.1920928955078125e-06]} 4 | {"uid":"C8r8WC4IOCOTsllXXb","orig_spl":[53,182,19],"resp_spl":[36,3032,281,53,250,250,41],"orig_spt":[0.0,0.0005218982696533203,0.00321197509765625],"resp_spt":[0.0,4.0531158447265625e-06,0.0,0.0,0.03478217124938965,9.5367431640625e-07,0.0]} 5 | {"uid":"CNKOfG4gEZORjQ4y2b","orig_spl":[53,182,19],"resp_spl":[36,3032,281,53,250,250,41],"orig_spt":[0.0,0.0011398792266845703,0.00045299530029296875],"resp_spt":[0.0,4.0531158447265625e-06,0.0,0.0,0.05014204978942871,9.5367431640625e-07,0.00021791458129882813]} 6 | {"uid":"CwcHmEIgRtKv9b9Rl","orig_spl":[40,26],"resp_spl":[40,26],"orig_spt":[0.0,5.949076890945435],"resp_spt":[0.0,0.007261991500854492]} 7 | {"uid":"CVA76s2Jbvns22szOi","orig_spl":[40,26],"resp_spl":[40,26],"orig_spt":[0.0,5.912662029266357],"resp_spt":[0.0,0.0076448917388916016]} 8 | {"uid":"CyEGvM30kediWaSdUk","orig_spl":[40,26],"resp_spl":[40,26],"orig_spt":[0.0,5.94002890586853],"resp_spt":[0.0,0.007453203201293945]} 9 | {"uid":"C3HHwgkT0bBrswVW4","orig_spl":[40,26],"resp_spl":[40,26],"orig_spt":[0.0,5.96752405166626],"resp_spt":[0.0,0.007096052169799805]} 10 | {"uid":"CPy7Wx1raeOjQBeX58","orig_spl":[40,26],"resp_spl":[40,26],"orig_spt":[0.0,5.905356168746948],"resp_spt":[0.0,0.010798931121826172]} 11 | {"uid":"C5hBs62oPhrmtpYQSa","orig_spl":[40,189,26],"resp_spl":[40,64,33],"orig_spt":[0.0,0.006596088409423828,0.0029489994049072266],"resp_spt":[0.0,0.0,0.003253936767578125]} 12 | {"uid":"CWSxWW1hUflNIfFGGe","orig_spl":[40,189,26],"resp_spl":[40,64,33],"orig_spt":[0.0,0.003618001937866211,0.0040569305419921875],"resp_spt":[0.0,0.0,0.0023419857025146484]} 13 | {"uid":"Cc7bV41LwLaHgo5bw","orig_spl":[40,189,26],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00934910774230957,0.004516124725341797],"resp_spt":[0.0,9.5367431640625e-07,0.007309913635253906]} 14 | {"uid":"CzFDIPAG3XKcsVNb2","orig_spl":[40,189,26],"resp_spl":[40,64,33],"orig_spt":[0.0,0.00039505958557128906,0.0023200511932373047],"resp_spt":[0.0,0.0,0.008997917175292969]} 15 | {"uid":"CPNrXp1j7EoL5rDxpg","orig_spl":[40,189,26],"resp_spl":[40,64,33],"orig_spt":[0.0,0.005694866180419922,0.0011069774627685547],"resp_spt":[0.0,1.9073486328125e-06,0.0036230087280273438]} 16 | {"uid":"C6sQGzJeLYTKgPDh3","resp_spl":[2486],"resp_spt":[0.0]} 17 | {"uid":"CDo9s42k3YNW34VDxb","orig_spl":[53,1662,51,77,289,117,136,160,136,607,120,49,25,19],"resp_spl":[3338,445,344,745,1020,87,412,121,97,1019,99,139,51,252,21,19],"orig_spt":[0.0,0.0003399848937988281,1.4377820491790771,0.5271091461181641,1.1908278465270996,2.5575568675994873,0.18327713012695313,0.9704530239105225,0.12674689292907715,0.4658491611480713,2.0071589946746826,1.1206510066986084,2.4467999935150146,1.0011792182922363],"resp_spt":[0.0,0.03838491439819336,0.0,0.2674400806427002,0.04367184638977051,0.1415419578552246,0.035653114318847656,0.036377906799316406,0.030836105346679688,0.036908864974975586,0.3789229393005371,0.036950111389160156,0.03829503059387207,1.740830898284912,0.041281938552856445,0.03760099411010742]} 18 | {"uid":"CwTb0m1ypmsuYcZO0l","orig_spl":[53,182,19],"resp_spl":[2504,513,57,26],"orig_spt":[0.0,0.0006589889526367188,0.0006761550903320313],"resp_spt":[0.0,0.03384900093078613,0.0,2.86102294921875e-06]} 19 | {"uid":"CEtOh54S7dAz3bKV7h","orig_spl":[53,182,19],"resp_spl":[2505,513,57,26],"orig_spt":[0.0,0.0009400844573974609,0.0008420944213867188],"resp_spt":[0.0,0.032510995864868164,0.0,4.0531158447265625e-06]} 20 | {"uid":"C3H55l1ICCYHSZpZt9","resp_spl":[2537],"resp_spt":[0.0]} 21 | {"uid":"CJF1OG1rsA25gvhttd","resp_spl":[2536],"resp_spt":[0.0]} 22 | {"uid":"Ckc1OJzTg3XjKgR6a","orig_spl":[40,338],"resp_spl":[40,879,1395,190],"orig_spt":[0.0,0.031033039093017578],"resp_spt":[0.0,0.011542081832885742,5.9604644775390625e-06,0.0]} 23 | {"uid":"CL1PHs2C0zBMscvfB7","orig_spl":[40,446,337,338,338,336],"resp_spl":[40,504,829,1395,46,883,1395,954,879,1395,1395,1395,1395,1395,1395,728,831,1395,1262],"orig_spt":[0.0,0.004266023635864258,0.7245221138000488,1.6944150924682617,0.009035110473632813,0.04170393943786621],"resp_spt":[0.0,0.010308980941772461,0.11380887031555176,5.9604644775390625e-06,0.0,0.010461091995239258,1.9073486328125e-06,9.5367431640625e-07,0.007189035415649414,2.86102294921875e-06,9.5367431640625e-07,1.1920928955078125e-06,0.0,0.0014369487762451172,5.0067901611328125e-06,9.5367431640625e-07,0.10640215873718262,3.814697265625e-06,1.1920928955078125e-06]} 24 | {"uid":"CRBCCx2fjdSm8T5un6","orig_spl":[53,165,809,26,294,286,30,202,163,111,247,794,280,253,692,244,772,395,251,762],"resp_spl":[36,3032,281,53,250,250,41,902,407,90,1675,26,90,43,43,43,43,43,43,2353],"orig_spt":[0.0,0.0008678436279296875,8.606910705566406e-05,0.0003490447998046875,0.012711048126220703,0.482928991317749,0.0006389617919921875,0.48606109619140625,0.256619930267334,1.1505019664764404,2.0525472164154053,0.0002818107604980469,0.0003399848937988281,0.06011509895324707,0.0001800060272216797,0.0007920265197753906,0.00010395050048828125,0.00021696090698242188,0.0017001628875732422,0.00013685226440429688],"resp_spt":[0.0,3.814697265625e-06,0.0,0.0,0.038970947265625,0.0,9.5367431640625e-07,0.20414209365844727,0.14945292472839355,0.11733102798461914,0.23911690711975098,0.0,1.7813999652862549,0.5053081512451172,9.5367431640625e-07,0.005313873291015625,3.0994415283203125e-06,0.0,1.9073486328125e-06,2.1457672119140625e-06]} 25 | {"uid":"CycXDbnnWJnyZrOV","orig_spl":[40,172,246,33,147,147],"resp_spl":[40,64,33,16384,48,667,33,1789,381,33,1545,33],"orig_spt":[0.0,0.0014069080352783203,0.00016808509826660156,0.015692949295043945,0.9149501323699951,3.385658025741577],"resp_spt":[0.0,9.5367431640625e-07,0.0,0.014241933822631836,0.0,0.0,0.0,0.00966787338256836,0.0,9.5367431640625e-07,0.009489059448242188,9.5367431640625e-07]} 26 | {"uid":"CclI3Rk6NWiq96nWk","orig_spl":[53,1189],"resp_spl":[42,3107,281,53,74,74,1387,1051,1387,684],"orig_spt":[0.0,0.00041794776916503906],"resp_spt":[0.0,4.0531158447265625e-06,0.0,0.0,0.037995100021362305,9.5367431640625e-07,0.2831449508666992,5.0067901611328125e-06,1.1920928955078125e-06,9.5367431640625e-07]} 27 | {"uid":"CH4Nbc11Wz2ukKOsR","orig_spl":[53,165,26],"resp_spl":[3640,513,57,26],"orig_spt":[0.0,0.0006039142608642578,0.0003390312194824219],"resp_spt":[0.0,0.032859086990356445,0.0,9.5367431640625e-07]} 28 | {"uid":"C7Vgdf1TlUuBj7WS7d","orig_spl":[40,687,845,695,1224],"resp_spl":[40,265,265,265,265],"orig_spt":[0.0,0.0008759498596191406,1.9664318561553955,3.5007588863372803,2.075889825820923],"resp_spt":[0.0,0.07241010665893555,0.13953614234924316,0.1547551155090332,0.10339713096618652]} 29 | {"uid":"CYb8nD2YY8ZsM2Zc4c","orig_spl":[40,337,338,338],"resp_spl":[40,883,1395,779,881,1173,880,1395,191],"orig_spt":[0.0,0.009251117706298828,0.0477299690246582,0.0008378028869628906],"resp_spt":[0.0,0.016093969345092773,7.867813110351563e-06,2.1457672119140625e-06,0.009763002395629883,4.0531158447265625e-06,0.00978708267211914,6.9141387939453125e-06,0.0]} 30 | {"uid":"Ch5UmM2zvPxdMfEGm","orig_spl":[40,172,232,33],"resp_spl":[40,64,33,1529,33],"orig_spt":[0.0,0.0011551380157470703,8.893013000488281e-05,0.00047016143798828125],"resp_spt":[0.0,0.0,3.814697265625e-06,0.11361002922058105,9.5367431640625e-07]} 31 | {"uid":"CBCx8a22SV6ibbhCU7","orig_spl":[53,182,19],"resp_spl":[3641,513,57,26],"orig_spt":[0.0,0.0033559799194335938,0.0005300045013427734],"resp_spt":[0.0,0.031023025512695313,0.0,0.0026569366455078125]} 32 | {"uid":"CE6CoX16xNAhrOKYWg","orig_spl":[53,1224],"resp_spl":[42,3107,281,53,74,74,1387,997,72],"orig_spt":[0.0,0.0005459785461425781],"resp_spt":[0.0,4.0531158447265625e-06,0.0,0.0,0.03655099868774414,9.5367431640625e-07,0.1324911117553711,5.9604644775390625e-06,9.5367431640625e-07]} 33 | {"uid":"Crl8l14tyRHK37zgaf","orig_spl":[40,337,338],"resp_spl":[40,883,1395,129,882,1395,482],"orig_spt":[0.0,0.00453495979309082,0.020159006118774414],"resp_spt":[0.0,0.010072946548461914,7.152557373046875e-06,0.0,0.008964061737060547,2.86102294921875e-06,9.5367431640625e-07]} 34 | {"uid":"C7HJxN39BWhIjHmXjh","orig_spl":[53,165,1641,26,114,34,812,85,233,30,34,34],"resp_spl":[3641,513,57,26,682,1425,268,1047,203,490,26,34,1425,532,264,77,182,1425,1425,1425],"orig_spt":[0.0,0.0012049674987792969,0.00011515617370605469,0.00044608116149902344,0.012590885162353516,0.0007369518280029297,1.036613941192627,0.0001430511474609375,0.07302594184875488,0.004097938537597656,0.052694082260131836,0.09746384620666504],"resp_spt":[0.0,0.03303790092468262,0.0,9.5367431640625e-07,0.023936986923217773,4.0531158447265625e-06,9.5367431640625e-07,0.0,1.1920928955078125e-06,0.04346799850463867,9.5367431640625e-07,0.0,0.006412029266357422,2.9087066650390625e-05,0.0,9.5367431640625e-07,0.029119014739990234,9.5367431640625e-07,3.0994415283203125e-06,9.5367431640625e-07]} 35 | {"uid":"CJRxmZQq3fBgtPZTk","orig_spl":[40,338],"resp_spl":[40,883,1395,189],"orig_spt":[0.0,0.015583992004394531],"resp_spt":[0.0,0.008297920227050781,9.5367431640625e-07,0.0]} 36 | {"uid":"CmTiuu4unm5tSV9Rsl","orig_spl":[40,172,33,242],"resp_spl":[40,61,1395,632],"orig_spt":[0.0,0.0037240982055664063,0.0003409385681152344,0.09480404853820801],"resp_spt":[0.0,0.010361909866333008,0.00864410400390625,0.0]} 37 | {"uid":"CtQcKPGkTvSGHZ0Ad","orig_spl":[53,165,4545,26,205,353,34,2758,34,2938,34,3443,26,34,2391,34,2649,30,34,2525],"resp_spl":[2505,513,57,26,851,26,34,1425,1425,201,1425,1425,1425,29,119,1425,1425,1326,1425,1425],"orig_spt":[0.0,0.001394033432006836,0.00013709068298339844,0.00044417381286621094,0.015295028686523438,0.00015592575073242188,0.00032401084899902344,0.4408600330352783,0.0924530029296875,0.11205196380615234,0.08320212364196777,1.41495680809021,0.0006489753723144531,0.11567020416259766,0.4227118492126465,0.0648200511932373,0.8321330547332764,0.010100841522216797,0.02668309211730957,1.675365924835205],"resp_spt":[0.0,0.032939910888671875,0.0,9.5367431640625e-07,0.08060693740844727,0.0020890235900878906,9.5367431640625e-07,0.0029129981994628906,4.0531158447265625e-06,0.0,9.5367431640625e-07,0.0,9.5367431640625e-07,9.5367431640625e-07,0.0,0.0,1.1920928955078125e-06,0.0,9.5367431640625e-07,9.5367431640625e-07]} 38 | {"uid":"CvqEOM1MeN8MtE2vxl","orig_spl":[53,182,19],"resp_spl":[3641,513,57,26],"orig_spt":[0.0,0.0008258819580078125,0.0006649494171142578],"resp_spt":[0.0,0.034150123596191406,0.0,9.5367431640625e-07]} 39 | {"uid":"CBeymw8MfBdLjHkJ","orig_spl":[53,165,278,26,79,79],"resp_spl":[36,3032,281,53,266,250,41,266,266,266],"orig_spt":[0.0,0.003306865692138672,0.00027298927307128906,0.001987934112548828,1.453739881515503,0.09620308876037598],"resp_spt":[0.0,3.0994415283203125e-06,0.0,0.0,0.10162997245788574,1.1920928955078125e-06,3.814697265625e-06,1.1920928955078125e-06,0.037358999252319336,0.03741288185119629]} 40 | {"uid":"CGQ1G71B4w4zKkbBoh","orig_spl":[53,3029],"resp_spl":[42,2873,281,53,74,74,965],"orig_spt":[0.0,0.0005300045013427734],"resp_spt":[0.0,6.9141387939453125e-06,0.0,0.0,0.034584999084472656,9.5367431640625e-07,0.11082315444946289]} 41 | {"uid":"CJ4gxl1iA46aoGMZ22","orig_spl":[53,1178],"resp_spl":[42,3107,281,53,74,74,1387,1053,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387],"orig_spt":[0.0,0.0006198883056640625],"resp_spt":[0.0,5.0067901611328125e-06,0.0,0.0,0.036108970642089844,0.0,1.2062041759490967,5.9604644775390625e-06,0.0,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,1.1920928955078125e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,0.10143899917602539,0.8566670417785645,9.5367431640625e-07,0.0]} 42 | {"uid":"CiMtMi2h6ofQufUjA2","orig_spl":[53,165,26],"resp_spl":[2535,513,57,26],"orig_spt":[0.0,0.0006091594696044922,0.00039196014404296875],"resp_spt":[0.0,0.03228187561035156,0.0,0.0]} 43 | {"uid":"Cw5PjAcZxBvQaRw9j","orig_spl":[40,172,211,33,90,89,89,89,37,37,37,37,90,89,89,89,37,89,89,89],"resp_spl":[40,64,33,6379,33,10234,33],"orig_spt":[0.0,0.0020389556884765625,0.00013709068298339844,0.0036389827728271484,4.370344161987305,0.0010228157043457031,0.0005691051483154297,0.00029397010803222656,0.00789499282836914,0.0015940666198730469,0.0016210079193115234,0.0015249252319335938,3.8064379692077637,0.00046706199645996094,0.0025620460510253906,0.0008828639984130859,0.0008990764617919922,0.0004630088806152344,0.0010769367218017578,0.0020210742950439453],"resp_spt":[0.0,0.0,0.0028290748596191406,0.024473905563354492,0.0,0.05340409278869629,0.0]} 44 | {"uid":"ClJhmFClmWeSvloD2","orig_spl":[69,165,26],"resp_spl":[46,2575,281,69,282,282,65],"orig_spt":[0.0,0.00133514404296875,0.007341146469116211],"resp_spt":[0.0,5.0067901611328125e-06,9.5367431640625e-07,0.0,0.0042269229888916016,1.9073486328125e-06,0.0]} 45 | {"uid":"C8ZHl23bE7KXqqxYI3","orig_spl":[40,88,33,183],"resp_spl":[40,64,33,499,33],"orig_spt":[0.0,0.029102802276611328,0.0003972053527832031,0.0001499652862548828],"resp_spt":[0.0,0.007367134094238281,0.007153034210205078,0.06807899475097656,9.5367431640625e-07]} 46 | {"uid":"CITwmb2VfBvu2WFYM7","orig_spl":[53,165,2245,26,34],"resp_spl":[2519,513,57,26,482,529,83,90,34],"orig_spt":[0.0,0.0014841556549072266,0.00013685226440429688,0.00045800209045410156,0.0006511211395263672],"resp_spt":[0.0,0.032896995544433594,0.0,1.1920928955078125e-06,0.01417088508605957,9.5367431640625e-07,0.0,5.0067901611328125e-06,9.5367431640625e-07]} 47 | {"uid":"CVj8IQ3eH05QFiqvG6","orig_spl":[40,1223,778,881],"resp_spl":[40,265,265,265],"orig_spt":[0.0,0.0011959075927734375,5.56644082069397,0.01887822151184082],"resp_spt":[0.0,0.09112119674682617,0.1093759536743164,0.1123349666595459]} 48 | {"uid":"CrQx593Imwipz6gk43","orig_spl":[53,165,193,26,34],"resp_spl":[2486,513,57,26,409,179,27,26,34],"orig_spt":[0.0,0.0009629726409912109,0.00011706352233886719,0.0005300045013427734,0.0009369850158691406],"resp_spt":[0.0,0.07656407356262207,0.0,9.5367431640625e-07,0.0052318572998046875,1.1920928955078125e-06,5.0067901611328125e-06,0.0,9.5367431640625e-07]} 49 | {"uid":"CilHmP3DnBZMTAv6Ec","orig_spl":[53,165,1124,95,26,34,289,484,142,34,323,34,255,383,152,484,352,34],"resp_spl":[3641,513,57,26,491,1425,1425,1425,124,62,192,34,294,412,280,34,659,1425,1425,1425],"orig_spt":[0.0,0.0007410049438476563,7.915496826171875e-05,7.796287536621094e-05,0.0003490447998046875,0.0008399486541748047,1.9251041412353516,8.58306884765625e-05,0.00015401840209960938,0.0004839897155761719,1.8470430374145508,0.00949406623840332,1.2454710006713867,0.0001659393310546875,0.017904043197631836,0.00017189979553222656,0.0002391338348388672,0.03722500801086426],"resp_spt":[0.0,0.03394794464111328,0.0,0.0,0.030376911163330078,9.5367431640625e-07,2.1457672119140625e-06,9.5367431640625e-07,9.5367431640625e-07,0.0,0.0,0.0,0.05772519111633301,9.5367431640625e-07,0.0,1.9073486328125e-06,0.09241390228271484,1.1920928955078125e-06,5.9604644775390625e-06,9.5367431640625e-07]} 50 | {"uid":"CqJWyrXinPrJG3Glg","orig_spl":[53,165,26,2035,34,876,657,34,250,932,34,242,2439],"resp_spl":[8017,513,57,26,645,1425,244,74,34,254,122,254,34,235,1425,1425,327,1425,1425,115],"orig_spt":[0.0,0.0009241104125976563,0.0004570484161376953,0.04123401641845703,0.0007610321044921875,3.1695449352264404,0.00010704994201660156,0.00055694580078125,1.0415539741516113,0.00011014938354492188,0.0002918243408203125,0.6954021453857422,0.00011396408081054688],"resp_spt":[0.0,0.03408098220825195,0.0,9.5367431640625e-07,0.1269698143005371,1.1920928955078125e-06,5.9604644775390625e-06,9.5367431640625e-07,0.0,0.09595799446105957,0.0,0.0,9.5367431640625e-07,0.10654592514038086,0.0,4.0531158447265625e-06,9.5367431640625e-07,0.002109050750732422,5.0067901611328125e-06,0.0017440319061279297]} 51 | {"uid":"C3gLJj23BDXE7BlJR3","orig_spl":[53,165,1087,26,34],"resp_spl":[2487,513,57,26,515,26,34],"orig_spt":[0.0,0.002537965774536133,0.00017404556274414063,0.0006108283996582031,0.001425027847290039],"resp_spt":[0.0,0.06429886817932129,0.0,1.1920928955078125e-06,0.009116172790527344,9.5367431640625e-07,9.5367431640625e-07]} 52 | {"uid":"CM7D7A3kmVpWLVyQq2","orig_spl":[40,172,33,236,142],"resp_spl":[40,61,1395,280,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395],"orig_spt":[0.0,0.0024018287658691406,0.0002319812774658203,0.06272006034851074,0.0012059211730957031],"resp_spt":[0.0,0.0024330615997314453,0.009868144989013672,0.0,1.9073486328125e-06,9.5367431640625e-07,9.5367431640625e-07,2.1457672119140625e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,0.009428977966308594,5.0067901611328125e-06,0.0,1.1920928955078125e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,1.1920928955078125e-06]} 53 | {"uid":"C3XhNb4N8UTRDLB43b","orig_spl":[53,1006,61],"resp_spl":[42,2873,281,53,74,74,262],"orig_spt":[0.0,0.0005049705505371094,0.008494138717651367],"resp_spt":[0.0,6.198883056640625e-06,0.0,0.0,0.08061003684997559,9.5367431640625e-07,0.003545999526977539]} 54 | {"uid":"CCzG9n1FJiKj8isWm3","orig_spl":[53,165,1311,26,34,303,34],"resp_spl":[3640,513,57,26,514,26,34,698,1425,584,1425,1425,1400,1425,1425,67,1240,224,57,34],"orig_spt":[0.0,0.00333404541015625,0.00017595291137695313,0.00571894645690918,0.014695882797241211,0.20672607421875,0.0003809928894042969],"resp_spt":[0.0,0.03114008903503418,0.0,0.026886940002441406,0.0007429122924804688,1.1920928955078125e-06,9.5367431640625e-07,0.06896400451660156,9.5367431640625e-07,2.1457672119140625e-06,9.5367431640625e-07,0.0021598339080810547,3.0994415283203125e-06,0.0018150806427001953,4.0531158447265625e-06,0.001779794692993164,0.0037469863891601563,1.1920928955078125e-06,6.9141387939453125e-06,0.0]} 55 | {"uid":"C9tKNy4IpmKhI7uoQa","orig_spl":[53,165,326,26,34,161,1550,34,121,1655,43,34,749,34,1112,34],"resp_spl":[3641,513,57,26,471,26,34,417,393,159,34,336,214,38,34,325,26,34,412,26],"orig_spt":[0.0,0.0010399818420410156,0.00016808509826660156,0.0005469322204589844,0.0006301403045654297,0.998917818069458,0.0002391338348388672,0.000579833984375,2.7670211791992188,0.00020384788513183594,0.0002779960632324219,0.000982046127319336,1.4520080089569092,0.0007228851318359375,0.002435922622680664,0.0006549358367919922],"resp_spt":[0.0,0.03320193290710449,0.0,4.0531158447265625e-06,0.01724100112915039,9.5367431640625e-07,0.0,0.0903780460357666,0.0,0.0,9.5367431640625e-07,0.05600619316101074,9.5367431640625e-07,9.5367431640625e-07,0.0,0.045224905014038086,0.0,3.0994415283203125e-06,0.19509315490722656,9.5367431640625e-07]} 56 | {"uid":"CnKIXp3T7s4YvkXkN8","orig_spl":[40,883,847],"resp_spl":[40,265,265],"orig_spt":[0.0,0.0025811195373535156,5.62984299659729],"resp_spt":[0.0,0.15479207038879395,0.11669492721557617]} 57 | {"uid":"CODNfC4YK4BPLbrUu6","orig_spl":[53,165,26,447,30],"resp_spl":[5110,513,57,26],"orig_spt":[0.0,0.0006201267242431641,0.0003879070281982422,4.5764241218566895,0.0022170543670654297],"resp_spt":[0.0,0.03244304656982422,0.0,9.5367431640625e-07]} 58 | {"uid":"CSyWT72P67GWmPD6Bc","orig_spl":[53,165,1095,26,34],"resp_spl":[3640,513,57,26,464,61,26,34],"orig_spt":[0.0,0.0011620521545410156,0.00010991096496582031,0.0012331008911132813,0.0007989406585693359],"resp_spt":[0.0,0.03228402137756348,0.0,5.0067901611328125e-06,0.021924972534179688,1.9073486328125e-06,0.0,0.0]} 59 | {"uid":"CGjcTy35tkDWfWEuwj","orig_spl":[53,165,242,382,69,333,69,299,26,34],"resp_spl":[2749,57,26,398,61,26,34,66,61,26,66,61,26],"orig_spt":[0.0,0.0009520053863525391,0.0001270771026611328,0.00011396408081054688,0.00039005279541015625,0.00012302398681640625,0.002228975296020508,0.00017189979553222656,0.0003380775451660156,0.0007600784301757813],"resp_spt":[0.0,0.0506289005279541,2.1457672119140625e-06,0.01712799072265625,9.5367431640625e-07,0.0,9.5367431640625e-07,0.0,5.0067901611328125e-06,0.0,9.5367431640625e-07,0.0,9.5367431640625e-07]} 60 | {"uid":"CIRtCo1yn84M22SrOh","orig_spl":[40,172,208,301,33,41],"resp_spl":[40,64,33,1706,33,41],"orig_spt":[0.0,0.0016770362854003906,0.00012087821960449219,0.00011801719665527344,0.0007719993591308594,58.394611120224],"resp_spt":[0.0,9.5367431640625e-07,0.0,0.03248095512390137,0.0,0.0651540756225586]} 61 | {"uid":"CT6VptX7Z3vTLrNyc","orig_spl":[53,165,225,26,34,90,91,93,92,90,34,108,85,34,94,34],"resp_spl":[2537,513,57,26,375,69,26,34,133,415,34,100,334,99,286,100,289,100,312,103],"orig_spt":[0.0,0.0006768703460693359,8.606910705566406e-05,0.00037097930908203125,0.000640869140625,0.8143761157989502,0.0016849040985107422,0.0045430660247802734,0.0005800724029541016,0.0006380081176757813,0.003481149673461914,2.0108299255371094,0.001619100570678711,0.00047087669372558594,2.250494956970215,0.05088305473327637],"resp_spt":[0.0,0.03271007537841797,0.0,0.0,0.017195940017700195,4.0531158447265625e-06,0.0,0.0,0.025259971618652344,9.5367431640625e-07,0.0,0.0023419857025146484,9.5367431640625e-07,0.0006840229034423828,9.5367431640625e-07,5.0067901611328125e-06,9.5367431640625e-07,0.0016520023345947266,9.5367431640625e-07,0.03302407264709473]} 62 | {"uid":"CL2XFh40G1nfEcSbo1","orig_spl":[53,165,1009,26,34,732,34,111,34,102,34],"resp_spl":[8017,513,57,26,571,26,34,130,26,34,70,26,34,70,26,34],"orig_spt":[0.0,0.0010161399841308594,0.00010895729064941406,0.0009639263153076172,0.0007579326629638672,3.2562971115112305,0.0007529258728027344,1.0783090591430664,0.0005731582641601563,0.7646448612213135,0.0005409717559814453],"resp_spt":[0.0,0.03258395195007324,0.0,2.1457672119140625e-06,0.01025700569152832,9.5367431640625e-07,0.0,0.04146885871887207,1.1920928955078125e-06,0.0,0.059480905532836914,0.0,9.5367431640625e-07,0.041079044342041016,9.5367431640625e-07,0.0]} 63 | {"uid":"CIEBud2Z84KzXUZJOh","orig_spl":[40,338],"resp_spl":[40,883,1395,189],"orig_spt":[0.0,0.007750988006591797],"resp_spt":[0.0,0.0070569515228271484,9.5367431640625e-07,0.0]} 64 | {"uid":"CjidmVTZqALBmllUi","orig_spl":[40,337,338,338,338],"resp_spl":[40,885,1366,880,1395,533,881,1395,925,830,1395,1395,1395,1395,1395,469],"orig_spt":[0.0,1.7459030151367188,0.006618976593017578,0.0465848445892334,0.02120685577392578],"resp_spt":[0.0,0.01151418685913086,1.9073486328125e-06,0.017034053802490234,4.0531158447265625e-06,9.5367431640625e-07,0.008488178253173828,3.814697265625e-06,1.1920928955078125e-06,0.11005115509033203,5.0067901611328125e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,1.1920928955078125e-06]} 65 | {"uid":"C3zWDI2AMtyzA2plP6","orig_spl":[53,165,206,98,26,102,98,974],"resp_spl":[36,3032,281,53,250,250,41,290,290,290,290,290],"orig_spt":[0.0,0.0006191730499267578,7.605552673339844e-05,0.009631872177124023,0.0003790855407714844,0.3562660217285156,0.0013668537139892578,19.737830877304077],"resp_spt":[0.0,4.0531158447265625e-06,0.0,0.0,0.048182010650634766,9.5367431640625e-07,9.5367431640625e-07,0.06070590019226074,0.06340217590332031,0.1149599552154541,1.1920928955078125e-06,0.12068605422973633]} 66 | {"uid":"CMLSpe1vb8V9dYuy03","orig_spl":[40,337,337,338],"resp_spl":[40,881,1395,223,882,1395,90,880,1395,25],"orig_spt":[0.0,0.005258083343505859,0.023455142974853516,0.04659891128540039],"resp_spt":[0.0,0.007412910461425781,5.0067901611328125e-06,0.0,0.010295867919921875,4.0531158447265625e-06,0.0,0.011034011840820313,1.0967254638671875e-05,0.0]} 67 | {"uid":"CRDQOc4YrRwcyjcqy4","orig_spl":[53,2205],"resp_spl":[3106,445,469],"orig_spt":[0.0,0.0003108978271484375],"resp_spt":[0.0,0.0665750503540039,0.0]} 68 | {"uid":"CuSk3D1p2rkUUPwaNa","orig_spl":[40,763,1221],"resp_spl":[40,535,553],"orig_spt":[0.0,0.0014519691467285156,0.156419038772583],"resp_spt":[0.0,0.004942893981933594,0.06660795211791992]} 69 | {"uid":"CiaRNG3wbFBUT1k1F6","orig_spl":[53,165,223,26,34,107,93,30,30,34],"resp_spl":[2536,513,57,26,386,1425,1425,1425,1425,1425,1425,1425,1425,1425,1425,1425,1425,1425,589,34],"orig_spt":[0.0,0.00109100341796875,0.00012612342834472656,0.0004940032958984375,0.0005109310150146484,2.4511120319366455,0.0008349418640136719,0.002701997756958008,0.004682064056396484,0.02685999870300293],"resp_spt":[0.0,0.03210902214050293,0.0,9.5367431640625e-07,0.002054929733276367,4.0531158447265625e-06,9.5367431640625e-07,9.5367431640625e-07,1.1920928955078125e-06,9.5367431640625e-07,0.002045869827270508,5.0067901611328125e-06,0.001786947250366211,4.0531158447265625e-06,0.0017671585083007813,3.814697265625e-06,0.0020291805267333984,3.814697265625e-06,0.0020821094512939453,0.0]} 70 | {"uid":"CEM4wp1M9wNfrjin78","orig_spl":[40,1130],"resp_spl":[40,14533,16384,48,16384,48,16384,48,1637,15853],"orig_spt":[0.0,0.0010509490966796875],"resp_spt":[0.0,0.6458780765533447,1.3113021850585938e-05,0.0,0.006981849670410156,0.0,0.0017881393432617188,0.0,9.5367431640625e-07,0.0031800270080566406]} 71 | {"uid":"CGYsrE4wyVrYhcFLQ8","orig_spl":[53,165,26,844,203,120,481,121,638,121,168,120,921,193,117,168,120,210],"resp_spl":[36,3032,281,53,250,250,41,43,772,43,785,43,4150,43,513,43,43,955,43,515],"orig_spt":[0.0,0.0010750293731689453,0.0007190704345703125,0.0044629573822021484,0.00017309188842773438,0.9693992137908936,0.0001709461212158203,0.20005106925964355,0.00021386146545410156,0.09270000457763672,0.00012683868408203125,4.2340710163116455,0.00023102760314941406,0.00020599365234375,1.128870964050293,0.0003108978271484375,0.9385318756103516,0.0001990795135498047],"resp_spt":[0.0,8.106231689453125e-06,0.0,0.0,0.10669398307800293,9.5367431640625e-07,5.0067901611328125e-06,0.039565086364746094,0.2393357753753662,0.04117298126220703,9.5367431640625e-07,0.037345170974731445,0.003278970718383789,0.03778219223022461,0.002527952194213867,0.039302825927734375,0.0,0.0029151439666748047,0.038516998291015625,0.0019021034240722656]} 72 | {"uid":"Ct0KIgDnWLgKS0NW","orig_spl":[40,338,338],"resp_spl":[40,880,1395,477,882,1395,184],"orig_spt":[0.0,0.03187203407287598,0.047842979431152344],"resp_spt":[0.0,0.012918949127197266,5.9604644775390625e-06,1.1920928955078125e-06,0.013196945190429688,5.0067901611328125e-06,0.0]} 73 | {"uid":"CHHd8V2mzmjZOCXLkb","orig_spl":[40,338],"resp_spl":[40,883,1395,200],"orig_spt":[0.0,0.0064699649810791016],"resp_spt":[0.0,0.008929967880249023,5.9604644775390625e-06,0.0]} 74 | {"uid":"Cms9vnknruHAk7Dz8","orig_spl":[40,714],"resp_spl":[40,535],"orig_spt":[0.0,0.002028942108154297],"resp_spt":[0.0,0.0001900196075439453]} 75 | {"uid":"CMd8W1VbPkgkzQeQf","orig_spl":[53,165,26,1243,34,196,34],"resp_spl":[2508,513,57,26,590,26,34,221,26,34],"orig_spt":[0.0,0.0006248950958251953,0.00038504600524902344,1.4210119247436523,0.0008070468902587891,0.4734830856323242,0.0005810260772705078],"resp_spt":[0.0,0.03362011909484863,0.0,0.0,0.06862306594848633,9.5367431640625e-07,9.5367431640625e-07,0.06575989723205566,9.5367431640625e-07,0.0]} 76 | {"uid":"C2gjli1bPwzOvEgiNb","orig_spl":[53,165,934,26,34,126,34],"resp_spl":[8018,513,57,26,504,26,34,70,26,34],"orig_spt":[0.0,0.0008258819580078125,8.320808410644531e-05,0.0003769397735595703,0.0006120204925537109,0.16885018348693848,0.00032806396484375],"resp_spt":[0.0,0.03206300735473633,0.0,9.5367431640625e-07,0.009002923965454102,0.0,9.5367431640625e-07,0.04491996765136719,0.001489877700805664,9.5367431640625e-07]} 77 | {"uid":"CLVWOMPTzcZg57vz","orig_spl":[40,337,336,338,336,338,338],"resp_spl":[40,881,1395,216,829,1395,194,879,1395,227,831,1395,919,881,1395,201,882,1395,587],"orig_spt":[0.0,0.003304004669189453,0.6836650371551514,0.0024499893188476563,1.7478220462799072,0.04408001899719238,0.0016248226165771484],"resp_spt":[0.0,0.010186910629272461,4.0531158447265625e-06,0.0,0.03840899467468262,5.0067901611328125e-06,0.0,0.009409904479980469,5.0067901611328125e-06,0.0,0.10447907447814941,1.9073486328125e-06,9.5367431640625e-07,0.007325172424316406,9.5367431640625e-07,0.0,0.17401504516601563,4.0531158447265625e-06,0.0]} 78 | {"uid":"CsMvdb2s5IgdPJX3z7","orig_spl":[40,338,337,335,337,336],"resp_spl":[40,881,1395,880,881,1395,1395,1395,1395,1395,1395,745,831,1395,1395,1395,1395,1395,1395,1395],"orig_spt":[0.0,0.001516103744506836,2.522634983062744,0.0015149116516113281,0.028203964233398438,0.012174844741821289],"resp_spt":[0.0,0.0019240379333496094,9.059906005859375e-06,1.9073486328125e-06,0.008497953414916992,3.0994415283203125e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,1.1920928955078125e-06,9.5367431640625e-07,9.5367431640625e-07,0.10604214668273926,4.0531158447265625e-06,9.5367431640625e-07,9.5367431640625e-07,9.5367431640625e-07,0.0,9.5367431640625e-07,1.1920928955078125e-06]} 79 | {"uid":"Cbt0DE1JM1NXk5eksb","orig_spl":[53,165,26,1767,172,265,598,34,34],"resp_spl":[8018,513,57,26,653,1425,1425,1425,1425,1425,1425,1425,1425,1425,1425,1425,87,1425,1425,1425],"orig_spt":[0.0,0.0016739368438720703,0.0003299713134765625,0.006476163864135742,0.00017189979553222656,0.21578311920166016,0.00011682510375976563,0.0016469955444335938,0.04555082321166992],"resp_spt":[0.0,0.033735036849975586,0.0,2.86102294921875e-06,0.07116317749023438,9.5367431640625e-07,1.9073486328125e-06,0.0,0.002566099166870117,2.86102294921875e-06,0.0015811920166015625,1.9073486328125e-06,0.0018460750579833984,2.86102294921875e-06,0.0015151500701904297,1.9073486328125e-06,0.0018770694732666016,2.86102294921875e-06,0.0020470619201660156,3.0994415283203125e-06]} 80 | -------------------------------------------------------------------------------- /scripts/__load__.zeek: -------------------------------------------------------------------------------- 1 | @load ./spl-spt.zeek -------------------------------------------------------------------------------- /scripts/spl-spt.zeek: -------------------------------------------------------------------------------- 1 | @load base/protocols/ssl 2 | @load base/protocols/conn 3 | 4 | module SPL; 5 | 6 | export { 7 | const spl_length = 20 &redef; 8 | const spt_length = 20 &redef; 9 | 10 | redef enum Log::ID += { LOG }; 11 | 12 | type Info: record { 13 | # Not actually optional, but we load it in last 14 | uid: string &log &optional; 15 | 16 | orig_spl: vector of count &log &optional; 17 | resp_spl: vector of count &log &optional; 18 | 19 | orig_spt: vector of double &log &optional; 20 | resp_spt: vector of double &log &optional; 21 | 22 | # Track the time of the last packet 23 | last_time: time &optional; 24 | }; 25 | } 26 | 27 | # We need to store the vectors in the SSL record until the connection ends 28 | redef record connection += { 29 | spl: SPL::Info &optional; 30 | }; 31 | 32 | # Enable ssl_encrypted_data event 33 | redef SSL::disable_analyzer_after_detection=F; 34 | 35 | event zeek_init() &priority=5 36 | { 37 | # Create the stream. This adds a default filter automatically. 38 | Log::create_stream(SPL::LOG, [$columns=SPL::Info, $path="spl"]); 39 | } 40 | 41 | event ssl_encrypted_data(c: connection, is_orig: bool, record_version: count, content_type: count, len: count) { 42 | if ( ! c ?$ spl ) 43 | c$spl = SPL::Info(); 44 | 45 | if ( is_orig == T ) { 46 | if ( c$spl ?$ orig_spl == F ) { 47 | c$spl$orig_spl = vector(len); 48 | } else { 49 | if ( |c$spl$orig_spl| < spl_length ) { 50 | c$spl$orig_spl += len; 51 | } 52 | } 53 | if ( ! c$spl ?$ orig_spt ) { 54 | c$spl$orig_spt = vector(0.00); 55 | c$spl$last_time = network_time(); 56 | } else { 57 | if ( |c$spl$orig_spt| < spt_length ) { 58 | local o_c_time = network_time(); 59 | c$spl$orig_spt += interval_to_double(o_c_time - c$spl$last_time); 60 | c$spl$last_time = o_c_time; 61 | } 62 | } 63 | return; 64 | } 65 | if ( is_orig == F ) { 66 | if ( ! c$spl ?$ resp_spl ) { 67 | c$spl$resp_spl = vector(len); 68 | } else { 69 | if ( |c$spl$resp_spl| < spl_length ) { 70 | c$spl$resp_spl += len; 71 | } 72 | } 73 | 74 | if ( ! c$spl ?$ resp_spt ) { 75 | c$spl$resp_spt = vector(0.00); 76 | c$spl$last_time = network_time(); 77 | } else { 78 | if ( |c$spl$resp_spt| < spt_length ) { 79 | local r_c_time = network_time(); 80 | c$spl$resp_spt += interval_to_double(r_c_time - c$spl$last_time); 81 | c$spl$last_time = r_c_time; 82 | } 83 | } 84 | } 85 | } 86 | 87 | event connection_state_remove(c: connection) { 88 | if ( ! c ?$ spl ) 89 | return; 90 | 91 | c$spl$uid = c$uid; 92 | 93 | Log::write(SPL::LOG, c$spl); 94 | } -------------------------------------------------------------------------------- /zkg.meta: -------------------------------------------------------------------------------- 1 | [package] 2 | description = A package that creates a log for sequences of packet lengths and times, 3 | allowing for new analytics based on these data features. 4 | credits = Michael Torres 5 | tags = ssl, tls, spt, spl 6 | script_dir = scripts --------------------------------------------------------------------------------