From 27d9108af00c3067ba259c058da156ccc52a860f Mon Sep 17 00:00:00 2001 From: Nardi Ivan Date: Wed, 9 Aug 2023 12:50:12 +0200 Subject: [PATCH] STUN: major code rework Try to have a faster classification, on first packet; use standard extra dissection data path for sub-classification, metadata extraction and monitoring. STUN caches: * use the proper confidence value * lookup into the caches only once per flow, after having found a proper STUN classification Add identification of Telegram VoIP calls. --- .github/workflows/cifuzz.yml | 2 +- .gitignore | 4 + doc/protocols.rst | 11 +- fuzz/Makefile.am | 41 +- fuzz/corpus/fuzz_is_stun_tcp/1 | Bin 0 -> 28 bytes fuzz/corpus/fuzz_is_stun_tcp/10 | Bin 0 -> 192 bytes fuzz/corpus/fuzz_is_stun_tcp/11 | Bin 0 -> 100 bytes fuzz/corpus/fuzz_is_stun_tcp/13 | Bin 0 -> 4 bytes fuzz/corpus/fuzz_is_stun_tcp/2 | Bin 0 -> 112 bytes fuzz/corpus/fuzz_is_stun_tcp/20 | Bin 0 -> 106 bytes fuzz/corpus/fuzz_is_stun_tcp/21 | Bin 0 -> 98 bytes fuzz/corpus/fuzz_is_stun_tcp/22 | Bin 0 -> 114 bytes fuzz/corpus/fuzz_is_stun_tcp/23 | Bin 0 -> 98 bytes fuzz/corpus/fuzz_is_stun_tcp/3 | Bin 0 -> 108 bytes fuzz/corpus/fuzz_is_stun_tcp/30 | Bin 0 -> 84 bytes fuzz/corpus/fuzz_is_stun_tcp/4 | Bin 0 -> 112 bytes fuzz/corpus/fuzz_is_stun_tcp/5 | Bin 0 -> 112 bytes fuzz/corpus/fuzz_is_stun_tcp/6 | Bin 0 -> 168 bytes fuzz/corpus/fuzz_is_stun_tcp/7 | Bin 0 -> 80 bytes fuzz/corpus/fuzz_is_stun_tcp/8 | Bin 0 -> 108 bytes fuzz/corpus/fuzz_is_stun_tcp/9 | Bin 0 -> 120 bytes fuzz/corpus/fuzz_is_stun_udp/1 | Bin 0 -> 20 bytes fuzz/corpus/fuzz_is_stun_udp/10 | Bin 0 -> 140 bytes fuzz/corpus/fuzz_is_stun_udp/11 | Bin 0 -> 120 bytes fuzz/corpus/fuzz_is_stun_udp/12 | Bin 0 -> 100 bytes fuzz/corpus/fuzz_is_stun_udp/13 | Bin 0 -> 52 bytes fuzz/corpus/fuzz_is_stun_udp/2 | Bin 0 -> 28 bytes fuzz/corpus/fuzz_is_stun_udp/3 | Bin 0 -> 124 bytes fuzz/corpus/fuzz_is_stun_udp/31 | Bin 0 -> 128 bytes fuzz/corpus/fuzz_is_stun_udp/4 | Bin 0 -> 84 bytes fuzz/corpus/fuzz_is_stun_udp/5 | Bin 0 -> 116 bytes fuzz/corpus/fuzz_is_stun_udp/6 | Bin 0 -> 96 bytes fuzz/corpus/fuzz_is_stun_udp/7 | Bin 0 -> 120 bytes fuzz/corpus/fuzz_is_stun_udp/8 | Bin 0 -> 132 bytes fuzz/corpus/fuzz_is_stun_udp/9 | Bin 0 -> 52 bytes fuzz/corpus/fuzz_is_stun_udp/a | Bin 0 -> 312 bytes fuzz/corpus/fuzz_is_stun_udp/b | Bin 0 -> 68 bytes fuzz/corpus/fuzz_is_stun_udp/c | Bin 0 -> 68 bytes fuzz/corpus/fuzz_is_stun_udp/c1 | Bin 0 -> 28 bytes fuzz/corpus/fuzz_is_stun_udp/c2 | Bin 0 -> 32 bytes fuzz/corpus/fuzz_is_stun_udp/d | Bin 0 -> 68 bytes fuzz/corpus/fuzz_is_stun_udp/e | Bin 0 -> 20 bytes fuzz/corpus/fuzz_is_stun_udp/f | Bin 0 -> 20 bytes fuzz/corpus/fuzz_is_stun_udp/q | Bin 0 -> 372 bytes fuzz/corpus/fuzz_is_stun_udp/q1 | Bin 0 -> 372 bytes fuzz/corpus/fuzz_is_stun_udp/q10 | Bin 0 -> 44 bytes fuzz/corpus/fuzz_is_stun_udp/q11 | Bin 0 -> 44 bytes fuzz/corpus/fuzz_is_stun_udp/q12 | Bin 0 -> 220 bytes fuzz/corpus/fuzz_is_stun_udp/q2 | Bin 0 -> 68 bytes fuzz/corpus/fuzz_is_stun_udp/q3 | Bin 0 -> 68 bytes fuzz/fuzz_is_stun.c | 38 + src/include/ndpi_main.h | 3 + src/include/ndpi_protocol_ids.h | 1 + src/include/ndpi_typedefs.h | 2 +- src/lib/ndpi_main.c | 21 +- src/lib/ndpi_utils.c | 10 - src/lib/protocols/rtp.c | 17 +- src/lib/protocols/stun.c | 834 +++++++++--------- tests/cfgs/caches_cfg/result/teams.pcap.out | 11 +- .../pcap/stun_dtls_unidirectional_client.pcap | Bin 0 -> 2024 bytes .../pcap/stun_dtls_unidirectional_server.pcap | Bin 0 -> 1880 bytes .../pcap/stun_tcp_multiple_msgs_same_pkt.pcap | Bin 0 -> 788 bytes tests/cfgs/default/pcap/stun_zoom.pcapng | Bin 0 -> 20824 bytes .../default/pcap/telegram_videocall.pcapng | Bin 0 -> 413612 bytes .../default/result/adult_content.pcap.out | 10 +- ...om_rules_same-ip_multiple_ports.pcapng.out | 6 +- .../cfgs/default/result/geforcenow.pcapng.out | 17 +- .../default/result/lru_ipv6_caches.pcapng.out | 8 +- .../result/skype-conference-call.pcap.out | 2 +- tests/cfgs/default/result/stun.pcap.out | 29 +- .../cfgs/default/result/stun_classic.pcap.out | 8 +- .../stun_dtls_unidirectional_client.pcap.out | 31 + .../stun_dtls_unidirectional_server.pcap.out | 30 + .../result/stun_google_meet.pcapng.out | 21 +- .../result/stun_msteams_unidir.pcapng.out | 14 +- .../default/result/stun_signal.pcapng.out | 60 +- .../stun_tcp_multiple_msgs_same_pkt.pcap.out | 26 + .../default/result/stun_wa_call.pcapng.out | 9 +- .../cfgs/default/result/stun_zoom.pcapng.out | 33 + tests/cfgs/default/result/synscan.pcap.out | 4 +- tests/cfgs/default/result/teams.pcap.out | 12 +- .../result/telegram_videocall.pcapng.out | 70 ++ tests/cfgs/default/result/wa_video.pcap.out | 9 +- tests/cfgs/default/result/wa_voice.pcap.out | 9 +- .../result/whatsapp_login_call.pcap.out | 13 +- .../whatsapp_voice_and_message.pcap.out | 2 +- tests/cfgs/default/result/zoom.pcap.out | 2 +- tests/cfgs/default/result/zoom_p2p.pcapng.out | 2 +- .../result/lru_ipv6_caches.pcapng.out | 8 +- .../result/wa_voice.pcap.out | 7 +- 90 files changed, 835 insertions(+), 602 deletions(-) create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/1 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/10 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/11 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/13 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/2 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/20 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/21 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/22 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/23 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/3 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/30 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/4 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/5 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/6 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/7 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/8 create mode 100644 fuzz/corpus/fuzz_is_stun_tcp/9 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/1 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/10 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/11 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/12 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/13 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/2 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/3 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/31 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/4 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/5 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/6 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/7 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/8 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/9 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/a create mode 100644 fuzz/corpus/fuzz_is_stun_udp/b create mode 100644 fuzz/corpus/fuzz_is_stun_udp/c create mode 100644 fuzz/corpus/fuzz_is_stun_udp/c1 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/c2 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/d create mode 100644 fuzz/corpus/fuzz_is_stun_udp/e create mode 100644 fuzz/corpus/fuzz_is_stun_udp/f create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q1 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q10 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q11 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q12 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q2 create mode 100644 fuzz/corpus/fuzz_is_stun_udp/q3 create mode 100644 fuzz/fuzz_is_stun.c create mode 100644 tests/cfgs/default/pcap/stun_dtls_unidirectional_client.pcap create mode 100644 tests/cfgs/default/pcap/stun_dtls_unidirectional_server.pcap create mode 100644 tests/cfgs/default/pcap/stun_tcp_multiple_msgs_same_pkt.pcap create mode 100644 tests/cfgs/default/pcap/stun_zoom.pcapng create mode 100644 tests/cfgs/default/pcap/telegram_videocall.pcapng create mode 100644 tests/cfgs/default/result/stun_dtls_unidirectional_client.pcap.out create mode 100644 tests/cfgs/default/result/stun_dtls_unidirectional_server.pcap.out create mode 100644 tests/cfgs/default/result/stun_tcp_multiple_msgs_same_pkt.pcap.out create mode 100644 tests/cfgs/default/result/stun_zoom.pcapng.out create mode 100644 tests/cfgs/default/result/telegram_videocall.pcapng.out diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index 62f0d417ce1d..d519d73028dc 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -18,7 +18,7 @@ jobs: uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: oss-fuzz-project-name: 'ndpi' - fuzz-seconds: 1200 + fuzz-seconds: 1320 dry-run: false sanitizer: ${{ matrix.sanitizer }} - name: Check Crash (fails when a crash is detected) diff --git a/.gitignore b/.gitignore index e496d1b5340c..0b9cfd4bdc57 100644 --- a/.gitignore +++ b/.gitignore @@ -76,6 +76,8 @@ /fuzz/fuzz_binaryfusefilter /fuzz/fuzz_tls_certificate /fuzz/fuzz_dga +/fuzz/fuzz_is_stun_udp +/fuzz/fuzz_is_stun_tcp /fuzz/fuzz_ds_cmsketch /fuzz/fuzz_gcrypt_light /fuzz/fuzz_gcrypt_aes @@ -90,6 +92,8 @@ /fuzz/fuzz_quic_get_crypto_data_seed_corpus.zip /fuzz/fuzz_config_seed_corpus.zip /fuzz/fuzz_community_id_seed_corpus.zip +/fuzz/fuzz_is_stun_udp_seed_corpus.zip +/fuzz/fuzz_is_stun_tcp_seed_corpus.zip /fuzz/fuzz_serialization_seed_corpus.zip /fuzz/fuzz_alg_ses_des_seed_corpus.zip /fuzz/fuzz_alg_bins_seed_corpus.zip diff --git a/doc/protocols.rst b/doc/protocols.rst index bc819801aff0..4c05cef459bd 100644 --- a/doc/protocols.rst +++ b/doc/protocols.rst @@ -179,4 +179,13 @@ References: `Main site `_. diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am index 5f6fbb71cd2d..e4f0c6660ae5 100644 --- a/fuzz/Makefile.am +++ b/fuzz/Makefile.am @@ -1,4 +1,4 @@ -bin_PROGRAMS = fuzz_process_packet fuzz_ndpi_reader fuzz_ndpi_reader_alloc_fail fuzz_ndpi_reader_payload_analyzer fuzz_quic_get_crypto_data fuzz_config fuzz_community_id fuzz_serialization fuzz_tls_certificate fuzz_dga +bin_PROGRAMS = fuzz_process_packet fuzz_ndpi_reader fuzz_ndpi_reader_alloc_fail fuzz_ndpi_reader_payload_analyzer fuzz_quic_get_crypto_data fuzz_config fuzz_community_id fuzz_serialization fuzz_tls_certificate fuzz_dga fuzz_is_stun_udp fuzz_is_stun_tcp #Alghoritms bin_PROGRAMS += fuzz_alg_bins fuzz_alg_hll fuzz_alg_hw_rsi_outliers_da fuzz_alg_jitter fuzz_alg_ses_des fuzz_alg_crc32_md5 fuzz_alg_bytestream #Data structures @@ -412,6 +412,32 @@ fuzz_dga_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(fuzz_dga_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@ +fuzz_is_stun_udp_SOURCES = fuzz_is_stun.c fuzz_common_code.c +fuzz_is_stun_udp_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) +fuzz_is_stun_udp_LDADD = ../src/lib/libndpi.a $(ADDITIONAL_LIBS) +fuzz_is_stun_udp_LDFLAGS = $(LIBS) +if HAS_FUZZLDFLAGS +fuzz_is_stun_udp_CFLAGS += $(LIB_FUZZING_ENGINE) +fuzz_is_stun_udp_LDFLAGS += $(LIB_FUZZING_ENGINE) +endif +# force usage of CXX for linker +fuzz_is_stun_udp_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(fuzz_is_stun_udp_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@ + +fuzz_is_stun_tcp_SOURCES = fuzz_is_stun.c fuzz_common_code.c +fuzz_is_stun_tcp_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) -DSTUN_TCP +fuzz_is_stun_tcp_LDADD = ../src/lib/libndpi.a $(ADDITIONAL_LIBS) +fuzz_is_stun_tcp_LDFLAGS = $(LIBS) +if HAS_FUZZLDFLAGS +fuzz_is_stun_tcp_CFLAGS += $(LIB_FUZZING_ENGINE) +fuzz_is_stun_tcp_LDFLAGS += $(LIB_FUZZING_ENGINE) +endif +# force usage of CXX for linker +fuzz_is_stun_tcp_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(fuzz_is_stun_tcp_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@ + fuzz_gcrypt_light_SOURCES = fuzz_gcrypt_light.cpp fuzz_common_code.c fuzz_gcrypt_light_CXXFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) -I ../src/lib/third_party/include/ fuzz_gcrypt_light_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) -I ../src/lib/third_party/include/ @@ -542,10 +568,17 @@ fuzz_serialization_seed_corpus.zip: $(files_corpus_fuzz_serialization) zip -j fuzz_serialization_seed_corpus.zip $(files_corpus_fuzz_serialization) files_corpus_fuzz_community_id := $(wildcard corpus/fuzz_community_id/*) - fuzz_community_id_seed_corpus.zip: $(files_corpus_fuzz_community_id) zip -j fuzz_community_id_seed_corpus.zip $(files_corpus_fuzz_community_id) +files_corpus_fuzz_is_stun_udp := $(wildcard corpus/fuzz_is_stun_udp/*) +fuzz_is_stun_udp_seed_corpus.zip: $(files_corpus_fuzz_is_stun_udp) + zip -j fuzz_is_stun_udp_seed_corpus.zip $(files_corpus_fuzz_is_stun_udp) + +files_corpus_fuzz_is_stun_tcp := $(wildcard corpus/fuzz_is_stun_tcp/*) +fuzz_is_stun_tcp_seed_corpus.zip: $(files_corpus_fuzz_is_stun_tcp) + zip -j fuzz_is_stun_tcp_seed_corpus.zip $(files_corpus_fuzz_is_stun_tcp) + files_corpus_fuzz_ds_patricia := $(wildcard corpus/fuzz_ds_patricia/*) fuzz_ds_patricia_seed_corpus.zip: $(files_corpus_fuzz_ds_patricia) zip -j fuzz_ds_patricia_seed_corpus.zip $(files_corpus_fuzz_ds_patricia) @@ -622,7 +655,7 @@ files_corpus_fuzz_ds_domain_classify := $(wildcard corpus/fuzz_ds_domain_classi fuzz_ds_domain_classify_seed_corpus.zip: $(files_corpus_fuzz_ds_domain_classify) zip -j fuzz_ds_domain_classify_seed_corpus.zip $(files_corpus_fuzz_ds_domain_classify) -corpus: fuzz_ndpi_reader_seed_corpus.zip fuzz_ndpi_reader_alloc_fail_seed_corpus.zip fuzz_ndpi_reader_payload_analyzer_seed_corpus.zip fuzz_quic_get_crypto_data_seed_corpus.zip fuzz_config_seed_corpus.zip fuzz_ds_patricia_seed_corpus.zip fuzz_ds_ahocorasick_seed_corpus.zip fuzz_alg_ses_des_seed_corpus.zip fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip fuzz_alg_bins_seed_corpus.zip fuzz_alg_hll_seed_corpus.zip fuzz_alg_jitter_seed_corpus.zip fuzz_ds_libcache_seed_corpus.zip fuzz_community_id_seed_corpus.zip fuzz_ds_tree_seed_corpus.zip fuzz_serialization_seed_corpus.zip fuzz_ds_ptree_seed_corpus.zip fuzz_alg_crc32_md5_seed_corpus.zip fuzz_alg_bytestream_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_readerutils_workflow_seed_corpus.zip fuzz_readerutils_parseprotolist_seed_corpus.zip fuzz_ds_bitmap64_seed_corpus.zip fuzz_ds_domain_classify_seed_corpus.zip +corpus: fuzz_ndpi_reader_seed_corpus.zip fuzz_ndpi_reader_alloc_fail_seed_corpus.zip fuzz_ndpi_reader_payload_analyzer_seed_corpus.zip fuzz_quic_get_crypto_data_seed_corpus.zip fuzz_config_seed_corpus.zip fuzz_ds_patricia_seed_corpus.zip fuzz_ds_ahocorasick_seed_corpus.zip fuzz_alg_ses_des_seed_corpus.zip fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip fuzz_alg_bins_seed_corpus.zip fuzz_alg_hll_seed_corpus.zip fuzz_alg_jitter_seed_corpus.zip fuzz_ds_libcache_seed_corpus.zip fuzz_community_id_seed_corpus.zip fuzz_ds_tree_seed_corpus.zip fuzz_serialization_seed_corpus.zip fuzz_ds_ptree_seed_corpus.zip fuzz_alg_crc32_md5_seed_corpus.zip fuzz_alg_bytestream_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_readerutils_workflow_seed_corpus.zip fuzz_readerutils_parseprotolist_seed_corpus.zip fuzz_ds_bitmap64_seed_corpus.zip fuzz_ds_domain_classify_seed_corpus.zip fuzz_is_stun_udp_seed_corpus.zip fuzz_is_stun_tcp_seed_corpus.zip cp corpus/fuzz_*seed_corpus.zip . #Create dictionaries exactly as expected by oss-fuzz. @@ -654,6 +687,8 @@ distdir: -o -path './corpus/fuzz_readerutils_workflow/*' \ -o -path './corpus/fuzz_readerutils_parseprotolist/*' \ -o -path './corpus/fuzz_config/*' \ + -o -path './corpus/fuzz_is_stun_udp/*' \ + -o -path './corpus/fuzz_is_stun_tcp/*' \ -o -path './corpus/fuzz_serialization/*' \ -o -path './corpus/fuzz_community_id/*' \ -o -path './corpus/fuzz_libinjection/*' \ diff --git a/fuzz/corpus/fuzz_is_stun_tcp/1 b/fuzz/corpus/fuzz_is_stun_tcp/1 new file mode 100644 index 0000000000000000000000000000000000000000..1f13a27a7353c6d37258ea1d5455c5afbef24398 GIT binary patch literal 28 jcmZQzX5dg1TH;g`+Cm literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/10 b/fuzz/corpus/fuzz_is_stun_tcp/10 new file mode 100644 index 0000000000000000000000000000000000000000..37e17ee5d9b0b2c87cd2ba2e1b5a75ce32008ad1 GIT binary patch literal 192 zcmZP&V_2gow8W{nRNL3WF~TCq+q;}Wh=GHFk;zKF-aUswm|?cqzyAy{(8tKY&;;c) z{rhXE9k9;NYT}ZmQMM8V8D)D!_!(6apU!^!{lSd6uV3oS0jiWZv+~S}1KJ1l4{#n3 zKEQQAgkcVYK7%O(7tkb!|BMVkN*t(68HjlqL>Povm^oNj7+IM)SXmi4*w`4E7#a8& YSQ(f=3b`48JO(bH^Vk?t63!qs3ck+43LzPpdCobRsd*&|hI&Q~ L8VoGn(GQXVFnAr= literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/20 b/fuzz/corpus/fuzz_is_stun_tcp/20 new file mode 100644 index 0000000000000000000000000000000000000000..da483546291987b8daaa8ddb2ba63f24fde4ebb4 GIT binary patch literal 106 zcmZR`U|?hjQ50I@^x1hz@U|JhH3N3Dy=7oy;M6bhG_VTEcTHgc0u=_9yzD>!8#Ea> zKwJivLl+xD7#NL!%!UF679hn8lo9zisXgmTZgpj?)9c>K6|BEL%NAX1&|qL;V))|@ E07l>+-~a#s literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/21 b/fuzz/corpus/fuzz_is_stun_tcp/21 new file mode 100644 index 0000000000000000000000000000000000000000..f1652efa47ae1c959e5131758e6fdc61dd20d9fb GIT binary patch literal 98 zcmZQbU}R+QQ50I@^x1hz@U|JhH3N3Dy=72f;9y{EPScJ*Rmi}`z^Py0Xhb=EMyjY&GUD|KOm L1_KMHY4|h%xSAf! literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/23 b/fuzz/corpus/fuzz_is_stun_tcp/23 new file mode 100644 index 0000000000000000000000000000000000000000..f1652efa47ae1c959e5131758e6fdc61dd20d9fb GIT binary patch literal 98 zcmZQbU}R+QQ50I@^x1hz@U|JhH3N3Dy=72f;9y{EPScJ*Rmi}`z^Py0XOHD$+zyc F)&R0^9!UTI literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/30 b/fuzz/corpus/fuzz_is_stun_tcp/30 new file mode 100644 index 0000000000000000000000000000000000000000..389c8a62002dfb959e530cfeaec9a41a20543a15 GIT binary patch literal 84 lcmZQzX5dg1TH;jTo#$#96p`*0nG?w%$-pAW00d;p0RYMm5K906 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/4 b/fuzz/corpus/fuzz_is_stun_tcp/4 new file mode 100644 index 0000000000000000000000000000000000000000..69e39309535e39fc91303027a49983fd1e1a2cde GIT binary patch literal 112 zcmZQ%W{6P~TH=&hWmZ&XlAl%JQ=Y{j#=ybA$Pgf3@1Db;0AgQX$YQmeg@KoWg@J)j zph1a2!a1`zIbXroIanbiBQwuACo?s#M8Qzc2&h_Qdh^0ZA`egRdd0EyNlLkDRbG4g NodyjC7G4Xv(*PxCAV~lK literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/5 b/fuzz/corpus/fuzz_is_stun_tcp/5 new file mode 100644 index 0000000000000000000000000000000000000000..80db8a33592577ee2de3933fae21fb7eb6c6618d GIT binary patch literal 112 zcmZSJV2Du^TH@rKU1gc!U2G7P7N*T0#K6J8$Ydp7@1DcJ#=xJPS)807l98F`oRgWF zSHi#`!oUd@(@W0JWdH(E1_2|BL=#JMLj#l4)TFc&;}oC?B3pc0E&IeAXO@PpHTuEV K(fBVue-Qu$haUa_ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_tcp/6 b/fuzz/corpus/fuzz_is_stun_tcp/6 new file mode 100644 index 0000000000000000000000000000000000000000..8e4e54bd3246ef612734ff5f69e457344c9f626a GIT binary patch literal 168 zcmZP&W0;~Sw8Y6cu{{1}z4T=CJ*mXBvJ~F{m;yFsLxFk6puxZr!mYIv0KCW_n$+CNBB!#f!mPXq ze+C7Rn(GT$td_F?St9H`mWh|dzf8!RsN1rMZ=#4<z<2LOQ5AaVcz literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/1 b/fuzz/corpus/fuzz_is_stun_udp/1 new file mode 100644 index 0000000000000000000000000000000000000000..e28a81bbfd46c62e832f9e7ac094b4188ca222dd GIT binary patch literal 20 bcmZQzWMEJfTH;jVSrr^rSn3)QoLUY5Enx+% literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/10 b/fuzz/corpus/fuzz_is_stun_udp/10 new file mode 100644 index 0000000000000000000000000000000000000000..5d5cd5f71d4c4431331e0bc6859cd8bad021fe45 GIT binary patch literal 140 zcmZP&XQ)sVTH;hP{m|x15BRS$O_n^&Ak2`!z{ubO5_dO9aWV6ZswfXOPhwzW;0&!a zD7DI{@GfCsU^o!Yz{0@H+|r=Qz>)CehD!fj&Ta-329~^f#s3T(3?k7&RTXh6yLFjv psB63VGR;`pcA)pGz$4{9~Wp4(FStME{Cz_iY0!AAA4+ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/12 b/fuzz/corpus/fuzz_is_stun_udp/12 new file mode 100644 index 0000000000000000000000000000000000000000..9b58715136ad56fe1aa6ec1ab0928f172a6963d5 GIT binary patch literal 100 zcmZP&V+c?bTH@pqY*AEcRGc2AukFhq#K6J8`1mQ)sqD=R!VC_Kj0`#;HSPu}E@qxl t73IO^Nel`|YB(4~DitlbQrk;k?-ee~6FKF){64dBN`nRii=EvkEdVi}9N7Q> literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/13 b/fuzz/corpus/fuzz_is_stun_udp/13 new file mode 100644 index 0000000000000000000000000000000000000000..7b60ce798699fdcc25f64c1dbc68322f32377a60 GIT binary patch literal 52 zcmZSNU{FvLTH=&eksg^D+0KV1}3;+NC literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/2 b/fuzz/corpus/fuzz_is_stun_udp/2 new file mode 100644 index 0000000000000000000000000000000000000000..e183759dbc28a93174b80fb2953354e5c44428c9 GIT binary patch literal 28 jcmZQzX5dg1TH=&qQ01QFpXVOo6OqIq$-pAWz`y_iRmBBt literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/3 b/fuzz/corpus/fuzz_is_stun_udp/3 new file mode 100644 index 0000000000000000000000000000000000000000..184e7c508709852120ac513c5e1488af29b23ee8 GIT binary patch literal 124 zcmZQ%WXMnyTH;jVSrr^rSn3)QoLbJHz#ziFH0unb@Osy}lHHC%7g8^}mH1{dFoMK) z-&0`ZX6Ld!DCDtFV2Y5shFpU-NSt??8iOQ*V?yLi1_mGl2pV)i;tT;8;u;Jrd8sS4 E0lrWh*Z=?k literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/31 b/fuzz/corpus/fuzz_is_stun_udp/31 new file mode 100644 index 0000000000000000000000000000000000000000..0365ecb771d8bf94f6d13dfe41a82705a6f6aa6e GIT binary patch literal 128 zcmZSJWXMqzTH@rLl9rSbWt5l}Ws$?c!@%Oe$iToL#K6J8`1mQ)sqD=RYz(4?W|ror zrlv+F7FI?ECMK3<#%4yAKxGUf3|z&T>3NAcdih1^K)xu0fTf9Hs)4zAnnj{Ta-zAZ eA{8;B;pxjD$-pAW00e9dqK0Oc=BB2mMkW?kMg}G(mS)Cg zMwTEs5eBZ}%=Em(9KHOabRb`pLBP_)Fx9}^Jk27}B016A)R2LLL1gDA&*a4hQLE1} P?f{8;B;pxjD#=ybAc*}t4lxHP_0)q$x)2uU$!s}gKg&L}> zAB8-K^G^(B;ALQ8U|@;>suZ!w>3RNd@#)T0_1SYwH}6zU*vyyTpuxbhXMNyZ0M)-9 A3jhEB literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/7 b/fuzz/corpus/fuzz_is_stun_udp/7 new file mode 100644 index 0000000000000000000000000000000000000000..0d758aaf24930b8dc345d81c5478741493be6fbe GIT binary patch literal 120 zcmZSJU`SCETH=(F>gH3CnO>aglA6LG#K6J8cxwvNsqD=RYz(4?W|rorrlv+F7FI?E zCMK3<#%4yA3_u{lz*U@?o|l-TmtT|)StME{Cz_iY0!Hq)$ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/8 b/fuzz/corpus/fuzz_is_stun_udp/8 new file mode 100644 index 0000000000000000000000000000000000000000..8c8015e465525ac73207f407e5a9666c50a83e18 GIT binary patch literal 132 zcmZP&V<=D*TH;ia>XaO5km`|LV3flk#K6J8cxwvNsqD=R!VC!vj0`>?HBOo4UP%?6 zg@uNt0Ss&moEa6~C03!82Bi!P3wzU*~iV9TZ7gt|#(RfnTdgH3CnO>aglA6N6!5}jKYRN~l=+-uK-h*E0i`!?0virWTH=(N@s2l~2i_ZkCn(JhEIzt+TE?%Fx8Geews>&) zEqf=&wbvJ48qeUBDvC~O>GUc0uwHV@#Ua2basAGx zd;CBalf<4I8$U8}ad0q7+&Z&l4L=tb2P05^!L?_1dBJQZiOIJYUuOZTV3Jtf_h2zd z1rt!kowwWixWQ~DiJ704UEyL7W8h$5)M=^FzP}L25~&GHxL25wZ{ck6zW!5(f7ynq GB1!F0YfB*n_i`MyKb_o|xFaZSV1y}NxF7#TPi7_W1!5wL#%0HLS~EC2ui literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/d b/fuzz/corpus/fuzz_is_stun_udp/d new file mode 100644 index 0000000000000000000000000000000000000000..21de918691c8117f7fa87ce69526a2718303e86d GIT binary patch literal 68 zcmZQ%W-w3`TH=(N@s2l~=f?+ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/e b/fuzz/corpus/fuzz_is_stun_udp/e new file mode 100644 index 0000000000000000000000000000000000000000..d145e02b1dccfec98c1650aa18bfbd373e726deb GIT binary patch literal 20 bcmd;JWMEJfTH=(N@s2l~T3C~Upz!flT&CrXkX7#OB;GIJHmTHgI^^vA}d!F-CiD%0gDH`?y! zeNkU5P=3%;=Z+fcT0kvX`EiJC$~ejReepyA}f=`+*YOSFI#SKN!~av{PKuf zA@fp(RP`Hd#)lV8DzVfy_{L#e^f=C7BO9~B294y~SNeE#no~7RllgWQhQGOc?#h!b zyI(s?D{nPU)%^7-axHZFD!Mu~kZHtTb7aWDd KO8Tx`c@qFGZinIk literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/q1 b/fuzz/corpus/fuzz_is_stun_udp/q1 new file mode 100644 index 0000000000000000000000000000000000000000..eb71bd82b68a1b64fe82dddd0b3584c23346512a GIT binary patch literal 372 zcmZQzW=v2NTH>T3C~Upz!flT&CrVNr7#OB;GIJHmTHgI^^vA}d!F-CiD%0gDH`?y! zeNkU5P=3%;=Z+fcT0kvX`EiJC$~ejReepyA}f=`+*YOSFI#SKN!~av{PKuf zA@fp(RP`Hd#)lV8DzVfy_{L#e^f=C7BO9~B294y~SNeE#no~7RllgWQhQGOc?#h!b zyI(s?D{nPU)%^7-axHZFD!Mu~kZHtTb7aWDd@qLm`nPa-!zH12C;F-Y#DQsyYjr!F42C50!fXrekaVQqyXx9Nn~3K`hP6Y0c8 zaRa3QWhdAMGsB{ibU7<9_6Rd_<6bba1_MB_C}Z2yjtne=Whpgd4!Lnx?A^}PfzYNQdRf5$ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/q2 b/fuzz/corpus/fuzz_is_stun_udp/q2 new file mode 100644 index 0000000000000000000000000000000000000000..c69a11beccf020552970604fb3d685dfb8da72fe GIT binary patch literal 68 zcmZQ%W-w3`TH>T3C~Upz!flT&CrXkT6c{)d7_TPR81l|^U;?rk7`vq$4>|%_BCO}a WKizLy%4~Qtmfv%wQjKWmN*Mry^b|$_ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/fuzz_is_stun_udp/q3 b/fuzz/corpus/fuzz_is_stun_udp/q3 new file mode 100644 index 0000000000000000000000000000000000000000..5cb0447d17fcbb45a035b44dd41a14ef15cbb880 GIT binary patch literal 68 zcmZQ%W-w3`TH>T3C~Upz!flT&CrVNn6c{)d7_TPR81l|^U;?rk7`vq$4>|!^BAotx Wi?5#SX?ze9cqmiP^&a=F;Nt*{(iR2) literal 0 HcmV?d00001 diff --git a/fuzz/fuzz_is_stun.c b/fuzz/fuzz_is_stun.c new file mode 100644 index 000000000000..b8b80c097153 --- /dev/null +++ b/fuzz/fuzz_is_stun.c @@ -0,0 +1,38 @@ +#define NDPI_LIB_COMPILATION + +#include "ndpi_api.h" +#include "fuzz_common_code.h" + +static struct ndpi_detection_module_struct *ndpi_struct = NULL; +static struct ndpi_flow_struct ndpi_flow; +#ifdef STUN_TCP +struct ndpi_tcphdr tcph; +#else +struct ndpi_udphdr udph; +#endif + +extern int is_stun(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow, + u_int16_t *app_proto); + + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + u_int16_t app_proto; /* unused */ + struct ndpi_packet_struct *packet; + + if (ndpi_struct == NULL) { + fuzz_init_detection_module(&ndpi_struct); + } + + packet = &ndpi_struct->packet; + packet->payload = data; + packet->payload_packet_len = size; +#ifndef STUN_TCP + packet->udp = &udph; +#else + packet->tcp = &tcph; +#endif + + is_stun(ndpi_struct, &ndpi_flow, &app_proto); + return 0; +} diff --git a/src/include/ndpi_main.h b/src/include/ndpi_main.h index b4ef20f5fef1..f52d9c959c93 100644 --- a/src/include/ndpi_main.h +++ b/src/include/ndpi_main.h @@ -84,6 +84,9 @@ extern "C" { u_int16_t lower_detected_protocol, ndpi_confidence_t confidence); + void ndpi_reset_detected_protocol(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow); + void ndpi_set_detected_protocol_keeping_master(struct ndpi_detection_module_struct *ndpi_str, struct ndpi_flow_struct *flow, u_int16_t detected_protocol, diff --git a/src/include/ndpi_protocol_ids.h b/src/include/ndpi_protocol_ids.h index 278a6714d79b..8a9e093db8d0 100644 --- a/src/include/ndpi_protocol_ids.h +++ b/src/include/ndpi_protocol_ids.h @@ -383,6 +383,7 @@ typedef enum { NDPI_PROTOCOL_CAN = 352, NDPI_PROTOCOL_PROTOBUF = 353, NDPI_PROTOCOL_ETHEREUM = 354, + NDPI_PROTOCOL_TELEGRAM_VOIP = 355, #ifdef CUSTOM_NDPI_PROTOCOLS #include "../../../nDPI-custom/custom_ndpi_protocol_ids.h" diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index 51328943f47a..2992bca7c20c 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -1528,7 +1528,7 @@ struct ndpi_flow_struct { } kerberos_buf; struct { - u_int8_t num_pkts, num_binding_requests, num_processed_pkts, maybe_dtls; + u_int8_t maybe_dtls; } stun; struct { diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index b950dba1cede..9f909c7300ae 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -2175,6 +2175,11 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp "ETHEREUM", NDPI_PROTOCOL_CATEGORY_CRYPTO_CURRENCY, ndpi_build_default_ports(ports_a, 30303, 0, 0, 0, 0) /* TCP */, ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */); + ndpi_set_proto_defaults(ndpi_str, 0 /* encrypted */, 1 /* app proto */, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_TELEGRAM_VOIP, + "TelegramVoip", NDPI_PROTOCOL_CATEGORY_VOIP, + ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */, + ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */); + #ifdef CUSTOM_NDPI_PROTOCOLS #include "../../../nDPI-custom/custom_ndpi_main.c" @@ -6927,14 +6932,6 @@ ndpi_protocol ndpi_detection_giveup(struct ndpi_detection_module_struct *ndpi_st if(ret.app_protocol != NDPI_PROTOCOL_UNKNOWN) return(ret); - if((flow->guessed_protocol_id == NDPI_PROTOCOL_STUN) || - (enable_guess && - flow->stun.num_binding_requests > 0 && - flow->stun.num_processed_pkts > 0)) { - ndpi_set_detected_protocol(ndpi_str, flow, NDPI_PROTOCOL_STUN, NDPI_PROTOCOL_UNKNOWN, NDPI_CONFIDENCE_DPI_PARTIAL); - ret.app_protocol = flow->detected_protocol_stack[0]; - } - /* Check some caches */ /* Does it looks like BitTorrent? */ @@ -8329,6 +8326,14 @@ void ndpi_set_detected_protocol(struct ndpi_detection_module_struct *ndpi_str, s /* ********************************************************************************* */ +void ndpi_reset_detected_protocol(struct ndpi_detection_module_struct *ndpi_str, struct ndpi_flow_struct *flow) { + flow->detected_protocol_stack[1] = NDPI_PROTOCOL_UNKNOWN; + flow->detected_protocol_stack[0] = NDPI_PROTOCOL_UNKNOWN; + flow->confidence = NDPI_CONFIDENCE_UNKNOWN; +} + +/* ********************************************************************************* */ + u_int16_t ndpi_get_flow_masterprotocol(struct ndpi_detection_module_struct *ndpi_str, struct ndpi_flow_struct *flow) { return(flow->detected_protocol_stack[1]); } diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c index 8bd7393d3dc5..76d88cf3bfbb 100644 --- a/src/lib/ndpi_utils.c +++ b/src/lib/ndpi_utils.c @@ -1373,16 +1373,6 @@ int ndpi_dpi2json(struct ndpi_detection_module_struct *ndpi_struct, ndpi_serialize_end_of_block(serializer); break; - case NDPI_PROTOCOL_STUN: - ndpi_serialize_start_of_block(serializer, "stun"); - ndpi_serialize_string_uint32(serializer, "num_pkts", flow->stun.num_pkts); - ndpi_serialize_string_uint32(serializer, "num_binding_requests", - flow->stun.num_binding_requests); - ndpi_serialize_string_uint32(serializer, "num_processed_pkts", - flow->stun.num_processed_pkts); - ndpi_serialize_end_of_block(serializer); - break; - case NDPI_PROTOCOL_TELNET: ndpi_serialize_start_of_block(serializer, "telnet"); ndpi_serialize_string_string(serializer, "username", flow->protos.telnet.username); diff --git a/src/lib/protocols/rtp.c b/src/lib/protocols/rtp.c index 9d48aecb1f58..1cc112be4721 100644 --- a/src/lib/protocols/rtp.c +++ b/src/lib/protocols/rtp.c @@ -282,19 +282,10 @@ static void ndpi_rtp_search(struct ndpi_detection_module_struct *ndpi_struct, } else { rtp_get_stream_type(payload[1] & 0x7F, &flow->flow_multimedia_type); - /* Previous pkts were STUN */ - if(flow->stun.num_binding_requests > 0 || - flow->stun.num_processed_pkts > 0) { - NDPI_LOG_INFO(ndpi_struct, "Found RTP (previous traffic was STUN)\n"); - ndpi_set_detected_protocol(ndpi_struct, flow, - NDPI_PROTOCOL_RTP, NDPI_PROTOCOL_STUN, - NDPI_CONFIDENCE_DPI); - } else { - NDPI_LOG_INFO(ndpi_struct, "Found RTP\n"); - ndpi_set_detected_protocol(ndpi_struct, flow, - NDPI_PROTOCOL_UNKNOWN, NDPI_PROTOCOL_RTP, - NDPI_CONFIDENCE_DPI); - } + NDPI_LOG_INFO(ndpi_struct, "Found RTP\n"); + ndpi_set_detected_protocol(ndpi_struct, flow, + NDPI_PROTOCOL_UNKNOWN, NDPI_PROTOCOL_RTP, + NDPI_CONFIDENCE_DPI); } return; } diff --git a/src/lib/protocols/stun.c b/src/lib/protocols/stun.c index 2914a0814ec8..0f3810b81078 100644 --- a/src/lib/protocols/stun.c +++ b/src/lib/protocols/stun.c @@ -27,12 +27,8 @@ #include "ndpi_api.h" -#define MAX_NUM_STUN_PKTS 3 - -// #define DEBUG_STUN 1 // #define DEBUG_LRU 1 // #define DEBUG_ZOOM_LRU 1 -// #define DEBUG_MONITORING 1 #define STUN_HDR_LEN 20 /* STUN message header length, Classic-STUN (RFC 3489) and STUN (RFC 8489) both */ @@ -43,17 +39,323 @@ extern int is_rtp_or_rtcp(struct ndpi_detection_module_struct *ndpi_struct, extern u_int8_t rtp_get_stream_type(u_int8_t payloadType, ndpi_multimedia_flow_type *s_type); extern int is_dtls(const u_int8_t *buf, u_int32_t buf_len, u_int32_t *block_len); -static int stun_monitoring(struct ndpi_detection_module_struct *ndpi_struct, - struct ndpi_flow_struct *flow) +static u_int32_t get_stun_lru_key(struct ndpi_flow_struct *flow, u_int8_t rev); +static u_int32_t get_stun_lru_key_raw4(u_int32_t ip, u_int16_t port); +static void ndpi_int_stun_add_connection(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow, + u_int app_proto); + + +static u_int16_t search_into_cache(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow) +{ + u_int16_t proto; + u_int32_t key; + int rc; + + if(ndpi_struct->stun_cache) { + key = get_stun_lru_key(flow, 0); + rc = ndpi_lru_find_cache(ndpi_struct->stun_cache, key, &proto, + 0 /* Don't remove it as it can be used for other connections */, + ndpi_get_current_time(flow)); +#ifdef DEBUG_LRU + printf("[LRU] Searching %u\n", key); +#endif + + if(!rc) { + key = get_stun_lru_key(flow, 1); + rc = ndpi_lru_find_cache(ndpi_struct->stun_cache, key, &proto, + 0 /* Don't remove it as it can be used for other connections */, + ndpi_get_current_time(flow)); +#ifdef DEBUG_LRU + printf("[LRU] Searching %u\n", key); +#endif + } + + if(rc) { +#ifdef DEBUG_LRU + printf("[LRU] Cache FOUND %u / %u\n", key, proto); +#endif + + return proto; + } else { +#ifdef DEBUG_LRU + printf("[LRU] NOT FOUND %u\n", key); +#endif + } + } else { +#ifdef DEBUG_LRU + printf("[LRU] NO/EMPTY CACHE\n"); +#endif + } + return NDPI_PROTOCOL_UNKNOWN; +} + +static void add_to_caches(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow, + u_int16_t app_proto) +{ + u_int32_t key, key_rev; + + if(ndpi_struct->stun_cache && + app_proto != NDPI_PROTOCOL_STUN && + app_proto != NDPI_PROTOCOL_UNKNOWN) { + /* No sense to add STUN, but only subprotocols */ + + key = get_stun_lru_key(flow, 0); + ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key, app_proto, ndpi_get_current_time(flow)); + key_rev = get_stun_lru_key(flow, 1); + ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key_rev, app_proto, ndpi_get_current_time(flow)); + +#ifdef DEBUG_LRU + printf("[LRU] ADDING %u 0x%x app %u [%u -> %u]\n", key, key_rev, app_proto, + ntohs(flow->c_port), ntohs(flow->s_port)); +#endif + } + + /* TODO: extend to other protocols? */ + if(ndpi_struct->stun_zoom_cache && + app_proto == NDPI_PROTOCOL_ZOOM && + flow->l4_proto == IPPROTO_UDP) { + key = get_stun_lru_key(flow, 0); /* Src */ + ndpi_lru_add_to_cache(ndpi_struct->stun_zoom_cache, key, + 0 /* dummy */, ndpi_get_current_time(flow)); + +#ifdef DEBUG_ZOOM_LRU + printf("[LRU ZOOM] ADDING %u [src_port %u]\n", key, ntohs(flow->c_port)); +#endif + } +} + +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +static +#endif +int is_stun(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow, + u_int16_t *app_proto) +{ + struct ndpi_packet_struct *packet = &ndpi_struct->packet; + u_int16_t msg_type, msg_len; + int off; + const u_int8_t *payload = packet->payload; + u_int16_t payload_length = packet->payload_packet_len; + u_int32_t magic_cookie; + + if(payload_length < STUN_HDR_LEN) { + return 0; + } + + /* Some really old/legacy stuff */ + if(strncmp((const char *)payload, "RSP/", 4) == 0 && + strncmp((const char *)&payload[7], " STUN_", 6) == 0) { + NDPI_LOG_DBG(ndpi_struct, "found old/legacy stun in rsp\n"); + return 1; /* No real metadata */ + } + + /* STUN may be encapsulated in TCP packets with a special TCP framing described in RFC 4571 */ + if(packet->tcp && + payload_length >= STUN_HDR_LEN + 2 && + /* TODO: multiple STUN messagges */ + ((ntohs(get_u_int16_t(payload, 0)) + 2) == payload_length)) { + payload += 2; + payload_length -=2; + } + + msg_type = ntohs(*((u_int16_t *)&payload[0])); + msg_len = ntohs(*((u_int16_t *)&payload[2])); + magic_cookie = ntohl(*((u_int32_t *)&payload[4])); + + /* No magic_cookie on classic-stun */ + /* Let's hope that we don't have anymore classic-stun over TCP */ + if(packet->tcp && magic_cookie != 0x2112A442) { + return 0; + } + + NDPI_LOG_DBG2(ndpi_struct, "msg_type = %04X msg_len = %d\n", msg_type, msg_len); + + /* With tcp, we might have multiple msg in the same TCP pkt. + Parse only the first one. TODO */ + if(packet->tcp) { + if(msg_len + STUN_HDR_LEN > payload_length) + return 0; + payload_length = msg_len + STUN_HDR_LEN; + } + + if(msg_type == 0 || (msg_len + STUN_HDR_LEN != payload_length)) { + NDPI_LOG_DBG(ndpi_struct, "Invalid msg_type = %04X or len %d %d\n", + msg_type, msg_len, payload_length); + return 0; + } + + /* https://www.iana.org/assignments/stun-parameters/stun-parameters.xhtml */ + if(((msg_type & 0x3EEF) > 0x000B) && + msg_type != 0x0800 && msg_type != 0x0801 && msg_type != 0x0802) { + NDPI_LOG_DBG(ndpi_struct, "Invalid msg_type = %04X\n", msg_type); + return 0; + } + + if(magic_cookie != 0x2112A442) { + /* Some heuristic to detect classic-stun: let's see if attributes list seems ok */ + off = STUN_HDR_LEN; + while(off + 4 < payload_length) { + u_int16_t len = ntohs(*((u_int16_t *)&payload[off + 2])); + u_int16_t real_len = (len + 3) & 0xFFFFFFFC; + + off += 4 + real_len; + } + if(off != payload_length) { + NDPI_LOG_DBG(ndpi_struct, "No classic-stun %d/%d\n", off, payload_length); + return 0; + } + } + + /* STUN */ + + if(msg_type == 0x0800 || msg_type == 0x0801 || msg_type == 0x0802) { + *app_proto = NDPI_PROTOCOL_WHATSAPP_CALL; + return 1; + } + + off = STUN_HDR_LEN; + while(off + 4 < payload_length) { + u_int16_t attribute = ntohs(*((u_int16_t *)&payload[off])); + u_int16_t len = ntohs(*((u_int16_t *)&payload[off + 2])); + u_int16_t real_len = (len + 3) & 0xFFFFFFFC; + + NDPI_LOG_DBG(ndpi_struct, "Attribute 0x%x (%d/%d)\n", attribute, len, real_len); + + switch(attribute) { + case 0x0012: /* XOR-PEER-ADDRESS */ + if(off + 12 < payload_length && + len == 8 && payload[off + 5] == 0x01) { /* TODO: ipv6 */ + u_int16_t port; + u_int32_t ip; +#ifdef NDPI_ENABLE_DEBUG_MESSAGES + char buf[128]; +#endif + + port = ntohs(*((u_int16_t *)&payload[off + 6])) ^ (magic_cookie >> 16); + ip = *((u_int32_t *)&payload[off + 8]) ^ htonl(magic_cookie); + + NDPI_LOG_DBG(ndpi_struct, "Peer %s:%d [proto %d]\n", + inet_ntop(AF_INET, &ip, buf, sizeof(buf)), port, + flow->detected_protocol_stack[0]); + + if(1 /* TODO: enable/disable */ && + ndpi_struct->stun_cache) { + u_int32_t key = get_stun_lru_key_raw4(ip, port); + + ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key, + flow->detected_protocol_stack[0], + ndpi_get_current_time(flow)); +#ifdef DEBUG_LRU + printf("[LRU] Add peer %u %d\n", key, flow->detected_protocol_stack[0]); +#endif + } + } + break; + + case 0x0101: + case 0x0103: + *app_proto = NDPI_PROTOCOL_ZOOM; + return 1; + + case 0x4000: + case 0x4001: + case 0x4002: + case 0x4003: + case 0x4004: + case 0x4007: + /* These are the only messages apparently whatsapp voice can use */ + *app_proto = NDPI_PROTOCOL_WHATSAPP_CALL; + return 1; + + case 0x0014: /* Realm */ + if(flow->host_server_name[0] == '\0') { + ndpi_hostname_sni_set(flow, payload + off + 4, ndpi_min(len, payload_length - off - 4)); + NDPI_LOG_DBG(ndpi_struct, "Realm [%s]\n", flow->host_server_name); + + if(strstr(flow->host_server_name, "google.com") != NULL) { + *app_proto = NDPI_PROTOCOL_HANGOUT_DUO; + return 1; + } else if(strstr(flow->host_server_name, "whispersystems.org") != NULL || + strstr(flow->host_server_name, "signal.org") != NULL) { + *app_proto = NDPI_PROTOCOL_SIGNAL_VOIP; + return 1; + } else if(strstr(flow->host_server_name, "facebook") != NULL) { + *app_proto = NDPI_PROTOCOL_FACEBOOK_VOIP; + return 1; + } else if(strstr(flow->host_server_name, "stripcdn.com") != NULL) { + *app_proto = NDPI_PROTOCOL_ADULT_CONTENT; + return 1; + } else if(strstr(flow->host_server_name, "telegram") != NULL) { + *app_proto = NDPI_PROTOCOL_TELEGRAM_VOIP; + return 1; + } + } + break; + + /* Proprietary fields found on skype calls */ + case 0x8054: /* Candidate Identifier: Either skype for business or "normal" skype with multiparty call */ + case 0x24DF: + case 0x3802: + case 0x8036: + case 0x8095: /* MS-Multiplexed-TURN-Session-ID */ + case 0x0800: + case 0x8006: + case 0x8070: /* MS Implementation Version */ + case 0x8055: /* MS Service Quality */ + *app_proto = NDPI_PROTOCOL_SKYPE_TEAMS_CALL; + return 1; + + case 0xFF03: + *app_proto = NDPI_PROTOCOL_HANGOUT_DUO; + return 1; + + default: + NDPI_LOG_DBG2(ndpi_struct, "Unknown attribute %04X\n", attribute); + break; + } + + off += 4 + real_len; + } + + return 1; +} + +static int keep_extra_dissection(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow) +{ + if(flow->detected_protocol_stack[1] == NDPI_PROTOCOL_UNKNOWN /* No subclassification */) + return 1; + + /* We have a sub-classification */ + + if((ndpi_struct->monitoring_stun_flags & NDPI_MONITORING_STUN_SUBCLASSIFIED) && + flow->detected_protocol_stack[1] != NDPI_PROTOCOL_RTP) + return 1; + + /* Looking for XOR-PEER-ADDRESS metadata; TODO: other protocols? */ + if(flow->detected_protocol_stack[0] == NDPI_PROTOCOL_TELEGRAM_VOIP) + return 1; + return 0; +} + +static int stun_search_again(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow) { struct ndpi_packet_struct *packet = &ndpi_struct->packet; int rtp_rtcp; u_int8_t first_byte; + u_int16_t app_proto = NDPI_PROTOCOL_UNKNOWN; + u_int32_t unused; -#ifdef DEBUG_MONITORING - printf("[STUN-MON] Packet counter %d protos %d/%d\n", flow->packet_counter, - flow->detected_protocol_stack[0], flow->detected_protocol_stack[1]); -#endif + NDPI_LOG_DBG2(ndpi_struct, "Packet counter %d protos %d/%d\n", flow->packet_counter, + flow->detected_protocol_stack[0], flow->detected_protocol_stack[1]); + + /* TODO: check TCP support. We need to pay some attention because: + * multiple msg in the same TCP segment + * same msg split across multiple segments */ if(packet->payload_packet_len == 0) return 1; @@ -62,33 +364,45 @@ static int stun_monitoring(struct ndpi_detection_module_struct *ndpi_struct, /* draft-ietf-avtcore-rfc7983bis */ if(first_byte <= 3) { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] Still STUN\n"); -#endif - return 1; + NDPI_LOG_DBG(ndpi_struct, "Still STUN\n"); + if(is_stun(ndpi_struct, flow, &app_proto) /* To extract other metadata */ && + flow->detected_protocol_stack[1] == NDPI_PROTOCOL_UNKNOWN /* No previous subclassification */) { + ndpi_int_stun_add_connection(ndpi_struct, flow, app_proto); + /* TODO */ + ndpi_protocol ret = { NDPI_PROTOCOL_STUN, app_proto, NDPI_PROTOCOL_UNKNOWN /* unused */, NDPI_PROTOCOL_CATEGORY_UNSPECIFIED, NULL}; + flow->category = ndpi_get_proto_category(ndpi_struct, ret); + } } else if(first_byte <= 19) { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] DROP or ZRTP range. Unexpected but keep looking\n"); -#endif - return 1; + NDPI_LOG_DBG(ndpi_struct, "DROP or ZRTP range. Unexpected\n"); } else if(first_byte <= 63) { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] DTLS\n"); -#endif - /* TODO */ - return 1; + NDPI_LOG_DBG(ndpi_struct, "DTLS\n"); + if(is_dtls(packet->payload, packet->payload_packet_len, &unused) && + flow->detected_protocol_stack[1] == NDPI_PROTOCOL_UNKNOWN /* No previous subclassification */) { + /* Switching to TLS dissector is tricky, because we are calling one dissector + from another one, and that is not a common operation... + Additionally: + * at that point protocol stack is already set to STUN + * we have room for only two protocols in flow->detected_protocol_stack[] so + we can't have something like STUN/DTLS/SNAPCHAT_CALL + * the easiest (!?) solution is to remove STUN, and let TLS dissector to set both + master (i.e. DTLS) and subprotocol (if any) */ + if(ndpi_struct->opportunistic_tls_stun_enabled) { + /* TODO: right way? It is a bit scary... do we need to reset something else too? */ + ndpi_reset_detected_protocol(ndpi_struct, flow); + ndpi_int_change_category(ndpi_struct, flow, NDPI_PROTOCOL_CATEGORY_UNSPECIFIED); + + flow->stun.maybe_dtls = 1; + NDPI_LOG_DBG(ndpi_struct, "Switch to TLS\n"); + switch_to_tls(ndpi_struct, flow); + } + } } else if(first_byte <= 127) { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] QUIC or TURN range. Unexpected but keep looking\n"); -#endif - return 1; + NDPI_LOG_DBG(ndpi_struct, "QUIC or TURN range. Unexpected\n"); } else if(first_byte <= 191) { rtp_rtcp = is_rtp_or_rtcp(ndpi_struct, flow); if(rtp_rtcp == IS_RTP) { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] RTP (dir %d)\n", packet->packet_direction); -#endif + NDPI_LOG_DBG(ndpi_struct, "RTP (dir %d)\n", packet->packet_direction); NDPI_LOG_INFO(ndpi_struct, "Found RTP over STUN\n"); rtp_get_stream_type(packet->payload[1] & 0x7F, &flow->flow_multimedia_type); @@ -106,27 +420,19 @@ static int stun_monitoring(struct ndpi_detection_module_struct *ndpi_struct, } return 0; /* Stop */ } else if(rtp_rtcp == IS_RTCP) { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] RTCP\n"); -#endif - return 1; + NDPI_LOG_DBG(ndpi_struct, "RTCP\n"); } else { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] Unexpected\n"); -#endif - return 1; + NDPI_LOG_DBG(ndpi_struct, "Unexpected\n"); } } else { -#ifdef DEBUG_MONITORING - printf("[STUN-MON] QUIC range. Unexpected but keep looking\n"); -#endif - return 1; + NDPI_LOG_DBG(ndpi_struct, "QUIC range. Unexpected\n"); } + return keep_extra_dissection(ndpi_struct, flow); } /* ************************************************************ */ -u_int32_t get_stun_lru_key(struct ndpi_flow_struct *flow, u_int8_t rev) { +static u_int32_t get_stun_lru_key(struct ndpi_flow_struct *flow, u_int8_t rev) { if(rev) { if(flow->is_ipv6) return ndpi_quick_hash(flow->s_address.v6, 16) + ntohs(flow->s_port); @@ -142,6 +448,12 @@ u_int32_t get_stun_lru_key(struct ndpi_flow_struct *flow, u_int8_t rev) { /* ************************************************************ */ +static u_int32_t get_stun_lru_key_raw4(u_int32_t ip, u_int16_t port_host_order) { + return ntohl(ip) + port_host_order; +} + +/* ************************************************************ */ + int stun_search_into_zoom_cache(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { @@ -205,387 +517,52 @@ static void ndpi_int_stun_add_connection(struct ndpi_detection_module_struct *nd } } - if(ndpi_struct->stun_cache - && (app_proto != NDPI_PROTOCOL_UNKNOWN) - ) /* Cache flow sender info */ { - u_int32_t key = get_stun_lru_key(flow, 0); - u_int16_t cached_proto; + if(app_proto == NDPI_PROTOCOL_UNKNOWN) { + app_proto = search_into_cache(ndpi_struct, flow); + if(app_proto != NDPI_PROTOCOL_UNKNOWN) + confidence = NDPI_CONFIDENCE_DPI_CACHE; + } + if(app_proto != NDPI_PROTOCOL_UNKNOWN) + add_to_caches(ndpi_struct, flow, app_proto); - if(ndpi_lru_find_cache(ndpi_struct->stun_cache, key, - &cached_proto, 0 /* Don't remove it as it can be used for other connections */, - ndpi_get_current_time(flow))) { -#ifdef DEBUG_LRU - printf("[LRU] FOUND %u / %u: no need to cache %u.%u\n", key, cached_proto, proto, app_proto); -#endif - if(app_proto != cached_proto) { - app_proto = cached_proto; - confidence = NDPI_CONFIDENCE_DPI_CACHE; - } - } else { - u_int32_t key_rev = get_stun_lru_key(flow, 1); + if(flow->detected_protocol_stack[0] == NDPI_PROTOCOL_UNKNOWN || + app_proto != NDPI_PROTOCOL_UNKNOWN) { + NDPI_LOG_DBG(ndpi_struct, "Setting %d\n", app_proto); + ndpi_set_detected_protocol(ndpi_struct, flow, app_proto, NDPI_PROTOCOL_STUN, confidence); + } - if(ndpi_lru_find_cache(ndpi_struct->stun_cache, key_rev, - &cached_proto, 0 /* Don't remove it as it can be used for other connections */, - ndpi_get_current_time(flow))) { -#ifdef DEBUG_LRU - printf("[LRU] FOUND %u / %u: no need to cache %u.%u\n", key_rev, cached_proto, proto, app_proto); -#endif - if(app_proto != cached_proto) { - app_proto = cached_proto; - confidence = NDPI_CONFIDENCE_DPI_CACHE; - } + /* This is quite complex. We want extra dissection for: + * sub-classification + * metadata extraction in general + * Telegram: we need more packets to find all XOR-PEER-ADDRESS attributes + * monitoring, i.e. looking for RTP + And all these cases might overlap... + */ + if(!flow->extra_packets_func) { + if(flow->detected_protocol_stack[1] == NDPI_PROTOCOL_UNKNOWN /* No-subclassification */ || + flow->detected_protocol_stack[0] == NDPI_PROTOCOL_TELEGRAM_VOIP /* Metadata. TODO: other protocols? */ || + (ndpi_struct->monitoring_stun_pkts_to_process > 0 && + (ndpi_struct->monitoring_stun_flags & NDPI_MONITORING_STUN_SUBCLASSIFIED))) { + NDPI_LOG_DBG(ndpi_struct, "Enabling extra dissection\n"); + + if(flow->detected_protocol_stack[0] == NDPI_PROTOCOL_TELEGRAM_VOIP) { + flow->max_extra_packets_to_check = 10; /* Looking for metadata. There are no really RTP packets + in Telegram flows, so no need to enable monitoring for them */ } else { - if(app_proto != NDPI_PROTOCOL_STUN) { - /* No sense to add STUN, but only subprotocols */ - -#ifdef DEBUG_LRU - printf("[LRU] ADDING %u / %u.%u [%u -> %u]\n", key, proto, app_proto, - ntohs(packet->udp->source), ntohs(packet->udp->dest)); -#endif - - ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key, app_proto, ndpi_get_current_time(flow)); - ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key_rev, app_proto, ndpi_get_current_time(flow)); - } + flow->max_extra_packets_to_check = ndpi_max(4, ndpi_struct->monitoring_stun_pkts_to_process); + flow->extra_packets_func = stun_search_again; } } - } - - /* TODO: extend to other protocols? */ - if(ndpi_struct->stun_zoom_cache && - app_proto == NDPI_PROTOCOL_ZOOM && - flow->l4_proto == IPPROTO_UDP) { - u_int32_t key = get_stun_lru_key(flow, 0); /* Src */ -#ifdef DEBUG_ZOOM_LRU - printf("[LRU ZOOM] ADDING %u [src_port %u]\n", key, ntohs(flow->c_port)); -#endif - ndpi_lru_add_to_cache(ndpi_struct->stun_zoom_cache, key, - 0 /* dummy */, ndpi_get_current_time(flow)); - } - - -#ifdef DEBUG_STUN - printf("[STUN] Setting %d\n", app_proto); -#endif - ndpi_set_detected_protocol(ndpi_struct, flow, app_proto, NDPI_PROTOCOL_STUN, confidence); - - if(ndpi_struct->monitoring_stun_pkts_to_process > 0 && - flow->l4_proto == IPPROTO_UDP /* TODO: support TCP. We need to pay some attention because: - * multiple msg in the same TCP segment - * same msg split across multiple segments */) { - if((ndpi_struct->monitoring_stun_flags & NDPI_MONITORING_STUN_SUBCLASSIFIED) || - flow->detected_protocol_stack[1] == NDPI_PROTOCOL_UNKNOWN /* No-subclassification */) { - flow->max_extra_packets_to_check = ndpi_struct->monitoring_stun_pkts_to_process; - flow->extra_packets_func = stun_monitoring; + } else { + /* Already in extra dissection, but we just sub-classied */ + if(flow->detected_protocol_stack[0] == NDPI_PROTOCOL_TELEGRAM_VOIP) { + flow->max_extra_packets_to_check = 10; } } } -typedef enum { - NDPI_IS_STUN, - NDPI_IS_NOT_STUN -} ndpi_int_stun_t; - /* ************************************************************ */ -static ndpi_int_stun_t ndpi_int_check_stun(struct ndpi_detection_module_struct *ndpi_struct, - struct ndpi_flow_struct *flow, - const u_int8_t * payload, - u_int16_t payload_length, - u_int16_t *app_proto) { - struct ndpi_packet_struct *packet = &ndpi_struct->packet; - u_int16_t msg_type, msg_len; - u_int32_t unused; - int rc; - - if(packet->iph && - ((packet->iph->daddr == 0xFFFFFFFF /* 255.255.255.255 */) || - ((ntohl(packet->iph->daddr) & 0xF0000000) == 0xE0000000 /* A multicast address */))) { - NDPI_EXCLUDE_PROTO(ndpi_struct, flow); - return(NDPI_IS_NOT_STUN); - } - - /* If we're here it's because this does not look like STUN anymore - as this was a flow that started as STUN and turned into something - else. Let's investigate what is that about */ - if(flow->stun.num_pkts > 0 && is_dtls(payload, payload_length, &unused)) { -#ifdef DEBUG_STUN - printf("[STUN] DTLS?\n"); -#endif - /* Switching to TLS dissector is tricky, because we are calling one dissector - from another one, and that is not a common operation... - Additionally: - * at that point protocol stack is still empty - * we have room for only two protocols in flow->detected_protocol_stack[] so - we can't have something like STUN/DTLS/SNAPCHAT_CALL - * the easiest solution is skipping STUN, and let TLS dissector to set both - master (i.e. DTLS) and subprotocol (if any) */ - if(ndpi_struct->opportunistic_tls_stun_enabled) { - flow->stun.maybe_dtls = 1; - switch_to_tls(ndpi_struct, flow); - } - /* We don't want to mess up with TLS classification/results but we don't want to - exclude STUN right away to keep trying it in the case that this packet is - not a real DTLS one */ - return(NDPI_IS_NOT_STUN); - } - - if(payload_length < STUN_HDR_LEN) { - /* This looks like an invalid packet */ - - if(flow->stun.num_pkts > 0) { - return(NDPI_IS_STUN); - } else - return(NDPI_IS_NOT_STUN); - } - - if((strncmp((const char*)payload, (const char*)"RSP/", 4) == 0) - && (strncmp((const char*)&payload[7], (const char*)" STUN_", 6) == 0)) { - NDPI_LOG_INFO(ndpi_struct, "found stun\n"); - goto stun_found; - } - - msg_type = ntohs(*((u_int16_t*)payload)); - msg_len = ntohs(*((u_int16_t*)&payload[2])); - - /* With tcp, we might have multiple msg in the same TCP pkt. - Parse only the first one. TODO */ - if(packet->tcp) { - if(msg_len + 20 > payload_length) - return(NDPI_IS_NOT_STUN); - /* Let's hope that classic-stun is no more used over TCP */ - if(ntohl(*((u_int32_t *)&payload[4])) != 0x2112A442) - return(NDPI_IS_NOT_STUN); - - payload_length = msg_len + 20; - } - - if((msg_type == 0) || ((msg_len+20) != payload_length)) - return(NDPI_IS_NOT_STUN); - - /* https://www.iana.org/assignments/stun-parameters/stun-parameters.xhtml */ - if(((msg_type & 0x3EEF) > 0x000B) && - (msg_type != 0x0800 && msg_type != 0x0801 && msg_type != 0x0802)) { -#ifdef DEBUG_STUN - printf("[STUN] msg_type = %04X\n", msg_type); -#endif - return(NDPI_IS_NOT_STUN); - } - - if(ndpi_struct->stun_cache) { - u_int16_t proto; - u_int32_t key = get_stun_lru_key(flow, 0); - int rc = ndpi_lru_find_cache(ndpi_struct->stun_cache, key, &proto, - 0 /* Don't remove it as it can be used for other connections */, - ndpi_get_current_time(flow)); - -#ifdef DEBUG_LRU - printf("[LRU] Searching %u\n", key); -#endif - - if(!rc) { - key = get_stun_lru_key(flow, 1); - rc = ndpi_lru_find_cache(ndpi_struct->stun_cache, key, &proto, - 0 /* Don't remove it as it can be used for other connections */, - ndpi_get_current_time(flow)); - -#ifdef DEBUG_LRU - printf("[LRU] Searching %u\n", key); -#endif - } - - if(rc) { -#ifdef DEBUG_LRU - printf("[LRU] Cache FOUND %u / %u\n", key, proto); -#endif - - *app_proto = proto; - return(NDPI_IS_STUN); - } else { -#ifdef DEBUG_LRU - printf("[LRU] NOT FOUND %u\n", key); -#endif - } - } else { -#ifdef DEBUG_LRU - printf("[LRU] NO/EMPTY CACHE\n"); -#endif - } - - if(msg_type == 0x01 /* Binding Request */) { - flow->stun.num_binding_requests++; - - flow->guessed_protocol_id = NDPI_PROTOCOL_STUN; - - if(!msg_len) { - /* flow->stun.num_pkts++; */ - return(NDPI_IS_NOT_STUN); /* This to keep analyzing STUN instead of giving up */ - } - } - - flow->stun.num_pkts++; - - flow->guessed_protocol_id = NDPI_PROTOCOL_STUN; - - if(payload_length == (msg_len+20)) { - if((msg_type & 0x3EEF) <= 0x000B) /* http://www.3cx.com/blog/voip-howto/stun-details/ */ { - u_int offset = 20; - - /* - This can either be the standard RTCP or Ms Lync RTCP that - later will become Ms Lync RTP. In this case we need to - be careful before deciding about the protocol before dissecting the packet - - MS Lync = Skype - https://en.wikipedia.org/wiki/Skype_for_Business - */ - - while((offset+4) < payload_length) { - u_int16_t attribute = ntohs(*((u_int16_t*)&payload[offset])); - u_int16_t len = ntohs(*((u_int16_t*)&payload[offset+2])); - u_int16_t x = (len + 4) % 4; - - if(x) - len += 4-x; - -#ifdef DEBUG_STUN - printf("==> Attribute: %04X\n", attribute); -#endif - - switch(attribute) { - case 0x0101: - case 0x0103: - *app_proto = NDPI_PROTOCOL_ZOOM; - return(NDPI_IS_STUN); - - case 0x4000: - case 0x4001: - case 0x4002: - case 0x4003: - case 0x4004: - case 0x4007: - /* These are the only messages apparently whatsapp voice can use */ - *app_proto = NDPI_PROTOCOL_WHATSAPP_CALL; - return(NDPI_IS_STUN); - - case 0x0014: /* Realm */ - { - u_int16_t realm_len = ntohs(*((u_int16_t*)&payload[offset+2])); - - if(flow->host_server_name[0] == '\0') { - u_int k = offset+4; - - ndpi_hostname_sni_set(flow, payload + k, ndpi_min(realm_len, payload_length - k)); - -#ifdef DEBUG_STUN - printf("==> [%s]\n", flow->host_server_name); -#endif - - if(strstr(flow->host_server_name, "google.com") != NULL) { - *app_proto = NDPI_PROTOCOL_HANGOUT_DUO; - return(NDPI_IS_STUN); - } else if(strstr(flow->host_server_name, "whispersystems.org") != NULL || - (strstr(flow->host_server_name, "signal.org") != NULL)) { - *app_proto = NDPI_PROTOCOL_SIGNAL_VOIP; - return(NDPI_IS_STUN); - } else if(strstr(flow->host_server_name, "facebook") != NULL) { - *app_proto = NDPI_PROTOCOL_FACEBOOK_VOIP; - return(NDPI_IS_STUN); - } else if(strstr(flow->host_server_name, "stripcdn.com") != NULL) { - *app_proto = NDPI_PROTOCOL_ADULT_CONTENT; - return(NDPI_IS_STUN); - } - } - } - break; - - case 0x8054: /* Candidate Identifier */ - if((len == 4) - && ((offset+7) < payload_length) - && (payload[offset+5] == 0x00) - && (payload[offset+6] == 0x00) - && (payload[offset+7] == 0x00)) { - /* Either skype for business or "normal" skype with multiparty call */ -#ifdef DEBUG_STUN - printf("==> Skype found\n"); -#endif - *app_proto = NDPI_PROTOCOL_SKYPE_TEAMS_CALL; - return(NDPI_IS_STUN); - } - - break; - - case 0x8055: /* MS Service Quality (skype?) */ - break; - - /* Proprietary fields found on skype calls */ - case 0x24DF: - case 0x3802: - case 0x8036: - case 0x8095: - case 0x0800: - case 0x8006: /* This is found on skype calls) */ - /* printf("====>>>> %04X\n", attribute); */ -#ifdef DEBUG_STUN - printf("==> Skype (2) found\n"); -#endif - - *app_proto = NDPI_PROTOCOL_SKYPE_TEAMS_CALL; - return(NDPI_IS_STUN); - - case 0x8070: /* Implementation Version */ - if(len == 4 && ((offset+7) < payload_length) - && (payload[offset+4] == 0x00) && (payload[offset+5] == 0x00) && (payload[offset+6] == 0x00) && - ((payload[offset+7] == 0x02) || (payload[offset+7] == 0x03))) { -#ifdef DEBUG_STUN - printf("==> Skype (3) found\n"); -#endif - - *app_proto = NDPI_PROTOCOL_SKYPE_TEAMS_CALL; - return(NDPI_IS_STUN); - } - break; - - case 0xFF03: - *app_proto = NDPI_PROTOCOL_HANGOUT_DUO; - return(NDPI_IS_STUN); - - default: -#ifdef DEBUG_STUN - printf("==> %04X\n", attribute); -#endif - break; - } - - offset += len + 4; - } - - goto stun_found; - } else if(msg_type == 0x0800 || - msg_type == 0x0801 || - msg_type == 0x0802) { - *app_proto = NDPI_PROTOCOL_WHATSAPP_CALL; - return(NDPI_IS_STUN); - } - } - - if((flow->stun.num_pkts > 0) && (msg_type <= 0x00FF)) { - *app_proto = NDPI_PROTOCOL_WHATSAPP_CALL; - return(NDPI_IS_STUN); - } else - return(NDPI_IS_NOT_STUN); - -stun_found: - flow->stun.num_processed_pkts++; - - rc = (flow->stun.num_pkts < MAX_NUM_STUN_PKTS) ? NDPI_IS_NOT_STUN : NDPI_IS_STUN; - -#ifdef DEBUG_STUN - printf("stun.num_pkts %d, stun.num_processed_pkts %d, rc: %d\n", - flow->stun.num_pkts, flow->stun.num_processed_pkts, rc); -#endif - - return rc; -} static void ndpi_search_stun(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { @@ -596,28 +573,20 @@ static void ndpi_search_stun(struct ndpi_detection_module_struct *ndpi_struct, s app_proto = NDPI_PROTOCOL_UNKNOWN; - /* STUN may be encapsulated in TCP packets with a special TCP framing described in RFC 4571 */ - if(packet->tcp && - packet->payload_packet_len >= 22 && - ((ntohs(get_u_int16_t(packet->payload, 0)) + 2) == packet->payload_packet_len)) { - /* TODO there could be several STUN packets in a single TCP packet so maybe the detection could be - * improved by checking only the STUN packet of given length */ + if(packet->iph && + ((packet->iph->daddr == 0xFFFFFFFF /* 255.255.255.255 */) || + ((ntohl(packet->iph->daddr) & 0xF0000000) == 0xE0000000 /* A multicast address */))) { + NDPI_EXCLUDE_PROTO(ndpi_struct, flow); + return; + } - if(ndpi_int_check_stun(ndpi_struct, flow, packet->payload + 2, - packet->payload_packet_len - 2, &app_proto) == NDPI_IS_STUN) { - ndpi_int_stun_add_connection(ndpi_struct, flow, app_proto); - return; - } - } else { /* UDP or TCP without framing */ - if(ndpi_int_check_stun(ndpi_struct, flow, packet->payload, - packet->payload_packet_len, &app_proto) == NDPI_IS_STUN) { - ndpi_int_stun_add_connection(ndpi_struct, flow, app_proto); - return; - } + if(is_stun(ndpi_struct, flow, &app_proto)) { + ndpi_int_stun_add_connection(ndpi_struct, flow, app_proto); + return; } - if(flow->stun.num_pkts >= MAX_NUM_STUN_PKTS || - flow->packet_counter > 10) + /* TODO: can we stop earlier? */ + if(flow->packet_counter > 10) NDPI_EXCLUDE_PROTO(ndpi_struct, flow); if(flow->packet_counter > 0) { @@ -628,7 +597,6 @@ static void ndpi_search_stun(struct ndpi_detection_module_struct *ndpi_struct, s } } - void init_stun_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id) { ndpi_set_bitmask_protocol_detection("STUN", ndpi_struct, *id, NDPI_PROTOCOL_STUN, diff --git a/tests/cfgs/caches_cfg/result/teams.pcap.out b/tests/cfgs/caches_cfg/result/teams.pcap.out index 475ac4e9d560..6b12323f18df 100644 --- a/tests/cfgs/caches_cfg/result/teams.pcap.out +++ b/tests/cfgs/caches_cfg/result/teams.pcap.out @@ -4,18 +4,17 @@ DPI Packets (TCP): 337 (8.02 pkts/flow) DPI Packets (UDP): 74 (1.85 pkts/flow) DPI Packets (other): 1 (1.00 pkts/flow) Confidence Unknown : 1 (flows) -Confidence Match by port : 1 (flows) -Confidence DPI (partial) : 1 (flows) +Confidence Match by port : 2 (flows) Confidence DPI : 80 (flows) Num dissector calls: 504 (6.07 diss/flow) LRU cache ookla: 0/0/0 (insert/search/found) LRU cache bittorrent: 0/9/0 (insert/search/found) LRU cache zoom: 0/0/0 (insert/search/found) -LRU cache stun: 6/42/18 (insert/search/found) +LRU cache stun: 24/0/0 (insert/search/found) LRU cache tls_cert: 0/4/0 (insert/search/found) -LRU cache mining: 0/2/0 (insert/search/found) +LRU cache mining: 0/3/0 (insert/search/found) LRU cache msteams: 25/19/9 (insert/search/found) -LRU cache stun_zoom: 0/0/0 (insert/search/found) +LRU cache stun_zoom: 0/1/0 (insert/search/found) Automa host: 85/71 (search/found) Automa domain: 85/0 (search/found) Automa tls cert: 0/0 (search/found) @@ -60,7 +59,7 @@ JA3 Host Stats: 11 TCP 192.168.1.6:60540 <-> 52.114.75.70:443 [proto: 91.250/TLS.Teams][IP: 276/Azure][Encrypted][Confidence: DPI][DPI packets: 5][cat: Collaborative/15][14 pkts/5711 bytes <-> 10 pkts/8093 bytes][Goodput ratio: 83/92][0.13 sec][Hostname/SNI: eu-prod.asyncgw.teams.microsoft.com][(Advertised) ALPNs: h2;http/1.1][bytes ratio: -0.173 (Mixed)][IAT c2s/s2c min/avg/max/stddev: 0/0 8/9 32/32 13/14][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 408/809 1494/1506 517/688][TLSv1.2][JA3C: 74d5fa154a7fc0a7c655d8eaa34b89bf][Plen Bins: 0,7,0,7,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,31,0,0] 12 TCP 192.168.1.6:60537 <-> 52.114.77.33:443 [proto: 91.212/TLS.Microsoft][IP: 276/Azure][Encrypted][Confidence: DPI][DPI packets: 8][cat: Cloud/13][16 pkts/8418 bytes <-> 10 pkts/5367 bytes][Goodput ratio: 87/88][0.27 sec][Hostname/SNI: mobile.pipe.aria.microsoft.com][bytes ratio: 0.221 (Upload)][IAT c2s/s2c min/avg/max/stddev: 0/0 14/27 46/46 20/20][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 526/537 1494/1506 639/623][Risk: ** TLS (probably) Not Carrying HTTPS **][Risk Score: 10][Risk Info: No ALPN][TLSv1.2][JA3C: a1674500365bdd882188db63730e69a2][ServerNames: *.events.data.microsoft.com,events.data.microsoft.com,*.pipe.aria.microsoft.com,pipe.skype.com,*.pipe.skype.com,*.mobile.events.data.microsoft.com,mobile.events.data.microsoft.com,*.events.data.msn.com,events.data.msn.com][JA3S: ae4edc6faf64d08308082ad26be60767][Issuer: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT TLS CA 4][Subject: CN=*.events.data.microsoft.com][Certificate SHA-1: 33:B3:B7:E9:DA:25:F5:A0:04:E9:63:87:B6:FB:54:77:DB:ED:27:EB][Safari][Validity: 2019-10-10 21:55:38 - 2021-10-10 21:55:38][Cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384][Plen Bins: 7,7,7,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,31,15,0,0] 13 TCP 192.168.1.6:60555 <-> 52.114.77.33:443 [proto: 91.212/TLS.Microsoft][IP: 276/Azure][Encrypted][Confidence: DPI][DPI packets: 11][cat: Cloud/13][18 pkts/5861 bytes <-> 13 pkts/7901 bytes][Goodput ratio: 80/89][2.79 sec][Hostname/SNI: mobile.pipe.aria.microsoft.com][bytes ratio: -0.148 (Mixed)][IAT c2s/s2c min/avg/max/stddev: 0/0 192/269 2443/2490 625/741][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 326/608 1494/1506 448/617][Risk: ** TLS (probably) Not Carrying HTTPS **][Risk Score: 10][Risk Info: No ALPN][TLSv1.2][JA3C: e4d448cdfe06dc1243c1eb026c74ac9a][ServerNames: *.events.data.microsoft.com,events.data.microsoft.com,*.pipe.aria.microsoft.com,pipe.skype.com,*.pipe.skype.com,*.mobile.events.data.microsoft.com,mobile.events.data.microsoft.com,*.events.data.msn.com,events.data.msn.com][JA3S: 986571066668055ae9481cb84fda634a][Issuer: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT TLS CA 4][Subject: CN=*.events.data.microsoft.com][Certificate SHA-1: 33:B3:B7:E9:DA:25:F5:A0:04:E9:63:87:B6:FB:54:77:DB:ED:27:EB][Firefox][Validity: 2019-10-10 21:55:38 - 2021-10-10 21:55:38][Cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384][Plen Bins: 0,16,11,0,0,5,0,0,0,5,5,0,0,11,0,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,22,0,0] - 14 UDP 192.168.1.6:51681 <-> 52.114.77.136:3478 [proto: 125/Skype_Teams][IP: 276/Azure][Encrypted][Confidence: DPI (partial)][DPI packets: 12][cat: VoIP/10][14 pkts/5838 bytes <-> 17 pkts/7907 bytes][Goodput ratio: 90/91][4.57 sec][bytes ratio: -0.151 (Mixed)][IAT c2s/s2c min/avg/max/stddev: 0/0 347/256 2336/2336 693/595][Pkt Len c2s/s2c min/avg/max/stddev: 79/79 417/465 1243/1227 434/401][PLAIN TEXT (TBHSWF)][Plen Bins: 0,36,0,0,0,12,6,0,3,6,0,0,0,3,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,3,0,3,3,0,0,0,9,0,0,0,0,0,0,0,0,0,0] + 14 UDP 192.168.1.6:51681 <-> 52.114.77.136:3478 [proto: 125/Skype_Teams][IP: 276/Azure][Encrypted][Confidence: Match by port][DPI packets: 12][cat: VoIP/10][14 pkts/5838 bytes <-> 17 pkts/7907 bytes][Goodput ratio: 90/91][4.57 sec][bytes ratio: -0.151 (Mixed)][IAT c2s/s2c min/avg/max/stddev: 0/0 347/256 2336/2336 693/595][Pkt Len c2s/s2c min/avg/max/stddev: 79/79 417/465 1243/1227 434/401][PLAIN TEXT (TBHSWF)][Plen Bins: 0,36,0,0,0,12,6,0,3,6,0,0,0,3,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,3,0,3,3,0,0,0,9,0,0,0,0,0,0,0,0,0,0] 15 TCP 192.168.1.6:60547 <-> 52.114.88.59:443 [proto: 91.250/TLS.Teams][IP: 276/Azure][Encrypted][Confidence: DPI][DPI packets: 14][cat: Collaborative/15][20 pkts/3926 bytes <-> 15 pkts/8828 bytes][Goodput ratio: 66/89][0.32 sec][Hostname/SNI: chatsvcagg.teams.microsoft.com][(Advertised) ALPNs: h2;http/1.1][bytes ratio: -0.384 (Download)][IAT c2s/s2c min/avg/max/stddev: 0/0 13/25 91/80 23/31][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 196/589 1494/1506 320/612][TLSv1.2][JA3C: ebf5e0e525258d7a8dcb54aa1564ecbd][Plen Bins: 0,21,10,5,0,5,10,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,5,21,0,0] 16 TCP 192.168.1.6:60565 <-> 52.114.108.8:443 [proto: 91.250/TLS.Teams][IP: 276/Azure][Encrypted][Confidence: DPI][DPI packets: 5][cat: Collaborative/15][19 pkts/3306 bytes <-> 14 pkts/9053 bytes][Goodput ratio: 61/90][0.43 sec][Hostname/SNI: emea.ng.msg.teams.microsoft.com][(Advertised) ALPNs: h2;http/1.1][bytes ratio: -0.465 (Download)][IAT c2s/s2c min/avg/max/stddev: 0/0 27/12 276/54 68/17][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 174/647 1060/1506 238/633][TLSv1.2][JA3C: ebf5e0e525258d7a8dcb54aa1564ecbd][Plen Bins: 0,22,16,5,0,0,5,0,0,0,0,0,0,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0,22,0,0] 17 TCP 192.168.1.6:60541 <-> 52.114.75.69:443 [proto: 91.125/TLS.Skype_Teams][IP: 276/Azure][Encrypted][Confidence: DPI][DPI packets: 10][cat: VoIP/10][13 pkts/4051 bytes <-> 9 pkts/7973 bytes][Goodput ratio: 79/92][0.14 sec][Hostname/SNI: eu-api.asm.skype.com][(Advertised) ALPNs: h2;http/1.1][bytes ratio: -0.326 (Download)][IAT c2s/s2c min/avg/max/stddev: 0/0 10/11 31/36 14/16][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 312/886 1494/1506 422/676][TLSv1.2][JA3C: 74d5fa154a7fc0a7c655d8eaa34b89bf][ServerNames: *.asm.skype.com][JA3S: 986571066668055ae9481cb84fda634a][Issuer: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT TLS CA 1][Subject: CN=*.asm.skype.com][Certificate SHA-1: B9:41:1D:AE:56:09:68:D2:07:D0:69:E1:68:00:08:2B:EF:63:1E:48][Validity: 2019-05-07 12:50:03 - 2021-05-07 12:50:03][Cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384][Plen Bins: 0,8,0,8,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,34,0,0] diff --git a/tests/cfgs/default/pcap/stun_dtls_unidirectional_client.pcap b/tests/cfgs/default/pcap/stun_dtls_unidirectional_client.pcap new file mode 100644 index 0000000000000000000000000000000000000000..108b7c4694cb22dea25be2c1b158dc12ac910433 GIT binary patch literal 2024 zcmb`Ido)#f6vy|u=RUZedFHXWqNOBVH_T;b(p6ro2)S-a7s<#YB1$s3Xef`ch@nNu zP?BOQk2D=k(`b}wC{xiCwT3cf8a?Q7@BDt4!9V>o^IdD7^V{c~z0c>j&+oSnTS=SvD;KmcaVJ$k5o(gy5~5EqgfLF@ZtBqL{$Qkci+I&MvNnjRl{xB`!2# zE63K#7DWQ!JU9nu`Ye+H$fGMvEGI(-xNY|rm!L5=q}x&6b;EnFZ&8y2 z$7aY{a~r^Z9=lq1y}YN9@q>_u4`})jukV7A`WdNJITU*h_jQi3&s{Q>vjY>L??dzw zGmx7~hK@`yvRciH3-O3_NO0tO?M|>6^d~8T_*>kI(WA@Vr=CCK$ zr6BeI%$`lR>mD2F6>lq0vxkK!{y*}U2CK){A2yw*vCF*Hkv#Lb&pCb!^A~q{ot@&w z{3iGVAz}U=(`{lB`Ph)=^1nK)jQQKiIs607y;@TAS*LX!MN-paN-9hIP-<20>}s@d zg8e+Ao$;b}yJ6C;w@)etnnSx9l2du;NheB!VuLO4;Q*vlI+O~<0BhJ!sZ;W>9C&CQ z6oVtIrsh-16djg9Aqap)sZnyE1?rSGr9_dy1{r#<2PgoY1cHWqD-@{=N}z+TDZ+fT z>e%RcZS+~0zyb}>1UfK44b)NbX+VMssKPvSBnTA7LN{sX#$;`9jk3t8Dd8GvwMK|T zk&g{&PL0S-5BhP9cK$rOMx^tO!kHQoFs1-R8%~cj1VjrE=ea3FBQm{ml7@KX;iWJ& z&*ZG?9-@bi{x#yAfaPvi_}eje>gZ8x|qzSEzR%N&oeXxGp9LHMMV zw?RKd>p0o!ZYS^`_GFeH>*%DRg-XokMl~W4aAbHx)@Z6Oee|VSR8s5Vq+$hwiYw-_ z@cgCex1>zd(8p=dUQ=zWs&?JTH5Rp;@v9g-cJQ^9wCuOig(6AekGU2Z!}W_VHrVkB zSBLOR^iNmsZSL<#?N>}cWqu}6adEb9xu7>u;mZpX<+1h+k&OHn{W}lZOC=l2GKi(o zk_p<(Y)Noe1#m#i3Clr1|046m_KrIgqwCtMYnk@u(dAygD}9`ZoBZ%KtM8m3tq>lScJ`I=+GkSJ;gAYI3R=8aDIjUsd_CZ<@ag?$ zqYVApQI@qZW>{Q#ZcJ2FD|LDQ(AUEGZCJuu?ICCK|HqW|Vi-`BZ-UwE0#M5!hh5 z>CGY?iF=2KO>E{-l?$4Ko=NPQPqaV%YTyX{lq2)Lg3qOKxjQSvx_TYZ1o0lkdyzth zh4-Q^C;B7(Hopq*#mn8Z_aY>=86d35ejC2lVEHy(cF~5m;Ku)>-wxUSnf$QpA=TvB z%6~+%j;Of5XvY0E-=b;b6!&B=nZlps7nwwh!;p^+X-+Qzzg#ZnznUQUzS zf06S`<_^E_Jr2K!ZdV8V$0CfCU3&~gXrw`x1z+uAUUNS2b?@pvae^s KepE~JvcCadHh~%d literal 0 HcmV?d00001 diff --git a/tests/cfgs/default/pcap/stun_dtls_unidirectional_server.pcap b/tests/cfgs/default/pcap/stun_dtls_unidirectional_server.pcap new file mode 100644 index 0000000000000000000000000000000000000000..9d33cd726617e2739144ba054b5ba7d49ca6301f GIT binary patch literal 1880 zcmaKtdpJ~i7{}i;XNbw&gy^Xu?KTuM8VqYtZjnJoo9wJGZiB||vdCz&jho-Jh^8*0B zgSjDr_VO_iU=D&%i8xuD5fRP^OJ@Wmg^D6pCWT6(;v$k5sVoZ{3oaupMI0B-u;bXF zGXZcNT!S&Tm&*ZE(KpH{$6}zs>n$j-+~+94ofJ`U3|iwrx)&b+^U9R_8dSgyKv?YS z43^qEb&cotL>UTHms4gv>w%?JdISLrjCBq#+3Wx6aqA$hwqdS{Ju0sPMB{B!8>16w zMdwNyc>3%8Pqys362kJ@^KMhi?fmTdK)sWy59T$8F zOWhU?eB-9h?qS5(o-tfD%y92Q+~o6txN1JspU8d?Zo<5WfQP z3u`@5gTm+lNg;ru3Wb|0f(gQ@nx(F+YL>e+_k%h?OjiPy5ql;}UzuD%CDpXN#i5&KUrGNQZQ0raGbFKpl<>Mp#-FK zE3l;b6sZ)hnRPcsMiVe_nfcjJPb8}7@yd!lc59eF^Fg9aBv|wCYE94w@v&TTugA;z zLst@gf@#EWxs5m9_r|RHLCPqdv01}p*Qt2%aDGdnVW#%#7jl1x!H{;y%5v$I(d+kx zMSjw3;Y82YEUBoysnIX1``I?VXu+D0RRZ2L*Hi0WQ%KbDDLo<)SH|0>T;8hMv-a^X zRc<+zZ|_mEjuE`SU^**>bI5sv@SpeG?nKWlwX}`87iHe_=S)le#4Ib`uDE^@z8|}O zA_>4NNZaIFlX>r!$NZ#Kq)*?ME|UK1s8;A1y*T^Y`7Zgo>U(vk6GJV{*7KM;kDC}b z9@GAdHr6r=&!*4iaRxeD&%I&aVV|TiDO%SRe?f&JHGpRPd?4kJpud=!`iK3egUMZV z7a!*rsW)}aX7=r>OyFprkLn^X*qeBD54`IjdCfxZpS+%J}eI^V(ZY37DE zLj$3;knOhUQQ$|5?-oi8w@@lB?*HG6t`9_0rGa~0bmFcz_T(WNMb}yG*3r{vU zu6mG@|74glRJk@!yG&%PfKvkBakv~b2TyE8u9eNZC_4FU7D@AQ(&{4-uHaeQh zBtdZoQ2aa%)HHBMsCa{g=Nfy>v5{=l_g*z61aCw+4y4JxmsUa<@fx>@^9`cF1p1fx zMpid6k)tyR;LP%{5)S%knt6xvbZUIe-+K7`7=KaFP@&==D9lUeFIt|QomX3zwKOW$mR@WZjuXaWdm=AN-qrk#G^cHcJqBRbr$(&nC$PrGE0RRR7W$^aNt&seZ1z zFy$+LUSc-F&Yi@*)alu{pT~O7UKDLe+Z|XRQ3F%nE&e7Saysd-sU|{gI(UxKa(*L1=kwKdwI597?B(o|tMIotDA*3iVIW@c}F)uwQwMe1N zK+jCiLLsR%GbcsC(!>&|lYs$b4#*4zDE!GR&1O|Wm-n!aZ7?MK~tr!Pz~Y#SSh77&5X><91uG|b~Qi^1=*Fx_Q)v?$OmC4;A1$j&>w79 zz-A!_279)$bdWtD`<5s2P6ycov~Nm-1f%bJKcMdzIkz&p>? zGAJV5EixyPL6U(*5NvbXb=}$f4EGxDwSMc~YpoO0qD4$u0068}ms)~? z{?2_H7=RBj^9~4$#48Yp3ItF_K~~1oBfulr+YP`1PQV(EU{4P>*C4#Ot#`0Th?i@y zuLNF>ph!@{iyL}};=|{!gIwKwT|GVA@vb5B@5&IjhiwWA2n~}337|Xyl!_pI-Q6QR zB-C}2pN9m*1_1K}^JDbwF91mm} zswgQbD=LGkvY&nV#YwIcK$tw~;ZDoiy0IY5+N)ew5R& zBAP%$PFX}wS86#w@R8(H))VTO$k%<=t?H8bZ_3$tJ}$JmMW%!0ylKzle6J>%&t+#} zIWdD$vC31f6v`gZ523~S-L`*NHGRbV;C z^-KiFI%j|#5*o11*KbQFzJ{*hxxj~d(p3;SRjA}_JbI3Ib`D+u85PiKh2O3VXJ@|3 z9q7rC7SNPk9HhM2a_vXCq>~3nm`n!WeHNYjNZ*$ZeUiOis(#g-Gk1#Wnd%wqx$3#0 z6?`E72j)=lrZGV~h69#CFYp7*02+FQ9pD7maSb$58dwUTwE%z>T89CkM{EKO0I>Y@_%l7`%1KBY1p0` zvL|+=J-KTP<67Mq$@WZFp9;-P9c>QLm{5alPsu=D7SxebkkKJRkOnH~L69YDpe>`L zuVSF1s6$lH(fPl|wXaPHrcU-PyI>#VVHEQ>29}vT;Z#~1W1P3PTD$BHEaw`@r6y$C zqr~q$Tf^mO$f{ zyZ`+#4598!n}AzQ}TipiM_@< zJ2Sro^sfhW60rYvXFof0M@9L|IXb=TJWn#%70-PrH^r?;+0a46n5z>O#Yioq{qxbWX! zUT0>Fx3bp8TN`Q1Dk$P*L0J&5t4#!#^DUB<1&Po^h68jf2i?lc$|fyuU%L#Mn7r&uka3;K>&5F(BoJeb)tkk8`C%GQ!Nl zJfD^v%Q_@fm6tiKC^=Vcv0~1TPr0;e0{=wbqB+rEU`)3!Omx;OvVFSbf!+4w1KI8vt4pRRlJ zY{=%G2R$7816O4Q&bPJhvkzrxx>{I~^PpaSlY=VCF#KGn!X}Ze^y@#UufsVWiWM20 zT_h@&Hj52JW1!P=K|CfDjK>6lf{+%Mt-wO+jN`uOoByV$IALGZo9f4G8Rr@ghu2Ji z%is^NVtKLLi|ThxZf|!(iDCb$sUb-8*j`?*11^Ez=DESmF2BP^dX97K5hC zonLAtmKWs4F-YN1baeC>)b}eixZ?o)c|q)sBydLpsFkaktDdOp6&f0(x@whMu%8^k z9Wquo$XE$(f&QyVCJI?7WT5l*37aQmoig$S=<^F#kpDkjK@(;Ok5vK{Ksg-Fa|a9L zYar|;-`Gc^cm=!w0LB*_``Q|M`PK(c|GLvSj@Z@A|fKF zMbNdd24hLwpitNla0@6xx(88-{NL0U=oS)0^-a+D`=`)}8YCsV!rBd?`rs;BdL}}8 z4h30YEpfryj0Ryhi^DNNyNgA2N1?H3Y&mKdc$kCYg|2sA(o0Y`?ql0~+=48}*Np;*QCKW(#$ zr9V`AN0U?N{v-E$xFqN!*&a_j2cNqZ?*^-MEE@&X6HuP$ZVTUp2QwT4PxSpcfN((J z?qY$uNA98Y;N(s zvj)m07^0QlQonQ{m6Hg&m#BUs@10a?v;Aqr?4j5xVhLIm>yihqDfC zd)%AO_vN5Pfa3+U-Cp99S9Di|J$qs0wXziZeObHO-t#XJ(jer?S1sfGx=HS?!`-H3 z?ZK^sbZ-u>swg`&^wxg*NY>`Y)q01(6K&VS>@f|(#32!XOYL$KeY>YTcQ(l-cKP0% zHi&iLtxVqHCHg6|l7pim<&oIMdeI@1_z97(B?9{|+n6qS;m$Y^_@thvy?Q!t%07)T zsfK|tHCi)b5v)?3bMa0{?8%eSJ?7K9EFY|87zxP8nB;FAyPEa+tIX&1{u`#~Vk*xw z%w;<}C6&KY&9C_?R6Ju7A|xg77{HE#@z^&I=H34mGno_^x|}4WP}@G0depOheDQsTJ zkD_w$tsE(eQibiGoN8b zTgy<ygs@ ztK&^Koj1;WciXf3x#r~aZcb;t@wzQK+w2lBag{qzUp}|UUa3wIOA>383Vl%2ee`LA z`{$N+>wKH5k$fq}7>TlJWAj3un)VM)i*5aVqfSfZi{ZJ>-_y|Q6awkf-yEC#7JyM@ z5LOmb#MhsOU&{E5d1|3x(_waH^H{;4fI!31a~d7%L8>5&O8mPZ%lRFw89*F_*-)Ac z3@60`D1!KaUjJbP(IR~dL?_DsClO@c_+i`E)kXrxR+tw-Y$zBED&;EV$|Vv>%ltCh z|FDMN!Y}?J$S?RJ2ouL+p=b`$Gu`?L5PL6u=A?ze$g~Eawq@H7{Z~)|;CdSRIj8xyCUh ziHYl8R?`Pl6?3Zu<5Ok_*9v~D1~63+Y?p)a=%e4Dn?Y^B=Ae#2WnP$1vwiAq6Uwcj zgC2MO9q0xXiA3T&a)ZzVkQ{XP{r2Br;qP#EQ0*B<@YABg&H~$Fi~Ix35eJ*|PmXf7 zA8|x6;_sl+Pp<_pT7T5N=?&Os5AGN4OTuXZI~d#B1$Nf;x2bJ080_ABo31KcjQ7CS z6Uz^88@*^$!0@=cJeoxX=MihNLGUWyr;^%H@rR+Y(UHgOcXgCPrg_)g#V_1B z*HkI>M6d8G|90*rDL$>UZB^Xve77AXPRQ1M82!@8tn;AcqPFZ~mIv=Y?dZC)-){AJ zfgxk@{Gi7~Y~ROoydTV%*3uV^m}oekk1aUZP%bu)vu>d40*r*8JLgZVbRY%-K?)H5 zDaQUS2va<6L-vP2Lu-~&u@M(1)0aNIEOV=hiT*O|WKlb{nVPQKvlG_^ z?OHGSXGMp;&X6eKIR88-H?Pes`B?hC)S$r@+#xU&-67VYZR^Ts#@Sa5{7Qt8vD5l@poZMBh{r<<9tuQE$87L zezf~~jk4chs^6YD_nL^6wqU)0NWrt-;eNxI^VK2@bl^LgYs_`}brv;e{(75%;w)`S zzLg>GvY$!))^OM1!~Rdnu1^PWvjEWP7|NSKg8`~6YhyS5)l0^idL*?mpPv!$aaPNQ z?&0}keg<`b?F5W7zJioEgWB35MJ9$rtsxPEDtX#!2WwTQ9wn6TxpV#LwBOWHKgp4T z_PgP4&J)_FpCxE$xpN8~``qVQCKVpx$sop|kp7vY)+ePpK6r(XEe``01zZ=Ls^86V z;#7d99`B+kjx8-Qj44JcsUuQthwYX;=eB)ldQE!3u3_jgUr;K`b2b~_rU!$6b*7la z$7E^+4%Oz}7mRwJt}&N>gx@M1M736nRQE*>^zqEzkgDTf+KP4f!r1M~ciTBRN;=Cr z^X~nEk09PS_AcM}JH>6fN=V&W_M@OKg4~Dw?W-_0q4b9|A!CgVh+aW z=k*jGXq3)d5r!>|a^{PS{cF5zOrBkLSIr^J8HRi938gvv2uB+At_-(_zFd+@)+{~1 z!U}I72L1;b@V>#%y_7j@v_+*_6Z9H97t{qWr`sYqPgSa%=c!01G8GK4mK^|e=CfUZ zjyCpD0zeM`HDo)zYYZ5Tw~%t0 zRJFDra+(aa=C0OuQ0KzR!n2>19Zht22BhGeCSA*|RB}#}Qs-%wof~*r$iQKo??Dl`N9`>3(`NS(7j*aoQVX78fX&D|LBazzrZj?y# z&+B2=cpqxe$fr9aa&lA2+2}4!qvpKNIgjz$M$cuM`jMT$o)qkff}Qa?6T(@`ue*KL zoN4Za_WXZK&6#q)t28S#VgG{XPkhW3(E~`*15#HwWn4z~F}nYrkKw3%3;HgI!| zX*!2pBJn24t|{e=?Qqejv7i3ba?a!R?^yrT+01+BpeLmFp=66CC)PkmN!q$iyfsQOiYI4cmdt61M<4_H35ojk+r+*z}9wbVxV ztU!NGeuR8hpyb683^Sv_%N_W9?I%L!1@4vmCu^~kynK?sL5r78L@&$8y!_K=C`w)) z4tuYmp_hJy7Y=G({>eR}#D@cg*UV|)Ll}Y&-}?rBuk#$GoCU5YESi3Oj)_F%Tuj1; zdAtX9k@24KzlZlsRCtd8#50PP9@KZj4wW5R{60s4@bU8Tz^WjtLrr2slXsTnrUiw) zJ+OD!`PLvTAAF8E2u*mvJqL9WFD(3_Yk2e9p8mkNn_59ee;l ze8lwBLzz-%!}nbu^*1J5qHkQUs+i@y@$rDElcV?xmA}+(N2r^+t{8ym!F<5{9D*i1 zV1Bmge6|RIuHm`h{OFM$h3MU%O7E7EZ~4AII$;6zJ@#?^m#egEWVvsYbF63nLbr@@ zhk{Ql?l`J3^2WyJ9G`t1w7TKZ$o%uCGmvV{Mjc}5HcrK84ZTfaZ-dHMmRY&c~@?wFNBzgA&z~Wyvt->^6+Ry_fGGJW~N6uI& zLwE38V2_e)UtxRn6Q#08Uio3NJwmsqqS!0Y3Ygf$`_Lrs|3Boe7Z7*TAj7=(B z@~6+}PoL4BJ|oQkXMILe%(Jv`W)8s_9%`HcaAchM(`WRj&*)E|(Vspea(ghjE=PHu zIfJK#Gwc9@Gu+fT(;iL6nLm9-fBKC6^cnr>Gy1zeqXspaIDTOx@%Z~r2F4aGMMt}N@e%C&uny^{&d8Qu9n85?iRb8~4wfc3R5jz^j8Q&|EID^{C zOY!@RANq^}jF&$=^5pKj)Pmj!o6LN`wqVcAFG(i5Ry%*Fe5NI-p3vQJCx+*o^X-;r zJ3o&pl|CxIE>a$H@>oRhGG!IG&*<>>=f?#TmvfoicfN8GEZedqpY7F<%g8l`oGsv_ zpew;^B2>*ic3bN%VlV!bdiE%1VM+81G3NNCb?2h8A7)MqCa0hLv|9F^^%8ZFxHH%L zl=irrcE}`GrcFmgc^sU$x;$WWMt|U0Rrf9S5*XXuS?BOnCEe==HWLjs%mSgN0&l~^ zE7rVzs(upRuCf$=ns~Y5$%m~zFKhXSPWKu|*l%01t7)S8hD%3p?#AZKwlzYRAMNFH zicmYFVLQuzT)pLy(K(FeajrgUOLt^Y6o#h{*;3%e|l=jn@nXv z4}=39&vDlgW4<*_7J1slx&yl=gihWRNPnVuLnEaj=!A=5(xA4NSK&)*iN>0-eR7kR zY}4#n31f}-w{Qs0x*Nrj)1%Zq5Ky{)J@c@n+coT(OwVp_%$2Av@BNGkbI0OlEJbI- zLS!#oJn_ll*6Ho1uaRm8lsV1w&u^^zbxxBV`t386(>zUSr~hnDlQM6-Jcnuhuk*(2 zCP;qw5t$dLj=?KOkvE2mDnH8`PrPJW|LeRlJM_C}C~sUrwXQ~KI=q+j4h@y#xmDHI z46!loj~(={*vsp_jP32-=vL3&smH>0d}h;Nu&?D0epXOB=J?aRG0}l#Jq;aOB0A0? z(}(lM|E=1eb%~Y@4ZGfl*fkxsUHkiz?Rr5E#6M@()MY3rSzpAuX|$|0H`_f~wXts) zG@6wBGj_B3>EgXlbyTIc^{uAb7ado6t& zXxOzKVt*}UUSPYHrLb$}U)c3vzK;V9yS7Kx&8J#dt)^N_G870dCT_@zS}irolj%N$AMJmTTqYjVBd()Poko4 zd2y7g&i9nP=ArMwsl(vc+1sMSAB#kE`>Z8iy)0iPM|VMg=TpLvFDCGLb4AFK2|zf{ zgk|QwsO|;!M%HIHD-QU4uk*n*D0ske_x(hKgClee&jod_HR;grm7xE7X%or5k(#fH zP&An*IzYr_sq~QK?ifa)lKT>y_bd}DmPtL}yv`}UEVIy5FnS)2X&r z^EMm%nZy2=_VnsB-;*nn7BO$$r{?dlc7o(vl=bFYOI)3PU2kTOMtm!Tyzda6nT8IK z0~ocVLjkPZr)`^EshjYbK!W3;o~g~*=kQ0d)Lq>jAj7(o5@)ScU2EQZHRUObQAU4KR8VCB+rBfXWO zJB4|6Wr(x)rQnK^*4^#as^2KLdVi&lYu#~9Nv7b2)x8GjSKsZB(&vMe`&?-FeECmw z#48d`*3qwOpzR@jE;M|;0$JCTO7|Lo2-)W$SUv1sS-(Ag5`Wtqt$U#$C12o^PwFXF z^~I*T2UVxW4@B+GY8bDZaMStj^OSOxIY@iZkn0IT-;jzv?+OaJeiftl?vnPPAy+T5 zE=6BHWK$a3u8`$|O#0QBLr_al?uy~)FU5Fa`N#WmR$-PmtkjG=>-g5{<7?*V3YG3e zmDPUV<)Xwg*Mrg?Bpdn(mh~a@nW*Hl{9r(3L$RYmu6gN?hz&LCyu-EQR7DN^mPZHM zBz8#gS={^@apl5>ZvM+cxp!Y}U>7*@rgLrGmgp*RBjuwan*iDGHbjYK=MKwy(7>`X z#I7x<>{?}0IGHCbATrX!Iy|_e)Gl<5N5ZWPS$ADakIx&GbE4}zHXUsn4J2BM0*T+T zED}Moc`PgQvkkC??%}yWAI2OTV14+WqSA-LEip>k_@dH7CO+v2U&g$56^rN%Du`UO zbCOX1w3Q`sxahCu{*3@k55~|6Xu<==(5*)|1RQ{_;km$1_9~rlI{j6X{0-(n|qGVIF2*FxzGLM z?&n$X?StogzrEJG-nI5VAUqNh{0sm9km9Ds1p|J6{9}Lv*Z|@db_Qk?@{~kEmNo_y zic*wBCTz6K>%}fjENK!M40IqDFF}wEP$kmg}oCI z3mpR!9X%}*8?BLng@KKU9sm-c2@tk7x6;$KBBD?+u`#eU*0p&@NyJ3QOvg?{A!cGn z}flu91O0k*@8JpVBgT*uS;6u(M~Rr=w@4qo;QK^X>Wu4z_l>Z_NxCD1l1= zfYt+Ai|ilY0YFr6z!QL@nG-$xTLWD^`nL>htOfu$;J<WkaHOQElfM39qmsM}}7W@}=fD^z|&c_EY&;cJ? zU%~wVt!Dum7ax(orR5&o`so%g9G>` zeG^+NGhJs3U2_BAtw>0KFM+OYfuu071%YueGBdL>GqAmJ2LM3p0Qt=fXrKXFkAfFx z_-o)b$bPKkhnK&vhx?l!a6QnxN5Hid#3kox#Bzguvg;Bs1id>0{PA&%6&O%RsA@=X zSop4e5o^%vU=R>MvVbst$BHTB`VXuiUJzCu>rX6Ruus>cY_&DbT!h)Ou#p}iE_GVDbfIfu!_jvioJpF&e;$`vH`2vg?dj_gC5j*5x>tgZu z-~?iM{2fabv{c~uo>$a_kw7v5K=uzFQh?UQ4^1ERlN&#HXastZY z8%Q{T1BAh(^&(OOI0xD97+_LC{2+{6(tpLk1{AY<{vG40fyEu{(RBS}ozu(EPP~Gd zT*=|G+Mr*!v7#v(b7!D;nrPH%`3`!4V@_2vMUZ+?-4qpnJbOBfSN-y%Cf!h9GQyfx z(}t|)vJu}C@7%E`c;PU`4th~22|1$6j}s%cA^zA-m3_FTPvuDDAr6~iNKY-W?_ufW zAifFgd{WQts2Poi{V=}3;R)SpH6zrq@4h0#*ZMi6$@EcOp@8{e&1$Bn=xog<4Rbq< z|Je5{eZ-=w3Ynf1K+8m2_(~Nyz~d9cq=ohqv8)z#u4lozw~J}K?_7KzoMYU%a5Ew* zcgYH$jE13;>sTrsMIc3zc10J3MDRL3%eKmyjc|N<{3yoDW~8;zld+7N7T1#j@9!oj z-4A}O%KP2tAm9J0UzSl7|96h20rP?BM?Tacn>x%p0dxIT2CDXP0Z_F6%m=5AVh>QR z|DB`1atUj><3G5R*$s+w`0^id{!>$40r8wcTw(>%6T~GT#wrNwFD^Cx!lj(5p2!s7 z9Ay9CQdnjW2qVnzUon7OVtMj+46y!75t2bi2gr8V?o;vJrO#aWt|xt9Yba~S4e+g7 zEyg>(G?<6tI~g;?*%@ED0#_40qHG+$7d{o*KD-L8r}pU>kC^BHMDy^NIj;1c&vrGC zFZDU5V!2G{`{?8#vMt-@N(~gxt z-&`_E){mY;b|Wzk>HM%jV)4>Hc?rj2;lqK%Vv*5NEuDQqLAXe!hraH7zqnVIr;WOB z2;E*d^Y!ygY0qz+nqf`ZvBKoW-T;OaaGsCEGUhgy{#mUM!ES>wdt?j{R;dC2q}Ee| zO#^9U04Qd^bCJ(xFzWxR&A)OHm2WI%0$2-VL0qIQ_=}6Cn(8t@o=p93E=Hp+ME!4F z+k^n|Q)LW#-l58dt-s>i6?sVjppTyl$;K78Id{C>ZA1*^=Z zo^c{Wxu`lSAJV6AD&Fr_2`209u77Vad<<;pnU7rms({)_lyOz+isv_DGy-g@p>>%r zX;t{i(K(zHg06(91vliOV>objDZ5HT!Q6era?}uk`fnD#zV=>B;EWs`?2sQMXNI6= znH|H>XtfXND0#G7me$LNY4GYxLT+^*P3vKl%4ZsmFm+sL2yU5CDq=md_ZVC;J084k zfkg{7?^VIx$&^oYh&Y*_Y#Psdsk=V&=~_Ig+&;(P;tN>F#}o_k4_Pmdn8Hni{jitV ztkN)YqrE?{PKzPFlY=A7AGo+h9ackZy7a~J&Y{&an479P{Ny!(@_60-I{h7cP8vU# zIzC05R-{pfv@p){02>!pAhgFbXHtAC`xG7eVa79ODwlwLTd93(^Et<^g5@~ew#k+R zCEcdepbP!FOEUl{h9GVZeUIdiSVpqKMi&9+Ap1w(kVcRU>Kh1Me(4)PwS4A!v_j4c z8=@!+SYJWf1+0OBz&idR5fA|#x`V=5G#~)ZKdv8+A;M1WMk*mJy=TEdz3xT2N^}h_ zB!*h&LrbpFw5p?zn^EWs} z3TH<<&Nd`u9t|*W1GqU^o$qS^t>sr8K4B4!{@>gW5&-cskLwR!YQ%o8=@oJ;-ns%H z?oZkNSPO6+ouKvn!u?ELIbd3G`Q`zRnK}pw3T$^!`#L zvR-4~gTJMkFh1gRi&tzqopaQI%c?543tyuQwZ?CNw$1J+a~S-HQj9^Iq}~J8U+$p5 zQ6J0H^a<*?BN5(=bj@fk#w)PyrAtToRewtFIhAv&ij~U|$s%Dhxb&hfxXT6>jJHhx z>Mv*Evj6Z`W-rKJ;fp`>_Eva3@8u=|L}QO@Bt0@=wNmP9or2(KCfWQg23~tJ>`WH zMT}6S);A4X*Oj$(0U0XFWXTv~>e}96iDfcG>}(Kja4+7wJZxT0y&nN9%LU)EI?{eC zamiyBY%eEC!%51M68X6~gvF@Y^V;TIMJLj)mzABEq|MDo;F@y5-sOJK=)>%^%aBw! zCeKu%G@n2}0L*?1zYxmk*4kZ|gm$R8`O8xmRWd|wG@ck*Me?keFK&3O}?gh z0<|`=xX~*vUQ!=3CZ5NN>J99)U|4nW9#@i@K&d&~%5Z^TWSidfLPf}@dHtIwQx?e| zCeQs?;rzyCADKKPi?T&t(?$&`4NvMQ6`U5(jn$A!1$leVR+Q%CC%qVl;8He_1H~4U zcQX**L;O9)K7%XKwZJ*ZevdIkevlw2#vgnBHSd5i*5CS>cf+8(V{5-H7$Drc$DoRr zFjuL68aqgI{vxe)7SU`jZ(MqMiF}@E73tA%WroE;S9nLQv&b~D>xGrpVBm@0oQZz|yrYH&X3&r;zHgIz(y(bQwON-4pGHFE6xLAvelDf9 z98O-vMEfbJrf(J;wuZ45T~MjaLsL%;IwSbPOps>_q#U!N#?9qM_(G9FYy85Af1*g* z>>|U)faRr;a8J6^B=!cCRu(pnihH`M>l?Wi7#RlogQ?8I+=JS8CrP%{@&Y_rUC;Ra zbyKEh2ay}BF-Rv1(Ulxx;mr*(b~l<%WPDASJ=h&u@QrWBcUJ%ySbEz-rd^%&=+kCu zROfFaup4C;s8G=dUS_vXhI7`fE@8TmmRF!7BFPSl7E24q}YkEw_{q!bFK?5Ti z+A}_%4rV=4T3mETv#Z#sZ6&$DWTa_YIe#@*A~5>}-rEs}pug+VK&B7#TozTiLz0BNAC^t@e(|biI=4li=${8b}`bTCQ{ zW8Cp2Sg4B7>|d-ZzN%_z5RL+W!<_?Rrqk~Y-zdy)lsYHsxQc8fjR$0WUsR;Q3C=XsT zEN(t!ZM#dp4V*`upA@9jlE8rd7Dy0M6_}~@_4KOoWP9Fph;tU}6YDLH&5wNky*E${ z%Z>Tpy}>XIsMc9O`K8u@`qoJ{w9N)kt)tcXk=MXJG9Os$&KI85JH3aK=|jadOu{C6 zq6nXZya793{BbovzskFsmF&sWXZ;*72#$~9-nxONv`wgk2Qwbn_WzKs3fy}>3F zNTXhV_*sX(_r;qHd}FCRpjuZCJi+?0N1H$gt>>>=H~CAg!=_}4tp?6P_PY*(?M5b+A@I-y+U zFhv4l=Z>^mO|2e309-iu14jl(*;Bmng!?8T7FG_~MjPyo6Q1xFY)`0?ZPHFBH0D~E zU0z}C!}cDr#kWn4$t%yKE^?>`_$+^Wrrr!Cc%0(DR5&$hYMk)x)l=Gac?1*o^r7ov z1RQvemE~T;yrsDf3?a2-?(k2F_=+Meh42a_3~IUt@%r{Cy!~ME3;=Vb?p{Vmv}bs2 z(Dih>jewVPweo3$0ogU1NecxMka1_8MkuDdE0Es|hK1N6u+@zx{ZJ-s9w4_RJ=BSG z`lvj*5ye<*uQjIB$_rKlFyDE~H+UVs?unx)=zD*fYha2Jx$Ag%V}rz9@VOqH(B`vx zpM8{rxTr=$QHBaC{14AN%rcPw9FsnLocQHXF#H-z{-^)f4nGOlE( zT6>jB26t)WA>eO@1}YgCu^(9?B7NsTu>|D+;x92(Jt~Ra1HJ~bfAq(TyY1imJ$F&u2AXWV>0s;^nHaZ_}GooN>KoEx^E}cE$3)XS2p@Hk)E> zLx_jR#d=U=(B+ilR(%*kSXZ_)Ro>DyJcET-!`e_kVba-_Q{_=uXBnEJqg}{eAdVHhFIFV%ckh$BNY$!r}X9928hFdv^SdBBZ zQ-wsq(_N^|9CJscS6q__a35WJ6KQ1Shpo7FQ-mKh-Y(L)N5+22)|d?6(K;(v=)L+b z14&)W2w6Y52l>7c)zl_612 zDGHQy*c($L(IHayNUd|e&u>{qBk~thcU%OxIA z&5C1hZ)eq})r-;tONGpRd}ru_)d)DQoYq-foXG|xb$uQ;*kJN4^o29qB}f^`_Ka0U zm~nl<2ua0lO1`6ZsjtMk@aRica>m6u ztrr-_ns=e>_<_X7XRA-RPvZiI$G7Aeo-Zo65^I6tq*nGF|2~?@6mP-o#z4chUSiiA z3Yu?A$g5$%KyBecDnq~z-h%jR{7au|MOPLp2AqTJcm6_f5TtO(S;77j_+?E|@Yz;54U@2o|76yO7;D4t0vd;?oIdSs7cG6pJpZHltQ^kwR3`Zh*YnvmbXh0z|sOp6vL5=-|L@P8V|%X ziN3PDwbFX2#?OTi9gmOg6ugIiN}Djh>h!JQ;?e{8?zp5{6@TGH+CB+-&QUpj%lMGT zz%7BXEX!6e@!;j7I-^WzUqSnx`5Q<%nJMZ^`gy9aL}oDUaiQniQUonyL6~?_w_;;W z!-8VAB5lg`N&C&GuMwz>r68}jw*irJJ@S(J%{s&B*$wF|5Wyo6#BjW&5roTdL3&m-6i4Dx+tvCS@6( z#c!VzK*qcBl?tG)()wG*J`+P6CV#XWDH+{tFDgQ`lc3ZNS3fWdZh!U0jjNROB+Gw& zOX)>F8MgaJ8sfAK{MNB;h$;%!exwW@a@iM{TH^%Tv)3-=Jx;M-0Z$VE;k%Y!pE)^W z5yz3-ABv4GGK-@gWGSMQi_B~ozBuu8KX=|Pyo#kIysVi$VwS%ZVGe8K!Al6!EQx<3 zeD`fbQI#f)G48mj{p#t=N$zDlIRCcMW4W>R1$5o0A6eg6@3q`*s9vbH;#FUdoII-6 zRtqB5yVtYt$DvLEV&W2KVkrj~5pKGYT20NGdT2Pzq>gQj7@xl;Zb%~H9mXHzO zj-BUejq7FgCpH)!Or)hXKl{#~xWchSt7sCTQag^NAUt&()Bv;!8MI$+2O1y3KXcP{ z8Fa(o9eY0G@LpQcl=gN$-zoZgeu47r*K?Q@mfQd6wKDrbeNg!P&pzn;xk41Fsl(D1 zu-7Vo2|OzOqt~JY)r!A*t+8Kf5m*3CTq$r4vfpzVJcA$=l*`Y4{k#j9%le{!=CVlO z&s>%T<#KPhrqC~-6JWr2JVOAFOh``qIlRboCwuMb7PD&V46l-P4 zM=m%0^h9ha{NAq2s3*S*9GwtPuFSfIIxS=n?HgzO=-n6>{tnC1M)5mrp}jQ5NT&%o zrz3ML?$3eduvufc)$E_pzwY~|xX65FKM_Pe?rhb$h~^Ct%vHy$-Ar`Xk@BfuB4d;zt55xCPH@R&o+I73lRel z_+q>FZ&~Y>#p|acu>^bN3h1a6VJYXF(n_4vuFSFA=3nY8LgYSy>q1Ezx18zt;C5ME z`!%um?$PbY#*JyneaDc{xVY+b&7x?FHCb(frn*;B1f&kuF84)et&lQ_Z&Wkl>zbA6 z)_uKPI*s+j%eo_sVc&c z@0ai@M|L8xPAlHu7?;Yy&x%FE#C$OktYGqc0U;D`-11o#y1$-T(b0rWnY?@Dxv^p7 zM@1zWqF~_X?Lf}{-e*27=ZO2W&-{Jw09ec%_?|Ni|C%${fb!bzpE*MV%9$KKcr1Gl zGahofV2K!FiziWpH-qN%+rvEjk<>Ig<4<@`R6Oap`|rs{^`?3* zcwOhuND=kQaJXLFTlil~gQvl2s0x_2M}G7t%Eb(-=X+fMS6_-28P%cnn5nBjgm6}R zm%U5d!vX6auB}vwjodq9$)KBJ*%;GCZ+>`yW#hG9aN)HIZnI-|vz_p9%vDs#(aZGY zz?d29C_sStXP?;w)DX}B^_jAXmT@V-Ymoh(+kh~FG*E662K>EF8&>|A+bj4#b6XCS z+hkW`#x2SfR7|8TeB4kWh!t~j^96RHgH;r6@*hlvSuLv8?>Oh0!Ey9nZdC;>z5fxTN8B8hn`4FbQC9CXj9Apj>0&y^p;|~u0aeiLi&EjoX3DoV%p+9sR z_}u599_cULrvIe}GZ$QpLjul0_B#gnV~{WiBisC6F|YxZ_%lEJ1H`xnVOXCmj>?fN%>s+1Bp(io-)N<@OBUyi5qFE`|qdz1`t&>~E|> z30_4b^;MXgDU!ao2nq3y(ANUx(W`QEPYUV*3EkQD>D33cjhkwUxbsbR!ih)bHzl;L zZ}NO%U<=E|`W%e!kz9qa4U6XQoQLt6W+a?ZHmj?IlV5)YPmH7W<@=VCXR=QBxW^*p zA)t6NE&s;r2CH(j9EsMSN!TkmsL1iljBC3@C~r=9M&Q$s9jK^o1&0!g8$9j=(QUhV z^&J%5Q?Vu46NgX5k{w{@idOvtFk4p0QOlCCmk$NaEvYJ_IuPbeBIY(RlvyyV^Q`C( zUkD9VpXfg5_=Tzzz3(W^gv0Jb*r(W7^zf-|@u=6gu_}7M=9D?Mg1FTNd~8|6ST}sA zH7J5DqH5}MtEwA_CX93 z#hwYV4q0tv$ln^V%2~Uw3?})0lIG-5=+4xvww*YKM7sF*HBaHz#Q^|;-&z{ z9!}Cxoe}sbJHl8b5TkLc&fA7^6hE(}%6ZN(IvW@tqHj5E3CuZAo`CdZA84Qf(!#ze z#P~trHOPL?7eI562q<52OaGoPb&)LIMhITOe8E=xnJ+iMe39ENQrA1%oyV!Mo$xht}O)^_E`K*0S++TGqq$J%Q_jmY{XfD#uL4ReW;b*U# z&4KKbur@M%hnyl}rc_MA&HPQ}@cSA;YyEY9rnU1t{(tY!hG{|CX<_rr`2z5~F_ni6 zZJQc&*3z}}W39lmvr*t#3l=4*O;2ln6yC-sK6<>a9lD{A_k8lAfm0g}lzWZr>stc+ z(2qBYn)%n(!~4>z-Ejvf?U|()nc1WDx2Z$ZflRY^jpNJS0ZcL+)8J_<7@f=ZWIO zr&ZjtO~iEvCXf z$GP|Rq~5fvCc$K3;gt6x&f>Dgb(d_(AdP2Y>Dz8&i#aisOAjS!&X;t zq_^^VREQ3xS^3y}v>d8x;k#wU;TE>bMQOz>d&yIVV7jMJoDU3AUwoWnb|7%nv_29*9(aa;qF$5Kd?XIXLpa@P(O%x+%U8GecD-85*vXKk=h~C$|zBd z(Ozpzryz}>JhIu9gM_i3p3ujy8L2$RTV(KzER+XZ33b%Ixr!OeyM@f~tyB0sT^*JR zm4zvQ=b2FTw)dt9j5&n$=l)FdmorU?mzMEdz&Xf%*Ay_?Akpud^4sse)#Cs)MIWRo zqGo?;iYP2lQ{-Fjn~g=x86w*&7@j|(YG&ypGZvqf%Y=EAgB$(o0^Hob<1o@wjcmw_*bjF%F$%2T;S z%5$+jiZmVDC69(d{F`2FlDOwDvfaiuGLT%*tM*Zq-*Kx3FzU+& zG^9K4@8G>M^Wf^0!8TCa%0AfvpHa$XiS%Gcr?1<7r5B%mDI!MS^Y*^y>%M0H*4LoP z0cs!C00H1p_0)r{MwJs8`|}~kP=TlX=0fb_&RJ?LEYzwqcI;0D9gqmXzMv~xvgwQ7 zxd1>u1!>r?zTLg|`w!o4!hn1$p8d0r|Nc3{HZ|Ya2SK23%is@w_!g*NLLeRE+M+vG zNJ@ukB)bth*pN^_!gSJsbzGB&JG%X3tf+vwLOY1ht+yac(SAu!tajxd9~!+oooeVN zvWB8^p35I3XN$u`ukocH-SQK;6>}!9&YtQDWS?D`v|>E6(t@wyR%`gSnT<^=i5@nD zONW8cGySa@^e2M>x3|ubD0&CY-F%elRZDNqZcFTx_J&$mKM7yIb1gMOKe-4Mm^|eP=4s1Oe}!8nHOduYHuZZ1b$ZI8e{HCCflqBj;<;RyNHW z@5SOINCstt&aLu0DA+nH)1bBrkzhN0^R=ynb<%d`fZ7+nkDEVz>jm5^fd;4+zU9t{ z*8T;n_IF)dIrX%#CFMj~WbgYcxP0+1-^O8zS^h5!-OZiGqG0 z{^|Z8shI!LvILq*9Wu|ZRR4bBWEEDKYtR7-GkQ!E@1P#c#dVw&6j-OxlR=`U>P3i( zv2yGkVcey?!a6{2)KEkY-UHW>TJ$RsvKB{P_9MQ?vv1<+J0Xzb zj%+PV0-krX`bui!o5rAMgiILN>}qCYy0q!PhI|mkVW<%kX-8qLbZX##H9hm9IL|6x#RCL@mE(mC+I->Obpok(* z$D?t+F>UGU?@^5U-g{W^v6AAt9e2B1i63cq88`7)WEp@>^}NQFYTAOna8woJ5ROF^ zRS_wUGKmeKU^`CaZeI@+yk24u={&AY6kVB!SJ8>UDfGYW3nD=`PepWhgAOBGz(Y{8 zK;AHYjrPTq1wu-m?6O_`vw>ZQsg|9G(zq8=m4VR`@Ki+X)O62 z@VT3IDX+%VPRFc^ZoSpL1*->POkb}tB=ys7@ zkZ!`%{LJlFAPx!U_--tǻxA9}b@>qwRZgTMZq~5tR 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