diff options
author | Luca Deri <deri@ntop.org> | 2015-07-21 14:10:50 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2015-07-21 14:10:50 +0200 |
commit | 8d8a2045195fca29d433754e8325d8212e350f37 (patch) | |
tree | 9118d87170ac667dd43cd2f8c93fe55db0d2c462 /src | |
parent | 2ab10ec9b7df824aa66beb3e83d17d1e0e420716 (diff) |
Cleaned up starcraft protocol code
Fixed false-positive in Skype dissector
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_protocol_ids.h | 6 | ||||
-rw-r--r-- | src/include/ndpi_protocols.h | 1 | ||||
-rw-r--r-- | src/include/ndpi_typedefs.h | 4 | ||||
-rw-r--r-- | src/lib/Makefile.am | 1 | ||||
-rw-r--r-- | src/lib/ndpi_content_match.c.inc | 1419 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 22 | ||||
-rw-r--r-- | src/lib/protocols/skype.c | 16 | ||||
-rw-r--r-- | src/lib/protocols/starcraft.c | 155 | ||||
-rw-r--r-- | src/lib/protocols/starcraft2.c | 157 |
9 files changed, 900 insertions, 881 deletions
diff --git a/src/include/ndpi_protocol_ids.h b/src/include/ndpi_protocol_ids.h index e724f452d..d1b0792ff 100644 --- a/src/include/ndpi_protocol_ids.h +++ b/src/include/ndpi_protocol_ids.h @@ -199,7 +199,7 @@ #define NDPI_PROTOCOL_TELEGRAM 185 /* Gianluca Costa <g.costa@xplico.org> */ #define NDPI_PROTOCOL_QUIC 188 /* Andrea Buscarinu <andrea.buscarinu@gmail.com> - Michele Campus <michelecampus5@gmail.com> */ #define NDPI_PROTOCOL_WHATSAPP_VOICE 189 -#define NDPI_PROTOCOL_STARCRAFT2 214 /* matteobracci1@gmail.com */ +#define NDPI_PROTOCOL_STARCRAFT 214 /* Matteo Bracci <matteobracci1@gmail.com> */ #define NDPI_CONTENT_AVI 39 @@ -260,10 +260,10 @@ #define NDPI_SERVICE_DEEZER 210 #define NDPI_SERVICE_INSTAGRAM 211 /* Andrea Buscarinu <andrea.buscarinu@gmail.com> */ #define NDPI_SERVICE_MICROSOFT 212 -#define NDPI_SERVICE_BATTLENET 213 /* matteobracci1@gmail.com */ +#define NDPI_SERVICE_BATTLENET 213 /* Matteo Bracci <matteobracci1@gmail.com> */ /* UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE */ -#define NDPI_LAST_IMPLEMENTED_PROTOCOL NDPI_PROTOCOL_STARCRAFT2 +#define NDPI_LAST_IMPLEMENTED_PROTOCOL NDPI_PROTOCOL_STARCRAFT #define NDPI_MAX_SUPPORTED_PROTOCOLS (NDPI_LAST_IMPLEMENTED_PROTOCOL + 1) #define NDPI_MAX_NUM_CUSTOM_PROTOCOLS (NDPI_NUM_BITS-NDPI_LAST_IMPLEMENTED_PROTOCOL) diff --git a/src/include/ndpi_protocols.h b/src/include/ndpi_protocols.h index 904ae956e..e3449cecd 100644 --- a/src/include/ndpi_protocols.h +++ b/src/include/ndpi_protocols.h @@ -330,5 +330,6 @@ void init_xdmcp_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_in void init_yahoo_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask); void init_zattoo_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask); void init_zmq_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask); +void init_stracraft2_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask); #endif /* __NDPI_PROTOCOLS_INCLUDE_FILE__ */ diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index 08ed60086..7b6b90121 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -804,8 +804,8 @@ typedef struct ndpi_flow_struct { u_int32_t pplive_stage2:2; // 0 - 2 u_int32_t pplive_stage3:2; // 0 - 2 #endif -#ifdef NDPI_PROTOCOL_STARCRAFT2 - u_int32_t starcraft2_udp_stage : 3; // 0-7 +#ifdef NDPI_PROTOCOL_STARCRAFT + u_int32_t starcraft_udp_stage : 3; // 0-7 #endif /* internal structures to save functions calls */ diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 36341dde5..941b5048c 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -121,6 +121,7 @@ libndpi_la_SOURCES = ndpi_content_match.c.inc \ protocols/ssdp.c \ protocols/ssh.c \ protocols/ssl.c \ + protocols/starcraft.c \ protocols/stealthnet.c \ protocols/steam.c \ protocols/stun.c \ diff --git a/src/lib/ndpi_content_match.c.inc b/src/lib/ndpi_content_match.c.inc index 03f133549..dbb317178 100644 --- a/src/lib/ndpi_content_match.c.inc +++ b/src/lib/ndpi_content_match.c.inc @@ -3,9 +3,6 @@ * * Copyright (C) 2011-15 - ntop.org * - * This file is part of nDPI, an open source deep packet inspection - * library based on the OpenDPI and PACE technology by ipoque GmbH - * * nDPI is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -72,10 +69,10 @@ static ndpi_network host_protocol_list[] = { { 0x6CA0A000 /* 108.160.160.0 */, 20, NDPI_PROTOCOL_DROPBOX }, /* - Skype (Microsoft CDN) - 157.56.0.0/14, 157.60.0.0/16, 157.54.0.0/15 - 111.221.64.0 - 111.221.127.255 - 91.190.216.0/21 (AS198015 Skype Communications Sarl) + Skype (Microsoft CDN) + 157.56.0.0/14, 157.60.0.0/16, 157.54.0.0/15 + 111.221.64.0 - 111.221.127.255 + 91.190.216.0/21 (AS198015 Skype Communications Sarl) */ { 0x9D380000 /* 157.56.0.0 */, 14, NDPI_PROTOCOL_SKYPE }, { 0x9D3C0000 /* 157.60.0.0 */, 16, NDPI_PROTOCOL_SKYPE }, @@ -84,6 +81,13 @@ static ndpi_network host_protocol_list[] = { { 0x5BBED800 /* 91.190.216.0 */, 21, NDPI_PROTOCOL_SKYPE }, /* + route: 5.42.160.0/19 + descr: Blizzard Entertainment, Inc + origin: AS57976 + */ + { 0x052AA000 /* 5.42.160.0 */, 19, NDPI_PROTOCOL_STARCRAFT }, + + /* Google 173.194.0.0/16 */ @@ -6643,649 +6647,649 @@ static ndpi_network host_protocol_list[] = { { 0xC6493247, 32, NDPI_PROTOCOL_TOR }, { 0xC64A38BF, 32, NDPI_PROTOCOL_TOR }, { 0xC64A3A10, 32, NDPI_PROTOCOL_TOR }, -{ 0xC64A3ACE, 32, NDPI_PROTOCOL_TOR }, -{ 0xC64A3C1A, 32, NDPI_PROTOCOL_TOR }, -{ 0xC64A3E6B, 32, NDPI_PROTOCOL_TOR }, -{ 0xC654A10C, 32, NDPI_PROTOCOL_TOR }, -{ 0xC654F0E5, 32, NDPI_PROTOCOL_TOR }, -{ 0xC654F96A, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6609B03, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6623103, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6623495, 32, NDPI_PROTOCOL_TOR }, -{ 0xC662358D, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6649014, 32, NDPI_PROTOCOL_TOR }, -{ 0xC664904B, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6649470, 32, NDPI_PROTOCOL_TOR }, -{ 0xC664947B, 32, NDPI_PROTOCOL_TOR }, -{ 0xC664959F, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6649B36, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6649BC2, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6697D25, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6697DB2, 32, NDPI_PROTOCOL_TOR }, -{ 0xC669D0A4, 32, NDPI_PROTOCOL_TOR }, -{ 0xC669DF92, 32, NDPI_PROTOCOL_TOR }, -{ 0xC68F88ED, 32, NDPI_PROTOCOL_TOR }, -{ 0xC693141D, 32, NDPI_PROTOCOL_TOR }, -{ 0xC693174D, 32, NDPI_PROTOCOL_TOR }, -{ 0xC69451A7, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6A7895C, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6A78F95, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6B49609, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6C74845, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6C76BDC, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6C77079, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6C77231, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6C775A4, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6C77A11, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6CD713B, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6D36392, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6D37ABF, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6D37B5C, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6D37CD6, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6D37DF2, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6D37E53, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F464C8, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F46963, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F53294, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F53C28, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F53C93, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F53CC2, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F53E68, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6F53FE4, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6FC9957, 32, NDPI_PROTOCOL_TOR }, -{ 0xC6FC996B, 32, NDPI_PROTOCOL_TOR }, -{ 0xC710BF3A, 32, NDPI_PROTOCOL_TOR }, -{ 0xC71355FC, 32, NDPI_PROTOCOL_TOR }, -{ 0xC713D5B0, 32, NDPI_PROTOCOL_TOR }, -{ 0xC726567A, 32, NDPI_PROTOCOL_TOR }, -{ 0xC73A530A, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7579AFF, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7737387, 32, NDPI_PROTOCOL_TOR }, -{ 0xC773CDF1, 32, NDPI_PROTOCOL_TOR }, -{ 0xC773CDF2, 32, NDPI_PROTOCOL_TOR }, -{ 0xC773CDF3, 32, NDPI_PROTOCOL_TOR }, -{ 0xC773CDF5, 32, NDPI_PROTOCOL_TOR }, -{ 0xC773CDF8, 32, NDPI_PROTOCOL_TOR }, -{ 0xC77FE240, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7A78088, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7A7A1C3, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7A7C679, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7BC649A, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7BCC235, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7C173D1, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7C1FD31, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7C3C116, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7C3F83C, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7C3F890, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7C3F9D4, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7CA151D, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7FEEE2C, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7FEEE34, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7FEEE34, 32, NDPI_PROTOCOL_TOR }, -{ 0xC7FFDF58, 32, NDPI_PROTOCOL_TOR }, -{ 0xC811D20C, 32, NDPI_PROTOCOL_TOR }, -{ 0xC8628B17, 32, NDPI_PROTOCOL_TOR }, -{ 0xC86CEC4B, 32, NDPI_PROTOCOL_TOR }, -{ 0xC8B55A41, 32, NDPI_PROTOCOL_TOR }, -{ 0xC8DFD4D2, 32, NDPI_PROTOCOL_TOR }, -{ 0xC906897F, 32, NDPI_PROTOCOL_TOR }, -{ 0xC91BEB7F, 32, NDPI_PROTOCOL_TOR }, -{ 0xC9AA12B7, 32, NDPI_PROTOCOL_TOR }, -{ 0xC9D46CB8, 32, NDPI_PROTOCOL_TOR }, -{ 0xC9DA72A2, 32, NDPI_PROTOCOL_TOR }, -{ 0xCA07F408, 32, NDPI_PROTOCOL_TOR }, -{ 0xCA3C4220, 32, NDPI_PROTOCOL_TOR }, -{ 0xCA4A2C0F, 32, NDPI_PROTOCOL_TOR }, -{ 0xCA536AB3, 32, NDPI_PROTOCOL_TOR }, -{ 0xCA55E922, 32, NDPI_PROTOCOL_TOR }, -{ 0xCAAB9C54, 32, NDPI_PROTOCOL_TOR }, -{ 0xCAAC1039, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB56CAA7, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB56CD2E, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB6DE90F, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB71AC95, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB71AC98, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB71AC9A, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB7B3001, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB7E7B52, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB8A63DA, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB98C302, 32, NDPI_PROTOCOL_TOR }, -{ 0xCB99CEA6, 32, NDPI_PROTOCOL_TOR }, -{ 0xCBA16711, 32, NDPI_PROTOCOL_TOR }, -{ 0xCBB2850B, 32, NDPI_PROTOCOL_TOR }, -{ 0xCBCEEDC5, 32, NDPI_PROTOCOL_TOR }, -{ 0xCBD9AD92, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC089C8E, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC093747, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC0B3283, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC1025F4, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC11382A, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC11382A, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC1B382D, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC1B382D, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC1B3ACA, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC2D1E7A, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC2D1E7D, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC2DB6E2, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC534638, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC55BF1E, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC59C10A, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC7C5382, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC7C5382, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC7C5386, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC7C5386, 32, NDPI_PROTOCOL_TOR }, -{ 0xCC91512D, 32, NDPI_PROTOCOL_TOR }, -{ 0xCCC21D04, 32, NDPI_PROTOCOL_TOR }, -{ 0xCCF67A48, 32, NDPI_PROTOCOL_TOR }, -{ 0xCDA85485, 32, NDPI_PROTOCOL_TOR }, -{ 0xCDB973EA, 32, NDPI_PROTOCOL_TOR }, -{ 0xCDB97A98, 32, NDPI_PROTOCOL_TOR }, -{ 0xCE2876E5, 32, NDPI_PROTOCOL_TOR }, -{ 0xCE374A00, 32, NDPI_PROTOCOL_TOR }, -{ 0xCE374A01, 32, NDPI_PROTOCOL_TOR }, -{ 0xCE48C698, 32, NDPI_PROTOCOL_TOR }, -{ 0xCEAE7054, 32, NDPI_PROTOCOL_TOR }, -{ 0xCEBE9906, 32, NDPI_PROTOCOL_TOR }, -{ 0xCF268613, 32, NDPI_PROTOCOL_TOR }, -{ 0xCF6CDABA, 32, NDPI_PROTOCOL_TOR }, -{ 0xCF9E0F72, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFACD159, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFBD72D7, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFC046FA, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFC9DFC3, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFC9DFC4, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFC9DFC5, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFE54199, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFF44B8E, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFF4526D, 32, NDPI_PROTOCOL_TOR }, -{ 0xCFF4526D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD041B5BD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD0421E1B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD049CCE4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD04FD17C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD04FD34D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD0509A27, 32, NDPI_PROTOCOL_TOR }, -{ 0xD0526625, 32, NDPI_PROTOCOL_TOR }, -{ 0xD053DF22, 32, NDPI_PROTOCOL_TOR }, -{ 0xD053DFE5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD0549BCD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD0549BF3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD0549BF7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD056FB58, 32, NDPI_PROTOCOL_TOR }, -{ 0xD05B798E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD065161A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD06F2350, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1063507, 32, NDPI_PROTOCOL_TOR }, -{ 0xD106441D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD10685EE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD111BF75, 32, NDPI_PROTOCOL_TOR }, -{ 0xD12C72B2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD133A319, 32, NDPI_PROTOCOL_TOR }, -{ 0xD133BFBE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1709F3C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC25, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC25, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC26, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC26, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC27, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC27, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC28, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC28, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC29, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC29, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC2A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD177BC2A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD17BA242, 32, NDPI_PROTOCOL_TOR }, -{ 0xD17E47E9, 32, NDPI_PROTOCOL_TOR }, -{ 0xD17E4854, 32, NDPI_PROTOCOL_TOR }, -{ 0xD17E6907, 32, NDPI_PROTOCOL_TOR }, -{ 0xD18D23E8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD18D242A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD18D2ECC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD18D328A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD18D34EF, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1942E81, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1942E82, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1942E82, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1945576, 32, NDPI_PROTOCOL_TOR }, -{ 0xD19F8A13, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1A221CF, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1B5E383, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1D01A29, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1D04F05, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1D2D215, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1DE08C4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1DE1EF1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD1FA02FE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD217021E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD23625E2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD2A6194E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD2C33DFC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD2D37ACC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD2FBD989, 32, NDPI_PROTOCOL_TOR }, -{ 0xD31AF36D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD31C8EEF, 32, NDPI_PROTOCOL_TOR }, -{ 0xD31FC4F8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD3CA291F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD407C247, 32, NDPI_PROTOCOL_TOR }, -{ 0xD407DC06, 32, NDPI_PROTOCOL_TOR }, -{ 0xD40A5604, 32, NDPI_PROTOCOL_TOR }, -{ 0xD40CCB27, 32, NDPI_PROTOCOL_TOR }, -{ 0xD41010B8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4106821, 32, NDPI_PROTOCOL_TOR }, -{ 0xD411664D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD41824CD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD41890BC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD421F581, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE209, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE3AC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE3AC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE445, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE459, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE5D1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE5D1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE745, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE784, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE80D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE8F6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FE97E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FEA54, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FEB57, 32, NDPI_PROTOCOL_TOR }, -{ 0xD42FECDB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4305435, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4339C5A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4339C8F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4339C9E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4339C9E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4339F4E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4339F72, 32, NDPI_PROTOCOL_TOR }, -{ 0xD438D698, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4402044, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447EECB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447F805, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447F945, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447F945, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447F981, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447FC6D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447FC74, 32, NDPI_PROTOCOL_TOR }, -{ 0xD447FDE2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD44AFEF3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD44DE210, 32, NDPI_PROTOCOL_TOR }, -{ 0xD44DE2F5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4532F5B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD45394CD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4539A21, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4539A21, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4539E05, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4539E14, 32, NDPI_PROTOCOL_TOR }, -{ 0xD453A298, 32, NDPI_PROTOCOL_TOR }, -{ 0xD453A7AF, 32, NDPI_PROTOCOL_TOR }, -{ 0xD453AAFC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD453B07A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD453B07D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD453BECB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4554F44, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4554F47, 32, NDPI_PROTOCOL_TOR }, -{ 0xD45CDB0F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD467903A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD46A09CE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD46B9591, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4722F34, 32, NDPI_PROTOCOL_TOR }, -{ 0xD472303A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4726D21, 32, NDPI_PROTOCOL_TOR }, -{ 0xD472FA12, 32, NDPI_PROTOCOL_TOR }, -{ 0xD472FE5B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4758F4A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD475B46B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4763E03, 32, NDPI_PROTOCOL_TOR }, -{ 0xD47CB453, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4810454, 32, NDPI_PROTOCOL_TOR }, -{ 0xD48110B6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4811AF6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4812A09, 32, NDPI_PROTOCOL_TOR }, -{ 0xD48132F6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4813431, 32, NDPI_PROTOCOL_TOR }, -{ 0xD495D15B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD49F5B16, 32, NDPI_PROTOCOL_TOR }, -{ 0xD49F70C4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD49F8F53, 32, NDPI_PROTOCOL_TOR }, -{ 0xD49FB1C6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4A4EF79, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4B733DE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4BA59A2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4BBC8AA, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4C04A64, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4C04A65, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4C63318, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4C6C924, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4C6E391, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4E054E3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4E059FD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4E326F7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4E38BC3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4E3F876, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4E81D65, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4FAA0B2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD4FAA0BB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5095DAE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD52C58EA, 32, NDPI_PROTOCOL_TOR }, -{ 0xD52F2397, 32, NDPI_PROTOCOL_TOR }, -{ 0xD52F4B43, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5317328, 32, NDPI_PROTOCOL_TOR }, -{ 0xD53D957D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD53D957E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD540E2E6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5430E91, 32, NDPI_PROTOCOL_TOR }, -{ 0xD54951D2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5497087, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5582A31, 32, NDPI_PROTOCOL_TOR }, -{ 0xD55F1536, 32, NDPI_PROTOCOL_TOR }, -{ 0xD55F153B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD56B4D04, 32, NDPI_PROTOCOL_TOR }, -{ 0xD56C6947, 32, NDPI_PROTOCOL_TOR }, -{ 0xD56C69FD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD56CD7EE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD56FF097, 32, NDPI_PROTOCOL_TOR }, -{ 0xD57086D3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD570C73F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5713D6A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5717790, 32, NDPI_PROTOCOL_TOR }, -{ 0xD571D5BE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5724869, 32, NDPI_PROTOCOL_TOR }, -{ 0xD57293E0, 32, NDPI_PROTOCOL_TOR }, -{ 0xD572966F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD572E864, 32, NDPI_PROTOCOL_TOR }, -{ 0xD57F85A7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD57F921B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD585639C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5856D29, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5856DA5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5857B97, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58845ED, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5884715, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5884B2A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5885261, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5885674, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58857F5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5885A9B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5885CA9, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58A653C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58A66D1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58A6E58, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58A71E8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58D8818, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58D8D93, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58D95E3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58D9EED, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58E2E79, 32, NDPI_PROTOCOL_TOR }, -{ 0xD58F7A02, 32, NDPI_PROTOCOL_TOR }, -{ 0xD59B0490, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A3482F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A348A2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A54610, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A54F22, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A54FF3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A55106, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A5551E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A55546, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5A555F9, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5AFD83B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5B39EF1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5B73821, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5B7388C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5B9E355, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5BA07E8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5BB54BE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5BB6FFE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5BC77C9, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5C489E3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5C5167C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5C52469, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5D0BCCB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5D3FC58, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5DE7461, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5E3FAF5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFC519, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFD329, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFD414, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFD6AF, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFD8DE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFD912, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFDA14, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFDA93, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5EFF9DB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5F05E3A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5F06C19, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5F53D3D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5FBBB37, 32, NDPI_PROTOCOL_TOR }, -{ 0xD5FBC7AE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD80CC652, 32, NDPI_PROTOCOL_TOR }, -{ 0xD80CC653, 32, NDPI_PROTOCOL_TOR }, -{ 0xD80F0122, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8116382, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8116390, 32, NDPI_PROTOCOL_TOR }, -{ 0xD811654F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD81169CB, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8116EE7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD818AEF5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8425592, 32, NDPI_PROTOCOL_TOR }, -{ 0xD873031A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD873063A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD892E107, 32, NDPI_PROTOCOL_TOR }, -{ 0xD89A71F4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8A13759, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8BAC1C9, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8BD9264, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8BD9575, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8BD9666, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8BD9718, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8C3851B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8DA860C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8DAD8C2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8DD24F4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8E6E69C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8E6E6F7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD8F455D3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90833AD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90B39E2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90B7727, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CC7BE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CC7D1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CCB2E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CCC59, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CCC68, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CCC93, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90CD075, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90D4A29, 32, NDPI_PROTOCOL_TOR }, -{ 0xD90DC505, 32, NDPI_PROTOCOL_TOR }, -{ 0xD910B514, 32, NDPI_PROTOCOL_TOR }, -{ 0xD910B614, 32, NDPI_PROTOCOL_TOR }, -{ 0xD91318D8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD91318E9, 32, NDPI_PROTOCOL_TOR }, -{ 0xD917011B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD91A1259, 32, NDPI_PROTOCOL_TOR }, -{ 0xD91BB67D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD92287E1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD92287E7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9251373, 32, NDPI_PROTOCOL_TOR }, -{ 0xD92855C2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD928FEB1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD943154D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD945FE58, 32, NDPI_PROTOCOL_TOR }, -{ 0xD946BD91, 32, NDPI_PROTOCOL_TOR }, -{ 0xD946BF0D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD948141E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD94FB23C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD94FB532, 32, NDPI_PROTOCOL_TOR }, -{ 0xD94FB538, 32, NDPI_PROTOCOL_TOR }, -{ 0xD94FB65F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD94FBE19, 32, NDPI_PROTOCOL_TOR }, -{ 0xD954FBD5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD95597B5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD95EEEF5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD970833A, 32, NDPI_PROTOCOL_TOR }, -{ 0xD97293F5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD972DA12, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9730A85, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9730A86, 32, NDPI_PROTOCOL_TOR }, -{ 0xD97729D5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD97BFEEE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD98090A0, 32, NDPI_PROTOCOL_TOR }, -{ 0xD991C735, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9924B24, 32, NDPI_PROTOCOL_TOR }, -{ 0xD99454B4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9A0122D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9A013EC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9A05C43, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9A07E32, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9A083B0, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9A276FE, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9AACD71, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9ACB392, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9ACBE13, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9ACBE13, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9ACFFE5, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9AD4A5B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9BCEA09, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9BDC5F4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9BF49C3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9BF6813, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9BFF274, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C3AA91, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C504DC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C553A2, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C556AD, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C55B91, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C55B91, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C55BA4, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9C5B52D, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9D075D3, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9D11257, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9D27158, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9D28C5F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9D2A52B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9D39FA1, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9E40B41, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9E46874, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9E76B72, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9E94FC8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9E94FC8, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9EA6B0B, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9F595B7, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9F63320, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9F76904, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9F7DE9C, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9F7E61F, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9F9203E, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9FBD765, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9FD96F6, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9FD9F48, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9FE3DAC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9FE47CC, 32, NDPI_PROTOCOL_TOR }, -{ 0xD9FEB60F, 32, NDPI_PROTOCOL_TOR }, -{ 0xDAA1200E, 32, NDPI_PROTOCOL_TOR }, -{ 0xDAE7EBDB, 32, NDPI_PROTOCOL_TOR }, -{ 0xDAE868DC, 32, NDPI_PROTOCOL_TOR }, -{ 0xDAE868DD, 32, NDPI_PROTOCOL_TOR }, -{ 0xDAFAF536, 32, NDPI_PROTOCOL_TOR }, -{ 0xDB4F067A, 32, NDPI_PROTOCOL_TOR }, -{ 0xDB59C4CA, 32, NDPI_PROTOCOL_TOR }, -{ 0xDB6DCB40, 32, NDPI_PROTOCOL_TOR }, -{ 0xDB75CE2E, 32, NDPI_PROTOCOL_TOR }, -{ 0xDB791014, 32, NDPI_PROTOCOL_TOR }, -{ 0xDBA189F3, 32, NDPI_PROTOCOL_TOR }, -{ 0xDBA4C22E, 32, NDPI_PROTOCOL_TOR }, -{ 0xDBAD0E54, 32, NDPI_PROTOCOL_TOR }, -{ 0xDC39428E, 32, NDPI_PROTOCOL_TOR }, -{ 0xDC87FE3F, 32, NDPI_PROTOCOL_TOR }, -{ 0xDC898752, 32, NDPI_PROTOCOL_TOR }, -{ 0xDC9387F3, 32, NDPI_PROTOCOL_TOR }, -{ 0xDC9DC3F3, 32, NDPI_PROTOCOL_TOR }, -{ 0xDCE97BAC, 32, NDPI_PROTOCOL_TOR }, -{ 0xDCE9AF0E, 32, NDPI_PROTOCOL_TOR }, -{ 0xDCFD1CE1, 32, NDPI_PROTOCOL_TOR }, -{ 0xDCFF85C3, 32, NDPI_PROTOCOL_TOR }, -{ 0xDD7132CB, 32, NDPI_PROTOCOL_TOR }, -{ 0xDD9E95C5, 32, NDPI_PROTOCOL_TOR }, -{ 0xDE047C92, 32, NDPI_PROTOCOL_TOR }, -{ 0xDE0C7C9A, 32, NDPI_PROTOCOL_TOR }, -{ 0xDE7294F8, 32, NDPI_PROTOCOL_TOR }, -{ 0xDEEB761A, 32, NDPI_PROTOCOL_TOR }, -{ 0xDF1273E5, 32, NDPI_PROTOCOL_TOR }, -{ 0xDF85F4CA, 32, NDPI_PROTOCOL_TOR }, -{ 0xDFE57B41, 32, NDPI_PROTOCOL_TOR }, + { 0xC64A3ACE, 32, NDPI_PROTOCOL_TOR }, + { 0xC64A3C1A, 32, NDPI_PROTOCOL_TOR }, + { 0xC64A3E6B, 32, NDPI_PROTOCOL_TOR }, + { 0xC654A10C, 32, NDPI_PROTOCOL_TOR }, + { 0xC654F0E5, 32, NDPI_PROTOCOL_TOR }, + { 0xC654F96A, 32, NDPI_PROTOCOL_TOR }, + { 0xC6609B03, 32, NDPI_PROTOCOL_TOR }, + { 0xC6623103, 32, NDPI_PROTOCOL_TOR }, + { 0xC6623495, 32, NDPI_PROTOCOL_TOR }, + { 0xC662358D, 32, NDPI_PROTOCOL_TOR }, + { 0xC6649014, 32, NDPI_PROTOCOL_TOR }, + { 0xC664904B, 32, NDPI_PROTOCOL_TOR }, + { 0xC6649470, 32, NDPI_PROTOCOL_TOR }, + { 0xC664947B, 32, NDPI_PROTOCOL_TOR }, + { 0xC664959F, 32, NDPI_PROTOCOL_TOR }, + { 0xC6649B36, 32, NDPI_PROTOCOL_TOR }, + { 0xC6649BC2, 32, NDPI_PROTOCOL_TOR }, + { 0xC6697D25, 32, NDPI_PROTOCOL_TOR }, + { 0xC6697DB2, 32, NDPI_PROTOCOL_TOR }, + { 0xC669D0A4, 32, NDPI_PROTOCOL_TOR }, + { 0xC669DF92, 32, NDPI_PROTOCOL_TOR }, + { 0xC68F88ED, 32, NDPI_PROTOCOL_TOR }, + { 0xC693141D, 32, NDPI_PROTOCOL_TOR }, + { 0xC693174D, 32, NDPI_PROTOCOL_TOR }, + { 0xC69451A7, 32, NDPI_PROTOCOL_TOR }, + { 0xC6A7895C, 32, NDPI_PROTOCOL_TOR }, + { 0xC6A78F95, 32, NDPI_PROTOCOL_TOR }, + { 0xC6B49609, 32, NDPI_PROTOCOL_TOR }, + { 0xC6C74845, 32, NDPI_PROTOCOL_TOR }, + { 0xC6C76BDC, 32, NDPI_PROTOCOL_TOR }, + { 0xC6C77079, 32, NDPI_PROTOCOL_TOR }, + { 0xC6C77231, 32, NDPI_PROTOCOL_TOR }, + { 0xC6C775A4, 32, NDPI_PROTOCOL_TOR }, + { 0xC6C77A11, 32, NDPI_PROTOCOL_TOR }, + { 0xC6CD713B, 32, NDPI_PROTOCOL_TOR }, + { 0xC6D36392, 32, NDPI_PROTOCOL_TOR }, + { 0xC6D37ABF, 32, NDPI_PROTOCOL_TOR }, + { 0xC6D37B5C, 32, NDPI_PROTOCOL_TOR }, + { 0xC6D37CD6, 32, NDPI_PROTOCOL_TOR }, + { 0xC6D37DF2, 32, NDPI_PROTOCOL_TOR }, + { 0xC6D37E53, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F464C8, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F46963, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F53294, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F53C28, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F53C93, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F53CC2, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F53E68, 32, NDPI_PROTOCOL_TOR }, + { 0xC6F53FE4, 32, NDPI_PROTOCOL_TOR }, + { 0xC6FC9957, 32, NDPI_PROTOCOL_TOR }, + { 0xC6FC996B, 32, NDPI_PROTOCOL_TOR }, + { 0xC710BF3A, 32, NDPI_PROTOCOL_TOR }, + { 0xC71355FC, 32, NDPI_PROTOCOL_TOR }, + { 0xC713D5B0, 32, NDPI_PROTOCOL_TOR }, + { 0xC726567A, 32, NDPI_PROTOCOL_TOR }, + { 0xC73A530A, 32, NDPI_PROTOCOL_TOR }, + { 0xC7579AFF, 32, NDPI_PROTOCOL_TOR }, + { 0xC7737387, 32, NDPI_PROTOCOL_TOR }, + { 0xC773CDF1, 32, NDPI_PROTOCOL_TOR }, + { 0xC773CDF2, 32, NDPI_PROTOCOL_TOR }, + { 0xC773CDF3, 32, NDPI_PROTOCOL_TOR }, + { 0xC773CDF5, 32, NDPI_PROTOCOL_TOR }, + { 0xC773CDF8, 32, NDPI_PROTOCOL_TOR }, + { 0xC77FE240, 32, NDPI_PROTOCOL_TOR }, + { 0xC7A78088, 32, NDPI_PROTOCOL_TOR }, + { 0xC7A7A1C3, 32, NDPI_PROTOCOL_TOR }, + { 0xC7A7C679, 32, NDPI_PROTOCOL_TOR }, + { 0xC7BC649A, 32, NDPI_PROTOCOL_TOR }, + { 0xC7BCC235, 32, NDPI_PROTOCOL_TOR }, + { 0xC7C173D1, 32, NDPI_PROTOCOL_TOR }, + { 0xC7C1FD31, 32, NDPI_PROTOCOL_TOR }, + { 0xC7C3C116, 32, NDPI_PROTOCOL_TOR }, + { 0xC7C3F83C, 32, NDPI_PROTOCOL_TOR }, + { 0xC7C3F890, 32, NDPI_PROTOCOL_TOR }, + { 0xC7C3F9D4, 32, NDPI_PROTOCOL_TOR }, + { 0xC7CA151D, 32, NDPI_PROTOCOL_TOR }, + { 0xC7FEEE2C, 32, NDPI_PROTOCOL_TOR }, + { 0xC7FEEE34, 32, NDPI_PROTOCOL_TOR }, + { 0xC7FEEE34, 32, NDPI_PROTOCOL_TOR }, + { 0xC7FFDF58, 32, NDPI_PROTOCOL_TOR }, + { 0xC811D20C, 32, NDPI_PROTOCOL_TOR }, + { 0xC8628B17, 32, NDPI_PROTOCOL_TOR }, + { 0xC86CEC4B, 32, NDPI_PROTOCOL_TOR }, + { 0xC8B55A41, 32, NDPI_PROTOCOL_TOR }, + { 0xC8DFD4D2, 32, NDPI_PROTOCOL_TOR }, + { 0xC906897F, 32, NDPI_PROTOCOL_TOR }, + { 0xC91BEB7F, 32, NDPI_PROTOCOL_TOR }, + { 0xC9AA12B7, 32, NDPI_PROTOCOL_TOR }, + { 0xC9D46CB8, 32, NDPI_PROTOCOL_TOR }, + { 0xC9DA72A2, 32, NDPI_PROTOCOL_TOR }, + { 0xCA07F408, 32, NDPI_PROTOCOL_TOR }, + { 0xCA3C4220, 32, NDPI_PROTOCOL_TOR }, + { 0xCA4A2C0F, 32, NDPI_PROTOCOL_TOR }, + { 0xCA536AB3, 32, NDPI_PROTOCOL_TOR }, + { 0xCA55E922, 32, NDPI_PROTOCOL_TOR }, + { 0xCAAB9C54, 32, NDPI_PROTOCOL_TOR }, + { 0xCAAC1039, 32, NDPI_PROTOCOL_TOR }, + { 0xCB56CAA7, 32, NDPI_PROTOCOL_TOR }, + { 0xCB56CD2E, 32, NDPI_PROTOCOL_TOR }, + { 0xCB6DE90F, 32, NDPI_PROTOCOL_TOR }, + { 0xCB71AC95, 32, NDPI_PROTOCOL_TOR }, + { 0xCB71AC98, 32, NDPI_PROTOCOL_TOR }, + { 0xCB71AC9A, 32, NDPI_PROTOCOL_TOR }, + { 0xCB7B3001, 32, NDPI_PROTOCOL_TOR }, + { 0xCB7E7B52, 32, NDPI_PROTOCOL_TOR }, + { 0xCB8A63DA, 32, NDPI_PROTOCOL_TOR }, + { 0xCB98C302, 32, NDPI_PROTOCOL_TOR }, + { 0xCB99CEA6, 32, NDPI_PROTOCOL_TOR }, + { 0xCBA16711, 32, NDPI_PROTOCOL_TOR }, + { 0xCBB2850B, 32, NDPI_PROTOCOL_TOR }, + { 0xCBCEEDC5, 32, NDPI_PROTOCOL_TOR }, + { 0xCBD9AD92, 32, NDPI_PROTOCOL_TOR }, + { 0xCC089C8E, 32, NDPI_PROTOCOL_TOR }, + { 0xCC093747, 32, NDPI_PROTOCOL_TOR }, + { 0xCC0B3283, 32, NDPI_PROTOCOL_TOR }, + { 0xCC1025F4, 32, NDPI_PROTOCOL_TOR }, + { 0xCC11382A, 32, NDPI_PROTOCOL_TOR }, + { 0xCC11382A, 32, NDPI_PROTOCOL_TOR }, + { 0xCC1B382D, 32, NDPI_PROTOCOL_TOR }, + { 0xCC1B382D, 32, NDPI_PROTOCOL_TOR }, + { 0xCC1B3ACA, 32, NDPI_PROTOCOL_TOR }, + { 0xCC2D1E7A, 32, NDPI_PROTOCOL_TOR }, + { 0xCC2D1E7D, 32, NDPI_PROTOCOL_TOR }, + { 0xCC2DB6E2, 32, NDPI_PROTOCOL_TOR }, + { 0xCC534638, 32, NDPI_PROTOCOL_TOR }, + { 0xCC55BF1E, 32, NDPI_PROTOCOL_TOR }, + { 0xCC59C10A, 32, NDPI_PROTOCOL_TOR }, + { 0xCC7C5382, 32, NDPI_PROTOCOL_TOR }, + { 0xCC7C5382, 32, NDPI_PROTOCOL_TOR }, + { 0xCC7C5386, 32, NDPI_PROTOCOL_TOR }, + { 0xCC7C5386, 32, NDPI_PROTOCOL_TOR }, + { 0xCC91512D, 32, NDPI_PROTOCOL_TOR }, + { 0xCCC21D04, 32, NDPI_PROTOCOL_TOR }, + { 0xCCF67A48, 32, NDPI_PROTOCOL_TOR }, + { 0xCDA85485, 32, NDPI_PROTOCOL_TOR }, + { 0xCDB973EA, 32, NDPI_PROTOCOL_TOR }, + { 0xCDB97A98, 32, NDPI_PROTOCOL_TOR }, + { 0xCE2876E5, 32, NDPI_PROTOCOL_TOR }, + { 0xCE374A00, 32, NDPI_PROTOCOL_TOR }, + { 0xCE374A01, 32, NDPI_PROTOCOL_TOR }, + { 0xCE48C698, 32, NDPI_PROTOCOL_TOR }, + { 0xCEAE7054, 32, NDPI_PROTOCOL_TOR }, + { 0xCEBE9906, 32, NDPI_PROTOCOL_TOR }, + { 0xCF268613, 32, NDPI_PROTOCOL_TOR }, + { 0xCF6CDABA, 32, NDPI_PROTOCOL_TOR }, + { 0xCF9E0F72, 32, NDPI_PROTOCOL_TOR }, + { 0xCFACD159, 32, NDPI_PROTOCOL_TOR }, + { 0xCFBD72D7, 32, NDPI_PROTOCOL_TOR }, + { 0xCFC046FA, 32, NDPI_PROTOCOL_TOR }, + { 0xCFC9DFC3, 32, NDPI_PROTOCOL_TOR }, + { 0xCFC9DFC4, 32, NDPI_PROTOCOL_TOR }, + { 0xCFC9DFC5, 32, NDPI_PROTOCOL_TOR }, + { 0xCFE54199, 32, NDPI_PROTOCOL_TOR }, + { 0xCFF44B8E, 32, NDPI_PROTOCOL_TOR }, + { 0xCFF4526D, 32, NDPI_PROTOCOL_TOR }, + { 0xCFF4526D, 32, NDPI_PROTOCOL_TOR }, + { 0xD041B5BD, 32, NDPI_PROTOCOL_TOR }, + { 0xD0421E1B, 32, NDPI_PROTOCOL_TOR }, + { 0xD049CCE4, 32, NDPI_PROTOCOL_TOR }, + { 0xD04FD17C, 32, NDPI_PROTOCOL_TOR }, + { 0xD04FD34D, 32, NDPI_PROTOCOL_TOR }, + { 0xD0509A27, 32, NDPI_PROTOCOL_TOR }, + { 0xD0526625, 32, NDPI_PROTOCOL_TOR }, + { 0xD053DF22, 32, NDPI_PROTOCOL_TOR }, + { 0xD053DFE5, 32, NDPI_PROTOCOL_TOR }, + { 0xD0549BCD, 32, NDPI_PROTOCOL_TOR }, + { 0xD0549BF3, 32, NDPI_PROTOCOL_TOR }, + { 0xD0549BF7, 32, NDPI_PROTOCOL_TOR }, + { 0xD056FB58, 32, NDPI_PROTOCOL_TOR }, + { 0xD05B798E, 32, NDPI_PROTOCOL_TOR }, + { 0xD065161A, 32, NDPI_PROTOCOL_TOR }, + { 0xD06F2350, 32, NDPI_PROTOCOL_TOR }, + { 0xD1063507, 32, NDPI_PROTOCOL_TOR }, + { 0xD106441D, 32, NDPI_PROTOCOL_TOR }, + { 0xD10685EE, 32, NDPI_PROTOCOL_TOR }, + { 0xD111BF75, 32, NDPI_PROTOCOL_TOR }, + { 0xD12C72B2, 32, NDPI_PROTOCOL_TOR }, + { 0xD133A319, 32, NDPI_PROTOCOL_TOR }, + { 0xD133BFBE, 32, NDPI_PROTOCOL_TOR }, + { 0xD1709F3C, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC25, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC25, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC26, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC26, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC27, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC27, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC28, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC28, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC29, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC29, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC2A, 32, NDPI_PROTOCOL_TOR }, + { 0xD177BC2A, 32, NDPI_PROTOCOL_TOR }, + { 0xD17BA242, 32, NDPI_PROTOCOL_TOR }, + { 0xD17E47E9, 32, NDPI_PROTOCOL_TOR }, + { 0xD17E4854, 32, NDPI_PROTOCOL_TOR }, + { 0xD17E6907, 32, NDPI_PROTOCOL_TOR }, + { 0xD18D23E8, 32, NDPI_PROTOCOL_TOR }, + { 0xD18D242A, 32, NDPI_PROTOCOL_TOR }, + { 0xD18D2ECC, 32, NDPI_PROTOCOL_TOR }, + { 0xD18D328A, 32, NDPI_PROTOCOL_TOR }, + { 0xD18D34EF, 32, NDPI_PROTOCOL_TOR }, + { 0xD1942E81, 32, NDPI_PROTOCOL_TOR }, + { 0xD1942E82, 32, NDPI_PROTOCOL_TOR }, + { 0xD1942E82, 32, NDPI_PROTOCOL_TOR }, + { 0xD1945576, 32, NDPI_PROTOCOL_TOR }, + { 0xD19F8A13, 32, NDPI_PROTOCOL_TOR }, + { 0xD1A221CF, 32, NDPI_PROTOCOL_TOR }, + { 0xD1B5E383, 32, NDPI_PROTOCOL_TOR }, + { 0xD1D01A29, 32, NDPI_PROTOCOL_TOR }, + { 0xD1D04F05, 32, NDPI_PROTOCOL_TOR }, + { 0xD1D2D215, 32, NDPI_PROTOCOL_TOR }, + { 0xD1DE08C4, 32, NDPI_PROTOCOL_TOR }, + { 0xD1DE1EF1, 32, NDPI_PROTOCOL_TOR }, + { 0xD1FA02FE, 32, NDPI_PROTOCOL_TOR }, + { 0xD217021E, 32, NDPI_PROTOCOL_TOR }, + { 0xD23625E2, 32, NDPI_PROTOCOL_TOR }, + { 0xD2A6194E, 32, NDPI_PROTOCOL_TOR }, + { 0xD2C33DFC, 32, NDPI_PROTOCOL_TOR }, + { 0xD2D37ACC, 32, NDPI_PROTOCOL_TOR }, + { 0xD2FBD989, 32, NDPI_PROTOCOL_TOR }, + { 0xD31AF36D, 32, NDPI_PROTOCOL_TOR }, + { 0xD31C8EEF, 32, NDPI_PROTOCOL_TOR }, + { 0xD31FC4F8, 32, NDPI_PROTOCOL_TOR }, + { 0xD3CA291F, 32, NDPI_PROTOCOL_TOR }, + { 0xD407C247, 32, NDPI_PROTOCOL_TOR }, + { 0xD407DC06, 32, NDPI_PROTOCOL_TOR }, + { 0xD40A5604, 32, NDPI_PROTOCOL_TOR }, + { 0xD40CCB27, 32, NDPI_PROTOCOL_TOR }, + { 0xD41010B8, 32, NDPI_PROTOCOL_TOR }, + { 0xD4106821, 32, NDPI_PROTOCOL_TOR }, + { 0xD411664D, 32, NDPI_PROTOCOL_TOR }, + { 0xD41824CD, 32, NDPI_PROTOCOL_TOR }, + { 0xD41890BC, 32, NDPI_PROTOCOL_TOR }, + { 0xD421F581, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE209, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE3AC, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE3AC, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE445, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE459, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE5D1, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE5D1, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE745, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE784, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE80D, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE8F6, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FE97E, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FEA54, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FEB57, 32, NDPI_PROTOCOL_TOR }, + { 0xD42FECDB, 32, NDPI_PROTOCOL_TOR }, + { 0xD4305435, 32, NDPI_PROTOCOL_TOR }, + { 0xD4339C5A, 32, NDPI_PROTOCOL_TOR }, + { 0xD4339C8F, 32, NDPI_PROTOCOL_TOR }, + { 0xD4339C9E, 32, NDPI_PROTOCOL_TOR }, + { 0xD4339C9E, 32, NDPI_PROTOCOL_TOR }, + { 0xD4339F4E, 32, NDPI_PROTOCOL_TOR }, + { 0xD4339F72, 32, NDPI_PROTOCOL_TOR }, + { 0xD438D698, 32, NDPI_PROTOCOL_TOR }, + { 0xD4402044, 32, NDPI_PROTOCOL_TOR }, + { 0xD447EECB, 32, NDPI_PROTOCOL_TOR }, + { 0xD447F805, 32, NDPI_PROTOCOL_TOR }, + { 0xD447F945, 32, NDPI_PROTOCOL_TOR }, + { 0xD447F945, 32, NDPI_PROTOCOL_TOR }, + { 0xD447F981, 32, NDPI_PROTOCOL_TOR }, + { 0xD447FC6D, 32, NDPI_PROTOCOL_TOR }, + { 0xD447FC74, 32, NDPI_PROTOCOL_TOR }, + { 0xD447FDE2, 32, NDPI_PROTOCOL_TOR }, + { 0xD44AFEF3, 32, NDPI_PROTOCOL_TOR }, + { 0xD44DE210, 32, NDPI_PROTOCOL_TOR }, + { 0xD44DE2F5, 32, NDPI_PROTOCOL_TOR }, + { 0xD4532F5B, 32, NDPI_PROTOCOL_TOR }, + { 0xD45394CD, 32, NDPI_PROTOCOL_TOR }, + { 0xD4539A21, 32, NDPI_PROTOCOL_TOR }, + { 0xD4539A21, 32, NDPI_PROTOCOL_TOR }, + { 0xD4539E05, 32, NDPI_PROTOCOL_TOR }, + { 0xD4539E14, 32, NDPI_PROTOCOL_TOR }, + { 0xD453A298, 32, NDPI_PROTOCOL_TOR }, + { 0xD453A7AF, 32, NDPI_PROTOCOL_TOR }, + { 0xD453AAFC, 32, NDPI_PROTOCOL_TOR }, + { 0xD453B07A, 32, NDPI_PROTOCOL_TOR }, + { 0xD453B07D, 32, NDPI_PROTOCOL_TOR }, + { 0xD453BECB, 32, NDPI_PROTOCOL_TOR }, + { 0xD4554F44, 32, NDPI_PROTOCOL_TOR }, + { 0xD4554F47, 32, NDPI_PROTOCOL_TOR }, + { 0xD45CDB0F, 32, NDPI_PROTOCOL_TOR }, + { 0xD467903A, 32, NDPI_PROTOCOL_TOR }, + { 0xD46A09CE, 32, NDPI_PROTOCOL_TOR }, + { 0xD46B9591, 32, NDPI_PROTOCOL_TOR }, + { 0xD4722F34, 32, NDPI_PROTOCOL_TOR }, + { 0xD472303A, 32, NDPI_PROTOCOL_TOR }, + { 0xD4726D21, 32, NDPI_PROTOCOL_TOR }, + { 0xD472FA12, 32, NDPI_PROTOCOL_TOR }, + { 0xD472FE5B, 32, NDPI_PROTOCOL_TOR }, + { 0xD4758F4A, 32, NDPI_PROTOCOL_TOR }, + { 0xD475B46B, 32, NDPI_PROTOCOL_TOR }, + { 0xD4763E03, 32, NDPI_PROTOCOL_TOR }, + { 0xD47CB453, 32, NDPI_PROTOCOL_TOR }, + { 0xD4810454, 32, NDPI_PROTOCOL_TOR }, + { 0xD48110B6, 32, NDPI_PROTOCOL_TOR }, + { 0xD4811AF6, 32, NDPI_PROTOCOL_TOR }, + { 0xD4812A09, 32, NDPI_PROTOCOL_TOR }, + { 0xD48132F6, 32, NDPI_PROTOCOL_TOR }, + { 0xD4813431, 32, NDPI_PROTOCOL_TOR }, + { 0xD495D15B, 32, NDPI_PROTOCOL_TOR }, + { 0xD49F5B16, 32, NDPI_PROTOCOL_TOR }, + { 0xD49F70C4, 32, NDPI_PROTOCOL_TOR }, + { 0xD49F8F53, 32, NDPI_PROTOCOL_TOR }, + { 0xD49FB1C6, 32, NDPI_PROTOCOL_TOR }, + { 0xD4A4EF79, 32, NDPI_PROTOCOL_TOR }, + { 0xD4B733DE, 32, NDPI_PROTOCOL_TOR }, + { 0xD4BA59A2, 32, NDPI_PROTOCOL_TOR }, + { 0xD4BBC8AA, 32, NDPI_PROTOCOL_TOR }, + { 0xD4C04A64, 32, NDPI_PROTOCOL_TOR }, + { 0xD4C04A65, 32, NDPI_PROTOCOL_TOR }, + { 0xD4C63318, 32, NDPI_PROTOCOL_TOR }, + { 0xD4C6C924, 32, NDPI_PROTOCOL_TOR }, + { 0xD4C6E391, 32, NDPI_PROTOCOL_TOR }, + { 0xD4E054E3, 32, NDPI_PROTOCOL_TOR }, + { 0xD4E059FD, 32, NDPI_PROTOCOL_TOR }, + { 0xD4E326F7, 32, NDPI_PROTOCOL_TOR }, + { 0xD4E38BC3, 32, NDPI_PROTOCOL_TOR }, + { 0xD4E3F876, 32, NDPI_PROTOCOL_TOR }, + { 0xD4E81D65, 32, NDPI_PROTOCOL_TOR }, + { 0xD4FAA0B2, 32, NDPI_PROTOCOL_TOR }, + { 0xD4FAA0BB, 32, NDPI_PROTOCOL_TOR }, + { 0xD5095DAE, 32, NDPI_PROTOCOL_TOR }, + { 0xD52C58EA, 32, NDPI_PROTOCOL_TOR }, + { 0xD52F2397, 32, NDPI_PROTOCOL_TOR }, + { 0xD52F4B43, 32, NDPI_PROTOCOL_TOR }, + { 0xD5317328, 32, NDPI_PROTOCOL_TOR }, + { 0xD53D957D, 32, NDPI_PROTOCOL_TOR }, + { 0xD53D957E, 32, NDPI_PROTOCOL_TOR }, + { 0xD540E2E6, 32, NDPI_PROTOCOL_TOR }, + { 0xD5430E91, 32, NDPI_PROTOCOL_TOR }, + { 0xD54951D2, 32, NDPI_PROTOCOL_TOR }, + { 0xD5497087, 32, NDPI_PROTOCOL_TOR }, + { 0xD5582A31, 32, NDPI_PROTOCOL_TOR }, + { 0xD55F1536, 32, NDPI_PROTOCOL_TOR }, + { 0xD55F153B, 32, NDPI_PROTOCOL_TOR }, + { 0xD56B4D04, 32, NDPI_PROTOCOL_TOR }, + { 0xD56C6947, 32, NDPI_PROTOCOL_TOR }, + { 0xD56C69FD, 32, NDPI_PROTOCOL_TOR }, + { 0xD56CD7EE, 32, NDPI_PROTOCOL_TOR }, + { 0xD56FF097, 32, NDPI_PROTOCOL_TOR }, + { 0xD57086D3, 32, NDPI_PROTOCOL_TOR }, + { 0xD570C73F, 32, NDPI_PROTOCOL_TOR }, + { 0xD5713D6A, 32, NDPI_PROTOCOL_TOR }, + { 0xD5717790, 32, NDPI_PROTOCOL_TOR }, + { 0xD571D5BE, 32, NDPI_PROTOCOL_TOR }, + { 0xD5724869, 32, NDPI_PROTOCOL_TOR }, + { 0xD57293E0, 32, NDPI_PROTOCOL_TOR }, + { 0xD572966F, 32, NDPI_PROTOCOL_TOR }, + { 0xD572E864, 32, NDPI_PROTOCOL_TOR }, + { 0xD57F85A7, 32, NDPI_PROTOCOL_TOR }, + { 0xD57F921B, 32, NDPI_PROTOCOL_TOR }, + { 0xD585639C, 32, NDPI_PROTOCOL_TOR }, + { 0xD5856D29, 32, NDPI_PROTOCOL_TOR }, + { 0xD5856DA5, 32, NDPI_PROTOCOL_TOR }, + { 0xD5857B97, 32, NDPI_PROTOCOL_TOR }, + { 0xD58845ED, 32, NDPI_PROTOCOL_TOR }, + { 0xD5884715, 32, NDPI_PROTOCOL_TOR }, + { 0xD5884B2A, 32, NDPI_PROTOCOL_TOR }, + { 0xD5885261, 32, NDPI_PROTOCOL_TOR }, + { 0xD5885674, 32, NDPI_PROTOCOL_TOR }, + { 0xD58857F5, 32, NDPI_PROTOCOL_TOR }, + { 0xD5885A9B, 32, NDPI_PROTOCOL_TOR }, + { 0xD5885CA9, 32, NDPI_PROTOCOL_TOR }, + { 0xD58A653C, 32, NDPI_PROTOCOL_TOR }, + { 0xD58A66D1, 32, NDPI_PROTOCOL_TOR }, + { 0xD58A6E58, 32, NDPI_PROTOCOL_TOR }, + { 0xD58A71E8, 32, NDPI_PROTOCOL_TOR }, + { 0xD58D8818, 32, NDPI_PROTOCOL_TOR }, + { 0xD58D8D93, 32, NDPI_PROTOCOL_TOR }, + { 0xD58D95E3, 32, NDPI_PROTOCOL_TOR }, + { 0xD58D9EED, 32, NDPI_PROTOCOL_TOR }, + { 0xD58E2E79, 32, NDPI_PROTOCOL_TOR }, + { 0xD58F7A02, 32, NDPI_PROTOCOL_TOR }, + { 0xD59B0490, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A3482F, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A348A2, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A54610, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A54F22, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A54FF3, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A55106, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A5551E, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A55546, 32, NDPI_PROTOCOL_TOR }, + { 0xD5A555F9, 32, NDPI_PROTOCOL_TOR }, + { 0xD5AFD83B, 32, NDPI_PROTOCOL_TOR }, + { 0xD5B39EF1, 32, NDPI_PROTOCOL_TOR }, + { 0xD5B73821, 32, NDPI_PROTOCOL_TOR }, + { 0xD5B7388C, 32, NDPI_PROTOCOL_TOR }, + { 0xD5B9E355, 32, NDPI_PROTOCOL_TOR }, + { 0xD5BA07E8, 32, NDPI_PROTOCOL_TOR }, + { 0xD5BB54BE, 32, NDPI_PROTOCOL_TOR }, + { 0xD5BB6FFE, 32, NDPI_PROTOCOL_TOR }, + { 0xD5BC77C9, 32, NDPI_PROTOCOL_TOR }, + { 0xD5C489E3, 32, NDPI_PROTOCOL_TOR }, + { 0xD5C5167C, 32, NDPI_PROTOCOL_TOR }, + { 0xD5C52469, 32, NDPI_PROTOCOL_TOR }, + { 0xD5D0BCCB, 32, NDPI_PROTOCOL_TOR }, + { 0xD5D3FC58, 32, NDPI_PROTOCOL_TOR }, + { 0xD5DE7461, 32, NDPI_PROTOCOL_TOR }, + { 0xD5E3FAF5, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFC519, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFD329, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFD414, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFD6AF, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFD8DE, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFD912, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFDA14, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFDA93, 32, NDPI_PROTOCOL_TOR }, + { 0xD5EFF9DB, 32, NDPI_PROTOCOL_TOR }, + { 0xD5F05E3A, 32, NDPI_PROTOCOL_TOR }, + { 0xD5F06C19, 32, NDPI_PROTOCOL_TOR }, + { 0xD5F53D3D, 32, NDPI_PROTOCOL_TOR }, + { 0xD5FBBB37, 32, NDPI_PROTOCOL_TOR }, + { 0xD5FBC7AE, 32, NDPI_PROTOCOL_TOR }, + { 0xD80CC652, 32, NDPI_PROTOCOL_TOR }, + { 0xD80CC653, 32, NDPI_PROTOCOL_TOR }, + { 0xD80F0122, 32, NDPI_PROTOCOL_TOR }, + { 0xD8116382, 32, NDPI_PROTOCOL_TOR }, + { 0xD8116390, 32, NDPI_PROTOCOL_TOR }, + { 0xD811654F, 32, NDPI_PROTOCOL_TOR }, + { 0xD81169CB, 32, NDPI_PROTOCOL_TOR }, + { 0xD8116EE7, 32, NDPI_PROTOCOL_TOR }, + { 0xD818AEF5, 32, NDPI_PROTOCOL_TOR }, + { 0xD8425592, 32, NDPI_PROTOCOL_TOR }, + { 0xD873031A, 32, NDPI_PROTOCOL_TOR }, + { 0xD873063A, 32, NDPI_PROTOCOL_TOR }, + { 0xD892E107, 32, NDPI_PROTOCOL_TOR }, + { 0xD89A71F4, 32, NDPI_PROTOCOL_TOR }, + { 0xD8A13759, 32, NDPI_PROTOCOL_TOR }, + { 0xD8BAC1C9, 32, NDPI_PROTOCOL_TOR }, + { 0xD8BD9264, 32, NDPI_PROTOCOL_TOR }, + { 0xD8BD9575, 32, NDPI_PROTOCOL_TOR }, + { 0xD8BD9666, 32, NDPI_PROTOCOL_TOR }, + { 0xD8BD9718, 32, NDPI_PROTOCOL_TOR }, + { 0xD8C3851B, 32, NDPI_PROTOCOL_TOR }, + { 0xD8DA860C, 32, NDPI_PROTOCOL_TOR }, + { 0xD8DAD8C2, 32, NDPI_PROTOCOL_TOR }, + { 0xD8DD24F4, 32, NDPI_PROTOCOL_TOR }, + { 0xD8E6E69C, 32, NDPI_PROTOCOL_TOR }, + { 0xD8E6E6F7, 32, NDPI_PROTOCOL_TOR }, + { 0xD8F455D3, 32, NDPI_PROTOCOL_TOR }, + { 0xD90833AD, 32, NDPI_PROTOCOL_TOR }, + { 0xD90B39E2, 32, NDPI_PROTOCOL_TOR }, + { 0xD90B7727, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CC7BE, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CC7D1, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CCB2E, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CCC59, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CCC68, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CCC93, 32, NDPI_PROTOCOL_TOR }, + { 0xD90CD075, 32, NDPI_PROTOCOL_TOR }, + { 0xD90D4A29, 32, NDPI_PROTOCOL_TOR }, + { 0xD90DC505, 32, NDPI_PROTOCOL_TOR }, + { 0xD910B514, 32, NDPI_PROTOCOL_TOR }, + { 0xD910B614, 32, NDPI_PROTOCOL_TOR }, + { 0xD91318D8, 32, NDPI_PROTOCOL_TOR }, + { 0xD91318E9, 32, NDPI_PROTOCOL_TOR }, + { 0xD917011B, 32, NDPI_PROTOCOL_TOR }, + { 0xD91A1259, 32, NDPI_PROTOCOL_TOR }, + { 0xD91BB67D, 32, NDPI_PROTOCOL_TOR }, + { 0xD92287E1, 32, NDPI_PROTOCOL_TOR }, + { 0xD92287E7, 32, NDPI_PROTOCOL_TOR }, + { 0xD9251373, 32, NDPI_PROTOCOL_TOR }, + { 0xD92855C2, 32, NDPI_PROTOCOL_TOR }, + { 0xD928FEB1, 32, NDPI_PROTOCOL_TOR }, + { 0xD943154D, 32, NDPI_PROTOCOL_TOR }, + { 0xD945FE58, 32, NDPI_PROTOCOL_TOR }, + { 0xD946BD91, 32, NDPI_PROTOCOL_TOR }, + { 0xD946BF0D, 32, NDPI_PROTOCOL_TOR }, + { 0xD948141E, 32, NDPI_PROTOCOL_TOR }, + { 0xD94FB23C, 32, NDPI_PROTOCOL_TOR }, + { 0xD94FB532, 32, NDPI_PROTOCOL_TOR }, + { 0xD94FB538, 32, NDPI_PROTOCOL_TOR }, + { 0xD94FB65F, 32, NDPI_PROTOCOL_TOR }, + { 0xD94FBE19, 32, NDPI_PROTOCOL_TOR }, + { 0xD954FBD5, 32, NDPI_PROTOCOL_TOR }, + { 0xD95597B5, 32, NDPI_PROTOCOL_TOR }, + { 0xD95EEEF5, 32, NDPI_PROTOCOL_TOR }, + { 0xD970833A, 32, NDPI_PROTOCOL_TOR }, + { 0xD97293F5, 32, NDPI_PROTOCOL_TOR }, + { 0xD972DA12, 32, NDPI_PROTOCOL_TOR }, + { 0xD9730A85, 32, NDPI_PROTOCOL_TOR }, + { 0xD9730A86, 32, NDPI_PROTOCOL_TOR }, + { 0xD97729D5, 32, NDPI_PROTOCOL_TOR }, + { 0xD97BFEEE, 32, NDPI_PROTOCOL_TOR }, + { 0xD98090A0, 32, NDPI_PROTOCOL_TOR }, + { 0xD991C735, 32, NDPI_PROTOCOL_TOR }, + { 0xD9924B24, 32, NDPI_PROTOCOL_TOR }, + { 0xD99454B4, 32, NDPI_PROTOCOL_TOR }, + { 0xD9A0122D, 32, NDPI_PROTOCOL_TOR }, + { 0xD9A013EC, 32, NDPI_PROTOCOL_TOR }, + { 0xD9A05C43, 32, NDPI_PROTOCOL_TOR }, + { 0xD9A07E32, 32, NDPI_PROTOCOL_TOR }, + { 0xD9A083B0, 32, NDPI_PROTOCOL_TOR }, + { 0xD9A276FE, 32, NDPI_PROTOCOL_TOR }, + { 0xD9AACD71, 32, NDPI_PROTOCOL_TOR }, + { 0xD9ACB392, 32, NDPI_PROTOCOL_TOR }, + { 0xD9ACBE13, 32, NDPI_PROTOCOL_TOR }, + { 0xD9ACBE13, 32, NDPI_PROTOCOL_TOR }, + { 0xD9ACFFE5, 32, NDPI_PROTOCOL_TOR }, + { 0xD9AD4A5B, 32, NDPI_PROTOCOL_TOR }, + { 0xD9BCEA09, 32, NDPI_PROTOCOL_TOR }, + { 0xD9BDC5F4, 32, NDPI_PROTOCOL_TOR }, + { 0xD9BF49C3, 32, NDPI_PROTOCOL_TOR }, + { 0xD9BF6813, 32, NDPI_PROTOCOL_TOR }, + { 0xD9BFF274, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C3AA91, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C504DC, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C553A2, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C556AD, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C55B91, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C55B91, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C55BA4, 32, NDPI_PROTOCOL_TOR }, + { 0xD9C5B52D, 32, NDPI_PROTOCOL_TOR }, + { 0xD9D075D3, 32, NDPI_PROTOCOL_TOR }, + { 0xD9D11257, 32, NDPI_PROTOCOL_TOR }, + { 0xD9D27158, 32, NDPI_PROTOCOL_TOR }, + { 0xD9D28C5F, 32, NDPI_PROTOCOL_TOR }, + { 0xD9D2A52B, 32, NDPI_PROTOCOL_TOR }, + { 0xD9D39FA1, 32, NDPI_PROTOCOL_TOR }, + { 0xD9E40B41, 32, NDPI_PROTOCOL_TOR }, + { 0xD9E46874, 32, NDPI_PROTOCOL_TOR }, + { 0xD9E76B72, 32, NDPI_PROTOCOL_TOR }, + { 0xD9E94FC8, 32, NDPI_PROTOCOL_TOR }, + { 0xD9E94FC8, 32, NDPI_PROTOCOL_TOR }, + { 0xD9EA6B0B, 32, NDPI_PROTOCOL_TOR }, + { 0xD9F595B7, 32, NDPI_PROTOCOL_TOR }, + { 0xD9F63320, 32, NDPI_PROTOCOL_TOR }, + { 0xD9F76904, 32, NDPI_PROTOCOL_TOR }, + { 0xD9F7DE9C, 32, NDPI_PROTOCOL_TOR }, + { 0xD9F7E61F, 32, NDPI_PROTOCOL_TOR }, + { 0xD9F9203E, 32, NDPI_PROTOCOL_TOR }, + { 0xD9FBD765, 32, NDPI_PROTOCOL_TOR }, + { 0xD9FD96F6, 32, NDPI_PROTOCOL_TOR }, + { 0xD9FD9F48, 32, NDPI_PROTOCOL_TOR }, + { 0xD9FE3DAC, 32, NDPI_PROTOCOL_TOR }, + { 0xD9FE47CC, 32, NDPI_PROTOCOL_TOR }, + { 0xD9FEB60F, 32, NDPI_PROTOCOL_TOR }, + { 0xDAA1200E, 32, NDPI_PROTOCOL_TOR }, + { 0xDAE7EBDB, 32, NDPI_PROTOCOL_TOR }, + { 0xDAE868DC, 32, NDPI_PROTOCOL_TOR }, + { 0xDAE868DD, 32, NDPI_PROTOCOL_TOR }, + { 0xDAFAF536, 32, NDPI_PROTOCOL_TOR }, + { 0xDB4F067A, 32, NDPI_PROTOCOL_TOR }, + { 0xDB59C4CA, 32, NDPI_PROTOCOL_TOR }, + { 0xDB6DCB40, 32, NDPI_PROTOCOL_TOR }, + { 0xDB75CE2E, 32, NDPI_PROTOCOL_TOR }, + { 0xDB791014, 32, NDPI_PROTOCOL_TOR }, + { 0xDBA189F3, 32, NDPI_PROTOCOL_TOR }, + { 0xDBA4C22E, 32, NDPI_PROTOCOL_TOR }, + { 0xDBAD0E54, 32, NDPI_PROTOCOL_TOR }, + { 0xDC39428E, 32, NDPI_PROTOCOL_TOR }, + { 0xDC87FE3F, 32, NDPI_PROTOCOL_TOR }, + { 0xDC898752, 32, NDPI_PROTOCOL_TOR }, + { 0xDC9387F3, 32, NDPI_PROTOCOL_TOR }, + { 0xDC9DC3F3, 32, NDPI_PROTOCOL_TOR }, + { 0xDCE97BAC, 32, NDPI_PROTOCOL_TOR }, + { 0xDCE9AF0E, 32, NDPI_PROTOCOL_TOR }, + { 0xDCFD1CE1, 32, NDPI_PROTOCOL_TOR }, + { 0xDCFF85C3, 32, NDPI_PROTOCOL_TOR }, + { 0xDD7132CB, 32, NDPI_PROTOCOL_TOR }, + { 0xDD9E95C5, 32, NDPI_PROTOCOL_TOR }, + { 0xDE047C92, 32, NDPI_PROTOCOL_TOR }, + { 0xDE0C7C9A, 32, NDPI_PROTOCOL_TOR }, + { 0xDE7294F8, 32, NDPI_PROTOCOL_TOR }, + { 0xDEEB761A, 32, NDPI_PROTOCOL_TOR }, + { 0xDF1273E5, 32, NDPI_PROTOCOL_TOR }, + { 0xDF85F4CA, 32, NDPI_PROTOCOL_TOR }, + { 0xDFE57B41, 32, NDPI_PROTOCOL_TOR }, -/* - Twitch ingestion servers : + /* + Twitch ingestion servers : https://api.twitch.tv/kraken/ingests - Edoardo Dominici edoaramis@gmail.com -*/ -{ 0xB92ACC5D, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACC92, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACCA4, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACCCD, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACC30, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FE15, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FE19, 32, NDPI_SERVICE_TWITCH }, -{ 0xBCACD305, 32, NDPI_SERVICE_TWITCH }, -{ 0xC0104616, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010461D, 32, NDPI_SERVICE_TWITCH }, -{ 0xC0104650, 32, NDPI_SERVICE_TWITCH }, -{ 0xC0104651, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FEA3, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FE87, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACD85, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACDA4, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010419A, 32, NDPI_SERVICE_TWITCH }, -{ 0xC01041AD, 32, NDPI_SERVICE_TWITCH }, -{ 0xC0104172, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACD68, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACD55, 32, NDPI_SERVICE_TWITCH }, -{ 0xC0104219, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010421A, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010421B, 32, NDPI_SERVICE_TWITCH }, -{ 0xBCACD205, 32, NDPI_SERVICE_TWITCH }, -{ 0xBCACCB05, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010413C, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010413D, 32, NDPI_SERVICE_TWITCH }, -{ 0xC010413E, 32, NDPI_SERVICE_TWITCH }, -{ 0xBCACD105, 32, NDPI_SERVICE_TWITCH }, -{ 0xBCACD005, 32, NDPI_SERVICE_TWITCH }, -{ 0xBCACCA05, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACD06, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACD14, 32, NDPI_SERVICE_TWITCH }, -{ 0xB92ACCF3, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F9C7, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F9C9, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F9CB, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBA4, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBA6, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBAA, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBB1, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBE8, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBE9, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBEA, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBEB, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBFB, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBFC, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBFD, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FBFE, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FF4B, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709FF4C, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F974, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F976, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F978, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F97D, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F985, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F986, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F987, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F98C, 32, NDPI_SERVICE_TWITCH }, -{ 0xC709F9C5, 32, NDPI_SERVICE_TWITCH }, + Edoardo Dominici edoaramis@gmail.com + */ + { 0xB92ACC5D, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACC92, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACCA4, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACCCD, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACC30, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FE15, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FE19, 32, NDPI_SERVICE_TWITCH }, + { 0xBCACD305, 32, NDPI_SERVICE_TWITCH }, + { 0xC0104616, 32, NDPI_SERVICE_TWITCH }, + { 0xC010461D, 32, NDPI_SERVICE_TWITCH }, + { 0xC0104650, 32, NDPI_SERVICE_TWITCH }, + { 0xC0104651, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FEA3, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FE87, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACD85, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACDA4, 32, NDPI_SERVICE_TWITCH }, + { 0xC010419A, 32, NDPI_SERVICE_TWITCH }, + { 0xC01041AD, 32, NDPI_SERVICE_TWITCH }, + { 0xC0104172, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACD68, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACD55, 32, NDPI_SERVICE_TWITCH }, + { 0xC0104219, 32, NDPI_SERVICE_TWITCH }, + { 0xC010421A, 32, NDPI_SERVICE_TWITCH }, + { 0xC010421B, 32, NDPI_SERVICE_TWITCH }, + { 0xBCACD205, 32, NDPI_SERVICE_TWITCH }, + { 0xBCACCB05, 32, NDPI_SERVICE_TWITCH }, + { 0xC010413C, 32, NDPI_SERVICE_TWITCH }, + { 0xC010413D, 32, NDPI_SERVICE_TWITCH }, + { 0xC010413E, 32, NDPI_SERVICE_TWITCH }, + { 0xBCACD105, 32, NDPI_SERVICE_TWITCH }, + { 0xBCACD005, 32, NDPI_SERVICE_TWITCH }, + { 0xBCACCA05, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACD06, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACD14, 32, NDPI_SERVICE_TWITCH }, + { 0xB92ACCF3, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F9C7, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F9C9, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F9CB, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBA4, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBA6, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBAA, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBB1, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBE8, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBE9, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBEA, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBEB, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBFB, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBFC, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBFD, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FBFE, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FF4B, 32, NDPI_SERVICE_TWITCH }, + { 0xC709FF4C, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F974, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F976, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F978, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F97D, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F985, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F986, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F987, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F98C, 32, NDPI_SERVICE_TWITCH }, + { 0xC709F9C5, 32, NDPI_SERVICE_TWITCH }, -/* Simet - 200.160.4.0/24 */ -{ 0xC8A00400, 24, NDPI_SERVICE_SIMET }, + /* Simet - 200.160.4.0/24 */ + { 0xC8A00400, 24, NDPI_SERVICE_SIMET }, -{ 0x0, 0, 0 } + { 0x0, 0, 0 } }; /* ****************************************************** */ @@ -7295,7 +7299,7 @@ static ndpi_network host_protocol_list[] = { HTTP: Server: field HTTPS: Server certificate name - */ +*/ ndpi_protocol_match host_match[] = { { "amazon.", "Amazon", NDPI_SERVICE_AMAZON, NDPI_PROTOCOL_ACCEPTABLE }, @@ -7402,7 +7406,8 @@ ndpi_protocol_match host_match[] = { { "update.microsoft.com", "WindowsUpdate", NDPI_SERVICE_WINDOWS_UPDATE, NDPI_PROTOCOL_ACCEPTABLE }, { ".windowsupdate.com", "WindowsUpdate", NDPI_SERVICE_WINDOWS_UPDATE, NDPI_PROTOCOL_ACCEPTABLE }, { ".battle.net", "Battle.net", NDPI_SERVICE_BATTLENET, NDPI_PROTOCOL_FUN }, - { "bnetcmsus-a.akamaihd.net", "Battle.net", NDPI_SERVICE_BATTLENET, NDPI_PROTOCOL_FUN }, + { "bnetcmsus-a.akamaihd.net", "Battle.net", NDPI_SERVICE_BATTLENET, NDPI_PROTOCOL_FUN }, + { "worldofwarcraft.com", "Battle.net", NDPI_SERVICE_BATTLENET, NDPI_PROTOCOL_FUN }, { NULL, 0 } }; @@ -7454,71 +7459,71 @@ ndpi_protocol_match content_match[] = { /* ****************************************************** */ /* - Tor - The tor protocol uses SSL to contact peers so it could be exchanged with - standard SSL. However the host names such as + Tor + The tor protocol uses SSL to contact peers so it could be exchanged with + standard SSL. However the host names such as - - www.fgd2iwya7vinfutj5wq5we.com - - www.qbtxzhetq4s2f.com - - www.fgd2iwya7vinfutj5wq5we.net + - www.fgd2iwya7vinfutj5wq5we.com + - www.qbtxzhetq4s2f.com + - www.fgd2iwya7vinfutj5wq5we.net - In essence www.<name>.com|net + In essence www.<name>.com|net - To do things properly we should check if host name in the certificate - exists or if the IP address of the SSL peer resolves to a name. Unfortunately - for performance reasons we can't afford to do a DNS lookup in nDPI (however apps - can do it if possible) and thus we have created a heuristic algorithm that tries - to check the host name (in the SSL certificate) to see if it looks like a - random name or a real name. We cannot use a dictionary (how can the kernel read a file?) - and this we use bigrams distribution to decide if the string looks like a - word or just random chars. + To do things properly we should check if host name in the certificate + exists or if the IP address of the SSL peer resolves to a name. Unfortunately + for performance reasons we can't afford to do a DNS lookup in nDPI (however apps + can do it if possible) and thus we have created a heuristic algorithm that tries + to check the host name (in the SSL certificate) to see if it looks like a + random name or a real name. We cannot use a dictionary (how can the kernel read a file?) + and this we use bigrams distribution to decide if the string looks like a + word or just random chars. - http://www3.nd.edu/~busiforc/handouts/cryptography/Letter%20Frequencies.html + http://www3.nd.edu/~busiforc/handouts/cryptography/Letter%20Frequencies.html */ static const char *ndpi_en_bigrams[] = { - "aa", "ba", "ca", "da", "ea", "fa", "ga", "ha", "ia", "ja", "ka", "la", "ma", "na", "oa", "pa", "qa", - "ra", "sa", "ta", "ua", "va", "wa", "xa", "ya", "za", "ab", "bb", "db", "eb", "fb", "gb", "hb", "ib", - "kb", "lb", "mb", "nb", "ob", "pb", "rb", "sb", "tb", "ub", "wb", "yb", "ac", "bc", "cc", "dc", "ec", - "fc", "gc", "hc", "ic", "kc", "lc", "mc", "nc", "oc", "pc", "rc", "sc", "tc", "uc", "wc", "xc", "yc", - "ad", "bd", "cd", "dd", "ed", "fd", "gd", "hd", "id", "kd", "ld", "md", "nd", "od", "pd", "rd", "sd", - "td", "ud", "wd", "xd", "yd", "zd", "ae", "be", "ce", "de", "ee", "fe", "ge", "he", "ie", "je", "ke", - "le", "me", "ne", "oe", "pe", "re", "se", "te", "ue", "ve", "we", "xe", "ye", "ze", "af", "bf", "df", - "ef", "ff", "gf", "hf", "if", "kf", "lf", "mf", "nf", "of", "pf", "rf", "sf", "tf", "uf", "wf", "xf", - "yf", "zf", "ag", "bg", "dg", "eg", "fg", "gg", "hg", "ig", "kg", "lg", "ng", "og", "pg", "rg", "sg", - "tg", "ug", "wg", "yg", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "ih", "kh", "lh", "mh", "nh", - "oh", "ph", "rh", "sh", "th", "uh", "wh", "xh", "yh", "ai", "bi", "ci", "di", "ei", "fi", "gi", "hi", - "ii", "ji", "ki", "li", "mi", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", - "zi", "aj", "bj", "dj", "ej", "fj", "gj", "hj", "ij", "jj", "kj", "lj", "nj", "oj", "pj", "rj", "sj", - "tj", "uj", "wj", "yj", "ak", "ck", "dk", "ek", "gk", "ik", "kk", "lk", "mk", "nk", "ok", "pk", "rk", - "sk", "tk", "uk", "wk", "yk", "zk", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "kl", "ll", - "ml", "nl", "ol", "pl", "rl", "sl", "tl", "ul", "vl", "wl", "xl", "yl", "zl", "am", "bm", "cm", "dm", - "em", "fm", "gm", "hm", "im", "km", "lm", "mm", "nm", "om", "pm", "rm", "sm", "tm", "um", "wm", "xm", - "ym", "zm", "an", "bn", "cn", "dn", "en", "fn", "gn", "hn", "in", "kn", "ln", "mn", "nn", "on", "pn", - "rn", "sn", "tn", "un", "wn", "xn", "yn", "ao", "bo", "co", "do", "eo", "fo", "go", "ho", "io", "jo", - "ko", "lo", "mo", "no", "oo", "po", "ro", "so", "to", "uo", "vo", "wo", "xo", "yo", "zo", "ap", "bp", - "dp", "ep", "fp", "gp", "hp", "ip", "kp", "lp", "mp", "np", "op", "pp", "rp", "sp", "tp", "up", "wp", - "xp", "yp", "zp", "aq", "cq", "dq", "eq", "hq", "iq", "nq", "oq", "qq", "rq", "sq", "uq", "xq", "ar", - "br", "cr", "dr", "er", "fr", "gr", "hr", "ir", "kr", "lr", "mr", "nr", "or", "pr", "rr", "sr", "tr", - "ur", "vr", "wr", "xr", "yr", "as", "bs", "cs", "ds", "es", "fs", "gs", "hs", "is", "ks", "ls", "ms", - "ns", "os", "ps", "rs", "ss", "ts", "us", "vs", "ws", "xs", "ys", "at", "bt", "ct", "dt", "et", "ft", - "gt", "ht", "it", "kt", "lt", "mt", "nt", "ot", "pt", "rt", "st", "tt", "ut", "wt", "xt", "yt", "zt", - "au", "bu", "cu", "du", "eu", "fu", "gu", "hu", "iu", "ju", "ku", "lu", "mu", "nu", "ou", "pu", "qu", - "ru", "su", "tu", "uu", "vu", "wu", "xu", "yu", "zu", "av", "bv", "dv", "ev", "iv", "lv", "mv", "nv", - "ov", "rv", "sv", "tv", "uv", "vv", "zv", "aw", "bw", "dw", "ew", "fw", "gw", "hw", "iw", "kw", "lw", - "mw", "nw", "ow", "pw", "rw", "sw", "tw", "uw", "ww", "xw", "yw", "zw", "ax", "ex", "ix", "nx", "ox", - "rx", "ux", "xx", "yx", "ay", "by", "cy", "dy", "ey", "fy", "gy", "hy", "ky", "ly", "my", "ny", "oy", - "py", "ry", "sy", "ty", "uy", "vy", "wy", "xy", "yy", "zy", "az", "bz", "cz", "dz", "ez", "gz", "iz", - "lz", "nz", "oz", "pz", "rz", "tz", "uz", "zz", NULL }; + "aa", "ba", "ca", "da", "ea", "fa", "ga", "ha", "ia", "ja", "ka", "la", "ma", "na", "oa", "pa", "qa", + "ra", "sa", "ta", "ua", "va", "wa", "xa", "ya", "za", "ab", "bb", "db", "eb", "fb", "gb", "hb", "ib", + "kb", "lb", "mb", "nb", "ob", "pb", "rb", "sb", "tb", "ub", "wb", "yb", "ac", "bc", "cc", "dc", "ec", + "fc", "gc", "hc", "ic", "kc", "lc", "mc", "nc", "oc", "pc", "rc", "sc", "tc", "uc", "wc", "xc", "yc", + "ad", "bd", "cd", "dd", "ed", "fd", "gd", "hd", "id", "kd", "ld", "md", "nd", "od", "pd", "rd", "sd", + "td", "ud", "wd", "xd", "yd", "zd", "ae", "be", "ce", "de", "ee", "fe", "ge", "he", "ie", "je", "ke", + "le", "me", "ne", "oe", "pe", "re", "se", "te", "ue", "ve", "we", "xe", "ye", "ze", "af", "bf", "df", + "ef", "ff", "gf", "hf", "if", "kf", "lf", "mf", "nf", "of", "pf", "rf", "sf", "tf", "uf", "wf", "xf", + "yf", "zf", "ag", "bg", "dg", "eg", "fg", "gg", "hg", "ig", "kg", "lg", "ng", "og", "pg", "rg", "sg", + "tg", "ug", "wg", "yg", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "ih", "kh", "lh", "mh", "nh", + "oh", "ph", "rh", "sh", "th", "uh", "wh", "xh", "yh", "ai", "bi", "ci", "di", "ei", "fi", "gi", "hi", + "ii", "ji", "ki", "li", "mi", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", + "zi", "aj", "bj", "dj", "ej", "fj", "gj", "hj", "ij", "jj", "kj", "lj", "nj", "oj", "pj", "rj", "sj", + "tj", "uj", "wj", "yj", "ak", "ck", "dk", "ek", "gk", "ik", "kk", "lk", "mk", "nk", "ok", "pk", "rk", + "sk", "tk", "uk", "wk", "yk", "zk", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "kl", "ll", + "ml", "nl", "ol", "pl", "rl", "sl", "tl", "ul", "vl", "wl", "xl", "yl", "zl", "am", "bm", "cm", "dm", + "em", "fm", "gm", "hm", "im", "km", "lm", "mm", "nm", "om", "pm", "rm", "sm", "tm", "um", "wm", "xm", + "ym", "zm", "an", "bn", "cn", "dn", "en", "fn", "gn", "hn", "in", "kn", "ln", "mn", "nn", "on", "pn", + "rn", "sn", "tn", "un", "wn", "xn", "yn", "ao", "bo", "co", "do", "eo", "fo", "go", "ho", "io", "jo", + "ko", "lo", "mo", "no", "oo", "po", "ro", "so", "to", "uo", "vo", "wo", "xo", "yo", "zo", "ap", "bp", + "dp", "ep", "fp", "gp", "hp", "ip", "kp", "lp", "mp", "np", "op", "pp", "rp", "sp", "tp", "up", "wp", + "xp", "yp", "zp", "aq", "cq", "dq", "eq", "hq", "iq", "nq", "oq", "qq", "rq", "sq", "uq", "xq", "ar", + "br", "cr", "dr", "er", "fr", "gr", "hr", "ir", "kr", "lr", "mr", "nr", "or", "pr", "rr", "sr", "tr", + "ur", "vr", "wr", "xr", "yr", "as", "bs", "cs", "ds", "es", "fs", "gs", "hs", "is", "ks", "ls", "ms", + "ns", "os", "ps", "rs", "ss", "ts", "us", "vs", "ws", "xs", "ys", "at", "bt", "ct", "dt", "et", "ft", + "gt", "ht", "it", "kt", "lt", "mt", "nt", "ot", "pt", "rt", "st", "tt", "ut", "wt", "xt", "yt", "zt", + "au", "bu", "cu", "du", "eu", "fu", "gu", "hu", "iu", "ju", "ku", "lu", "mu", "nu", "ou", "pu", "qu", + "ru", "su", "tu", "uu", "vu", "wu", "xu", "yu", "zu", "av", "bv", "dv", "ev", "iv", "lv", "mv", "nv", + "ov", "rv", "sv", "tv", "uv", "vv", "zv", "aw", "bw", "dw", "ew", "fw", "gw", "hw", "iw", "kw", "lw", + "mw", "nw", "ow", "pw", "rw", "sw", "tw", "uw", "ww", "xw", "yw", "zw", "ax", "ex", "ix", "nx", "ox", + "rx", "ux", "xx", "yx", "ay", "by", "cy", "dy", "ey", "fy", "gy", "hy", "ky", "ly", "my", "ny", "oy", + "py", "ry", "sy", "ty", "uy", "vy", "wy", "xy", "yy", "zy", "az", "bz", "cz", "dz", "ez", "gz", "iz", + "lz", "nz", "oz", "pz", "rz", "tz", "uz", "zz", NULL }; static const char *ndpi_en_impossible_bigrams[] = { - "bk", "bq", "bx", "cb", "cf", "cg", "cj", "cp", "cv", "cw", "cx", "dx", "fk", "fq", "fv", "fx", "ee", - "fz", "gq", "gv", "gx", "hh", "hk", "hv", "hx", "hz", "iy", "jb", "jc", "jd", "jf", "jg", "jh", "jk", - "jl", "jm", "jn", "jp", "jq", "jr", "js", "jt", "jv", "jw", "jx", "jy", "jz", "kg", "kq", "kv", "kx", - "kz", "lq", "lx", "mg", "mj", "mq", "mx", "mz", "pq", "pv", "px", "qb", "qc", "qd", "qe", "qf", "ii", - "qg", "qh", "qj", "qk", "ql", "qm", "qn", "qo", "qp", "qr", "qs", "qt", "qv", "qw", "qx", "qy", "uu", - "qz", "sx", "sz", "tq", "tx", "vb", "vc", "vd", "vf", "vg", "vh", "vj", "vk", "vm", "vn", "vp", "bw", - "vq", "vt", "vw", "vx", "vz", "wq", "wv", "wx", "wz", "xb", "xg", "xj", "xk", "xv", "xz", "xw", "yd", "yp", - "yj", "yq", "yv", "yz", "yw", "zb", "zc", "zg", "zh", "zj", "zn", "zq", "zr", "zs", "zx", "wh", "wk", - "wb", "zk", "kp", "zk", "xy", - NULL }; + "bk", "bq", "bx", "cb", "cf", "cg", "cj", "cp", "cv", "cw", "cx", "dx", "fk", "fq", "fv", "fx", "ee", + "fz", "gq", "gv", "gx", "hh", "hk", "hv", "hx", "hz", "iy", "jb", "jc", "jd", "jf", "jg", "jh", "jk", + "jl", "jm", "jn", "jp", "jq", "jr", "js", "jt", "jv", "jw", "jx", "jy", "jz", "kg", "kq", "kv", "kx", + "kz", "lq", "lx", "mg", "mj", "mq", "mx", "mz", "pq", "pv", "px", "qb", "qc", "qd", "qe", "qf", "ii", + "qg", "qh", "qj", "qk", "ql", "qm", "qn", "qo", "qp", "qr", "qs", "qt", "qv", "qw", "qx", "qy", "uu", + "qz", "sx", "sz", "tq", "tx", "vb", "vc", "vd", "vf", "vg", "vh", "vj", "vk", "vm", "vn", "vp", "bw", + "vq", "vt", "vw", "vx", "vz", "wq", "wv", "wx", "wz", "xb", "xg", "xj", "xk", "xv", "xz", "xw", "yd", "yp", + "yj", "yq", "yv", "yz", "yw", "zb", "zc", "zg", "zh", "zj", "zn", "zq", "zr", "zs", "zx", "wh", "wk", + "wb", "zk", "kp", "zk", "xy", + NULL }; diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index feb613733..f36537b49 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -1607,11 +1607,11 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp no_master, "VHUA", ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */, ndpi_build_default_ports(ports_b, 58267, 0, 0, 0, 0) /* UDP */); - ndpi_set_proto_defaults(ndpi_mod, NDPI_PROTOCOL_FUN, NDPI_PROTOCOL_STARCRAFT2, + ndpi_set_proto_defaults(ndpi_mod, NDPI_PROTOCOL_FUN, NDPI_PROTOCOL_STARCRAFT, no_master, - no_master, "Starcraft 2", - ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0), /* TCP */ - ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0)); /* UDP */ + no_master, "Starcraft", + ndpi_build_default_ports(ports_a, 1119, 0, 0, 0, 0), /* TCP */ + ndpi_build_default_ports(ports_b, 1119, 0, 0, 0, 0)); /* UDP */ /* calling function for host and content matched protocols */ init_string_based_protocols(ndpi_mod); @@ -2217,6 +2217,9 @@ void ndpi_set_protocol_detection_bitmask2(struct ndpi_detection_module_struct *n /* SKYPE */ init_skype_dissector(ndpi_struct, &a, detection_bitmask); + /* Stracraft */ + init_starcraft_dissector(ndpi_struct, &a, detection_bitmask); + /* SSL */ init_ssl_dissector(ndpi_struct, &a, detection_bitmask); @@ -3392,9 +3395,12 @@ ndpi_protocol ndpi_detection_process_packet(struct ndpi_detection_module_struct } ret_protocols: - if(flow->detected_protocol_stack[1] != NDPI_PROTOCOL_UNKNOWN) + if(flow->detected_protocol_stack[1] != NDPI_PROTOCOL_UNKNOWN) { ret.master_protocol = flow->detected_protocol_stack[1], ret.protocol = flow->detected_protocol_stack[0]; - else + + if(ret.protocol == ret.master_protocol) + ret.master_protocol = NDPI_PROTOCOL_UNKNOWN; + } else ret.protocol = flow->detected_protocol_stack[0]; return(ret); @@ -4178,6 +4184,10 @@ ndpi_protocol ndpi_guess_undetected_protocol(struct ndpi_detection_module_struct if(rc != NDPI_PROTOCOL_UNKNOWN) { ret.protocol = rc, ret.master_protocol = ndpi_guess_protocol_id(ndpi_struct, proto, sport, dport); + + if(ret.protocol == ret.master_protocol) + ret.master_protocol = NDPI_PROTOCOL_UNKNOWN; + return(ret); } diff --git a/src/lib/protocols/skype.c b/src/lib/protocols/skype.c index 270a85fba..7f201569c 100644 --- a/src/lib/protocols/skype.c +++ b/src/lib/protocols/skype.c @@ -68,13 +68,17 @@ static void ndpi_check_skype(struct ndpi_detection_module_struct *ndpi_struct, s flow->l4.udp.skype_packet_id++; if(flow->l4.udp.skype_packet_id < 5) { + u_int16_t dport = ntohs(packet->udp->dest); + /* skype-to-skype */ - if(((payload_len == 3) && ((packet->payload[2] & 0x0F)== 0x0d)) - || ((payload_len >= 16) - && (packet->payload[0] != 0x30) /* Avoid invalid SNMP detection */ - && (packet->payload[2] == 0x02))) { - NDPI_LOG(NDPI_PROTOCOL_SKYPE, ndpi_struct, NDPI_LOG_DEBUG, "Found skype.\n"); - ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_SKYPE, NDPI_PROTOCOL_UNKNOWN); + if(dport != 1119) /* It can be confused with battle.net */ { + if(((payload_len == 3) && ((packet->payload[2] & 0x0F)== 0x0d)) + || ((payload_len >= 16) + && (packet->payload[0] != 0x30) /* Avoid invalid SNMP detection */ + && (packet->payload[2] == 0x02))) { + NDPI_LOG(NDPI_PROTOCOL_SKYPE, ndpi_struct, NDPI_LOG_DEBUG, "Found skype.\n"); + ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_SKYPE, NDPI_PROTOCOL_UNKNOWN); + } } return; diff --git a/src/lib/protocols/starcraft.c b/src/lib/protocols/starcraft.c new file mode 100644 index 000000000..157bc6da0 --- /dev/null +++ b/src/lib/protocols/starcraft.c @@ -0,0 +1,155 @@ +/* +* starcraft.c +* +* Copyright (C) 2015 - Matteo Bracci <matteobracci1@gmail.com> +* Copyright (C) 2015 - ntop.org +* +* nDPI is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* nDPI is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with nDPI. If not, see <http://www.gnu.org/licenses/>. +* +*/ + + +#include "ndpi_protocols.h" + +#ifdef NDPI_PROTOCOL_STARCRAFT + +/* Sender or receiver are one of the known login portals? */ +u_int8_t sc2_match_logon_ip(struct ndpi_packet_struct* packet) +{ + if (packet->iph == NULL) + return 0; + + u_int32_t source_ip = ntohl(packet->iph->saddr); + u_int32_t dest_ip = ntohl(packet->iph->daddr); + return (ndpi_ips_match(source_ip, dest_ip, 0xD5F87F82, 32) // EU 213.248.127.130 + || ndpi_ips_match(source_ip, dest_ip, 0x0C81CE82, 32) // US 12.129.206.130 + || ndpi_ips_match(source_ip, dest_ip, 0x79FEC882, 32) // KR 121.254.200.130 + || ndpi_ips_match(source_ip, dest_ip, 0xCA09424C, 32) // SG 202.9.66.76 + || ndpi_ips_match(source_ip, dest_ip, 0x0C81ECFE, 32)); // BETA 12.129.236.254 +} + +/* + The main TCP flow starts with the user login and stays alive until the logout. + Although hard to read, judging from what happens elsewhere this flow probably contains all the data + transfer generated by the user interaction with the client, e.g. chatting or looking at someone's + match history. The current way to detect this is plain dumb packet matching. +*/ +u_int8_t ndpi_check_starcraft_tcp(struct ndpi_detection_module_struct* ndpi_struct, struct ndpi_flow_struct* flow) +{ + if (sc2_match_logon_ip(&flow->packet) + && flow->packet.tcp->dest == htons(1119) //bnetgame port + && flow->packet.payload_packet_len >= 10 + && (match_first_bytes(flow->packet.payload, "\x4a\x00\x00\x0a\x66\x02\x0a\xed\x2d\x66") + || match_first_bytes(flow->packet.payload, "\x49\x00\x00\x0a\x66\x02\x0a\xed\x2d\x66"))) + return 1; + else + return -1; +} + +/* + UPD traffic is the actual game data and it uses a port owned by Blizzard itself, 1119. Therefore the + real key point here is to make sure that it's actually Starcraft 2 that is using the port and not + some other Blizzard software. + The flow is taken if a pattern in the size of some subsequent packets is found. +*/ +u_int8_t ndpi_check_starcraft_udp(struct ndpi_detection_module_struct* ndpi_struct, struct ndpi_flow_struct* flow) +{ + struct ndpi_packet_struct* packet = &flow->packet; + + /* First off, filter out any traffic not using port 1119, removing the chance of any false positive if we assume that non allowed protocols don't use the port */ + if (packet->udp->source != htons(1119) && packet->udp->dest != htons(1119)) + return -1; + + /* Then try to detect the size pattern */ + switch (flow->starcraft_udp_stage) + { + case 0: + if (packet->payload_packet_len == 20) + flow->starcraft_udp_stage = 1; + break; + case 1: + if (packet->payload_packet_len == 20) + flow->starcraft_udp_stage = 2; + break; + case 2: + if (packet->payload_packet_len == 75 || packet->payload_packet_len == 85) + flow->starcraft_udp_stage = 3; + break; + case 3: + if (packet->payload_packet_len == 20) + flow->starcraft_udp_stage = 4; + break; + case 4: + if (packet->payload_packet_len == 548) + flow->starcraft_udp_stage = 5; + break; + case 5: + if (packet->payload_packet_len == 548) + flow->starcraft_udp_stage = 6; + break; + case 6: + if (packet->payload_packet_len == 548) + flow->starcraft_udp_stage = 7; + break; + case 7: + if (packet->payload_packet_len == 484) + return 1; + break; + } +} + +void ndpi_search_starcraft(struct ndpi_detection_module_struct* ndpi_struct, struct ndpi_flow_struct* flow) +{ + NDPI_LOG(NDPI_PROTOCOL_STARCRAFT, ndpi_struct, NDPI_LOG_DEBUG, "Starcraft protocol detection...\n"); + if (flow->packet.detected_protocol_stack[0] != NDPI_PROTOCOL_STARCRAFT) { + struct ndpi_packet_struct* packet = &flow->packet; + int8_t result = 0; + + if (packet->udp != NULL) { + result = ndpi_check_starcraft_udp(ndpi_struct, flow); + if (result == 1) { + //printf("Found Starcraft 2 [Game, UDP]\n"); + NDPI_LOG(NDPI_PROTOCOL_STARCRAFT, ndpi_struct, NDPI_LOG_DEBUG, "Found Starcraft 2 [Game, UDP]\n"); + } + } + else if (packet->tcp != NULL) { + result = ndpi_check_starcraft_tcp(ndpi_struct, flow); + if (result == 1) { + //printf("Found Starcraft 2 [Client, TCP]\n"); + NDPI_LOG(NDPI_PROTOCOL_STARCRAFT, ndpi_struct, NDPI_LOG_DEBUG, "Found Starcraft 2 [Client, TCP]\n"); + } + } + + if (result == 1) { + ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_STARCRAFT, NDPI_PROTOCOL_UNKNOWN); + } + else if (result == -1) { + NDPI_LOG(NDPI_PROTOCOL_STARCRAFT, ndpi_struct, NDPI_LOG_DEBUG, "Starcraft excluded\n"); + NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_STARCRAFT); + } + } +} + +void init_starcraft_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask) +{ + ndpi_set_bitmask_protocol_detection("Starcraft", ndpi_struct, detection_bitmask, *id, + NDPI_PROTOCOL_STARCRAFT, ndpi_search_starcraft, + NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_OR_UDP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION, + SAVE_DETECTION_BITMASK_AS_UNKNOWN, + ADD_TO_DETECTION_BITMASK); + + *id += 1; +} + +#endif diff --git a/src/lib/protocols/starcraft2.c b/src/lib/protocols/starcraft2.c deleted file mode 100644 index 6372c78ca..000000000 --- a/src/lib/protocols/starcraft2.c +++ /dev/null @@ -1,157 +0,0 @@ -/* -* starcraft2.c -* -* Copyright (C) 2009-2011 by ipoque GmbH -* Copyright (C) 2011-15 - ntop.org -* -* This file is part of nDPI, an open source deep packet inspection -* library based on the OpenDPI and PACE technology by ipoque GmbH -* -* nDPI is free software: you can redistribute it and/or modify -* it under the terms of the GNU Lesser General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* nDPI is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License -* along with nDPI. If not, see <http://www.gnu.org/licenses/>. -* -*/ - - -#include "ndpi_protocols.h" -#ifdef NDPI_PROTOCOL_STARCRAFT2 - -/* Sender or receiver are one of the known login portals? */ -u_int8_t sc2_match_logon_ip(struct ndpi_packet_struct* packet) -{ - if (packet->iph == NULL) - return 0; - - u_int32_t source_ip = ntohl(packet->iph->saddr); - u_int32_t dest_ip = ntohl(packet->iph->daddr); - return (ndpi_ips_match(source_ip, dest_ip, 0xD5F87F82, 32) // EU 213.248.127.130 - || ndpi_ips_match(source_ip, dest_ip, 0x0C81CE82, 32) // US 12.129.206.130 - || ndpi_ips_match(source_ip, dest_ip, 0x79FEC882, 32) // KR 121.254.200.130 - || ndpi_ips_match(source_ip, dest_ip, 0xCA09424C, 32) // SG 202.9.66.76 - || ndpi_ips_match(source_ip, dest_ip, 0x0C81ECFE, 32)); // BETA 12.129.236.254 -} - -/* -The main TCP flow starts with the user login and stays alive until the logout. -Although hard to read, judging from what happens elsewhere this flow probably contains all the data -transfer generated by the user interaction with the client, e.g. chatting or looking at someone's -match history. The current way to detect this is plain dumb packet matching. -*/ -u_int8_t ndpi_check_starcraft2_tcp(struct ndpi_detection_module_struct* ndpi_struct, struct ndpi_flow_struct* flow) -{ - if (sc2_match_logon_ip(&flow->packet) - && flow->packet.tcp->dest == htons(1119) //bnetgame port - && flow->packet.payload_packet_len >= 10 - && (match_first_bytes(flow->packet.payload, "\x4a\x00\x00\x0a\x66\x02\x0a\xed\x2d\x66") - || match_first_bytes(flow->packet.payload, "\x49\x00\x00\x0a\x66\x02\x0a\xed\x2d\x66"))) - return 1; - else - return -1; -} - -/* -UPD traffic is the actual game data and it uses a port owned by Blizzard itself, 1119. Therefore the -real key point here is to make sure that it's actually Starcraft 2 that is using the port and not -some other Blizzard software. -The flow is taken if a pattern in the size of some subsequent packets is found. -*/ -u_int8_t ndpi_check_starcraft2_udp(struct ndpi_detection_module_struct* ndpi_struct, struct ndpi_flow_struct* flow) -{ - struct ndpi_packet_struct* packet = &flow->packet; - - /* First off, filter out any traffic not using port 1119, removing the chance of any false positive if we assume that non allowed protocols don't use the port */ - if (packet->udp->source != htons(1119) && packet->udp->dest != htons(1119)) - return -1; - - /* Then try to detect the size pattern */ - switch (flow->starcraft2_udp_stage) - { - case 0: - if (packet->payload_packet_len == 20) - flow->starcraft2_udp_stage = 1; - break; - case 1: - if (packet->payload_packet_len == 20) - flow->starcraft2_udp_stage = 2; - break; - case 2: - if (packet->payload_packet_len == 75 || packet->payload_packet_len == 85) - flow->starcraft2_udp_stage = 3; - break; - case 3: - if (packet->payload_packet_len == 20) - flow->starcraft2_udp_stage = 4; - break; - case 4: - if (packet->payload_packet_len == 548) - flow->starcraft2_udp_stage = 5; - break; - case 5: - if (packet->payload_packet_len == 548) - flow->starcraft2_udp_stage = 6; - break; - case 6: - if (packet->payload_packet_len == 548) - flow->starcraft2_udp_stage = 7; - break; - case 7: - if (packet->payload_packet_len == 484) - return 1; - break; - } -} - -void ndpi_search_starcraft2(struct ndpi_detection_module_struct* ndpi_struct, struct ndpi_flow_struct* flow) -{ - NDPI_LOG(NDPI_PROTOCOL_STARCRAFT2, ndpi_struct, NDPI_LOG_DEBUG, "Starcraft2 protocol detection...\n"); - if (flow->packet.detected_protocol_stack[0] != NDPI_PROTOCOL_STARCRAFT2) { - struct ndpi_packet_struct* packet = &flow->packet; - int8_t result = 0; - - if (packet->udp != NULL) { - result = ndpi_check_starcraft2_udp(ndpi_struct, flow); - if (result == 1) { - //printf("Found Starcraft 2 [Game, UDP]\n"); - NDPI_LOG(NDPI_PROTOCOL_STARCRAFT2, ndpi_struct, NDPI_LOG_DEBUG, "Found Starcraft 2 [Game, UDP]\n"); - } - } - else if (packet->tcp != NULL) { - result = ndpi_check_starcraft2_tcp(ndpi_struct, flow); - if (result == 1) { - //printf("Found Starcraft 2 [Client, TCP]\n"); - NDPI_LOG(NDPI_PROTOCOL_STARCRAFT2, ndpi_struct, NDPI_LOG_DEBUG, "Found Starcraft 2 [Client, TCP]\n"); - } - } - - if (result == 1) { - ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_STARCRAFT2, NDPI_PROTOCOL_UNKNOWN); - } - else if (result == -1) { - NDPI_LOG(NDPI_PROTOCOL_STARCRAFT2, ndpi_struct, NDPI_LOG_DEBUG, "Starcraft2 excluded\n"); - NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_STARCRAFT2); - } - } -} - -void init_starcraft2_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask) -{ - ndpi_set_bitmask_protocol_detection("STARCRAFT2", ndpi_struct, detection_bitmask, *id, - NDPI_PROTOCOL_STARCRAFT2, ndpi_search_starcraft2, - NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_OR_UDP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION, - SAVE_DETECTION_BITMASK_AS_UNKNOWN, - ADD_TO_DETECTION_BITMASK); - - *id += 1; -} - -#endif |