Skip to content

Commit

Permalink
Merge branch 'dev' into config2
Browse files Browse the repository at this point in the history
  • Loading branch information
IvanNardi committed Jan 2, 2024
2 parents 731abfc + 0180c1f commit 1538bb9
Show file tree
Hide file tree
Showing 322 changed files with 2,108 additions and 1,807 deletions.
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,11 @@
/fuzz/fuzz_alg_hll_seed_corpus.zip
/fuzz/fuzz_alg_jitter_seed_corpus.zip
/fuzz/fuzz_alg_crc32_md5_seed_corpus.zip
/fuzz/fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip
/fuzz/fuzz_alg_bytestream_seed_corpus.zip
/fuzz/fuzz_ds_patricia_seed_corpus.zip
/fuzz/fuzz_ds_libcache_seed_corpus.zip
/fuzz/fuzz_ds_tree_seed_corpus.zip
/fuzz/fuzz_ds_ptree_seed_corpus.zip
/fuzz/fuzz_ds_ahocorasick_seed_corpus.zip
/fuzz/fuzz_ds_bitmap64_seed_corpus.zip
/fuzz/fuzz_ds_domain_classify_seed_corpus.zip
/fuzz/fuzz_libinjection_seed_corpus.zip
Expand Down
128 changes: 79 additions & 49 deletions doc/protocols.rst

Large diffs are not rendered by default.

12 changes: 1 addition & 11 deletions fuzz/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -616,18 +616,10 @@ 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)

files_corpus_fuzz_ds_ahocorasick := $(wildcard corpus/fuzz_ds_ahocorasick/*)
fuzz_ds_ahocorasick_seed_corpus.zip: $(files_corpus_fuzz_ds_ahocorasick)
zip -j fuzz_ds_ahocorasick_seed_corpus.zip $(files_corpus_fuzz_ds_ahocorasick)

files_corpus_fuzz_alg_ses_des := $(wildcard corpus/fuzz_alg_ses_des/*)
fuzz_alg_ses_des_seed_corpus.zip: $(files_corpus_fuzz_alg_ses_des)
zip -j fuzz_alg_ses_des_seed_corpus.zip $(files_corpus_fuzz_alg_ses_des)

files_corpus_fuzz_alg_hw_rsi_outliers_da := $(wildcard corpus/fuzz_alg_hw_rsi_outliers_da/*)
fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip: $(files_corpus_fuzz_alg_hw_rsi_outliers_da)
zip -j fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip $(files_corpus_fuzz_alg_hw_rsi_outliers_da)

files_corpus_fuzz_alg_bins := $(wildcard corpus/fuzz_alg_bins/*)
fuzz_alg_bins_seed_corpus.zip: $(files_corpus_fuzz_alg_bins)
zip -j fuzz_alg_bins_seed_corpus.zip $(files_corpus_fuzz_alg_bins)
Expand Down Expand Up @@ -700,7 +692,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_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_ds_bitmap64_seed_corpus.zip fuzz_ds_domain_classify_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_is_stun_udp_seed_corpus.zip fuzz_is_stun_tcp_seed_corpus.zip fuzz_filecfg_malicious_sha1_seed_corpus.zip fuzz_filecfg_malicious_ja3_seed_corpus.zip fuzz_filecfg_risk_domains_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_ds_patricia_seed_corpus.zip fuzz_alg_ses_des_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_ds_bitmap64_seed_corpus.zip fuzz_ds_domain_classify_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_is_stun_udp_seed_corpus.zip fuzz_is_stun_tcp_seed_corpus.zip fuzz_filecfg_malicious_sha1_seed_corpus.zip fuzz_filecfg_malicious_ja3_seed_corpus.zip fuzz_filecfg_risk_domains_seed_corpus.zip
cp corpus/fuzz_*seed_corpus.zip .

#Create dictionaries exactly as expected by oss-fuzz.
Expand Down Expand Up @@ -745,9 +737,7 @@ distdir:
-o -path './corpus/fuzz_alg_hll/*' \
-o -path './corpus/fuzz_alg_jitter/*' \
-o -path './corpus/fuzz_alg_crc32_md5/*' \
-o -path './corpus/fuzz_alg_hw_rsi_outliers_da/*' \
-o -path './corpus/fuzz_alg_bytestream/*' \
-o -path './corpus/fuzz_ds_ahocorasick/*' \
-o -path './corpus/fuzz_ds_libcache/*' \
-o -path './corpus/fuzz_ds_tree/*' \
-o -path './corpus/fuzz_ds_bitmap64/*' \
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions fuzz/fuzz_alg_crc32_md5.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
ndpi_crc16_ccit(data, size);
ndpi_crc16_ccit_false(data, size);
ndpi_crc16_xmodem(data, size);
ndpi_crc16_x25(data, size);
ndpi_crc32(data, size);
ndpi_md5(data, size, hash);

Expand Down
39 changes: 30 additions & 9 deletions fuzz/fuzz_alg_hw_rsi_outliers_da.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
u_int16_t num_periods;
u_int8_t additive_seeasonal;
double alpha, beta, gamma, forecast, confidence_band;
float significance;
u_int32_t *values, predict_periods;
float significance, lower, upper, threshold;
u_int32_t *values, *values2, predict_periods;
u_int32_t prediction;
u_int32_t value_to_check;
bool *outliers;

/* Use the same (integral) dataset to peform: RSI, Data analysis, HW, outliers
and linear regression */
/* Use the same (integral) dataset to peform: RSI, Data analysis, HW, outliers,
linear regression, Pearson correlation */

/* Just to have some data */
if(fuzzed_data.remaining_bytes() < 1024)
Expand All @@ -33,17 +34,21 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
/* Data set */
num_values = fuzzed_data.ConsumeIntegral<u_int8_t>();
values = (u_int32_t *)ndpi_malloc(sizeof(u_int32_t) * num_values);
values2 = (u_int32_t *)ndpi_malloc(sizeof(u_int32_t) * num_values);
outliers = (bool *)ndpi_malloc(sizeof(bool) * num_values);
if (!values || !outliers) {
if (!values || !values2 || !outliers) {
ndpi_free(values);
ndpi_free(values2);
ndpi_free(outliers);
return -1;
}
for (i = 0; i < num_values; i++)
for (i = 0; i < num_values; i++) {
values[i] = fuzzed_data.ConsumeIntegral<u_int32_t>();
values2[i] = fuzzed_data.ConsumeIntegral<u_int32_t>();
}

/* Init HW */
num_periods = fuzzed_data.ConsumeIntegral<u_int8_t>();
num_periods = fuzzed_data.ConsumeIntegral<u_int16_t>();
additive_seeasonal = fuzzed_data.ConsumeBool();
alpha = fuzzed_data.ConsumeFloatingPointInRange<double>(0, 1);
beta = fuzzed_data.ConsumeFloatingPointInRange<double>(0, 1);
Expand All @@ -57,7 +62,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {

/* Init Data Analysis */
max_series_len = fuzzed_data.ConsumeIntegral<u_int16_t>();
a = ndpi_alloc_data_analysis(max_series_len);
if(fuzzed_data.ConsumeBool()) {
a = ndpi_alloc_data_analysis(max_series_len);
for (i = 0; i < num_values; i++) {
ndpi_data_add_value(a, values[i]);
}
} else {
a = ndpi_alloc_data_analysis_from_series(values, num_values);
}

/* Init Linear Regression */
predict_periods = fuzzed_data.ConsumeIntegral<u_int8_t>();
Expand All @@ -68,7 +80,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
ndpi_hw_add_value(&hw, values[i], &forecast, &confidence_band);
if (rc_rsi == 0)
ndpi_rsi_add_value(&rsi, values[i]);
ndpi_data_add_value(a, values[i]);
}
ndpi_find_outliers(values, outliers, num_values);
ndpi_predict_linear(values, num_values, predict_periods, &prediction);
Expand All @@ -94,13 +105,23 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
if (num_values > 1)
ndpi_data_ratio2str(ndpi_data_ratio(values[0], values[1]));

/* Outlier */
value_to_check = fuzzed_data.ConsumeIntegral<u_int32_t>();
threshold = fuzzed_data.ConsumeFloatingPointInRange<float>(0, 2^32 - 1);
ndpi_is_outlier(values, num_values, value_to_check, threshold,
&lower, &upper);

/* Pearson correlation */
ndpi_pearson_correlation(values, values2, num_values);

/* Done. Free */
if (rc_hw == 0)
ndpi_hw_free(&hw);
if (rc_rsi == 0)
ndpi_free_rsi(&rsi);
ndpi_free_data_analysis(a, 1);
ndpi_free(values);
ndpi_free(values2);
ndpi_free(outliers);

return 0;
Expand Down
4 changes: 2 additions & 2 deletions fuzz/fuzz_alg_ses_des.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
ndpi_free(values);

significance = fuzzed_data.ConsumeFloatingPointInRange<float>(0, 1.1);
rc_ses = ndpi_ses_init(&s, alpha_ses, significance);
rc_des = ndpi_des_init(&d, alpha_des, beta, significance);
rc_ses = ndpi_ses_init(fuzzed_data.ConsumeBool() ? &s : NULL, alpha_ses, significance);
rc_des = ndpi_des_init(fuzzed_data.ConsumeBool() ? &d : NULL, alpha_des, beta, significance);

num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>();
for (i = 0; i < num_iteration; i++) {
Expand Down
61 changes: 32 additions & 29 deletions fuzz/fuzz_ds_ahocorasick.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ extern "C" int ac_domain_match_handler(AC_MATCH_t *m, AC_TEXT_t *txt, AC_REP_t *

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
FuzzedDataProvider fuzzed_data(data, size);
u_int16_t i, num_iteration, is_added = 0;
u_int16_t i, j, num_iteration, is_added = 0;
AC_AUTOMATA_t *a;
void *a2;
MATCH_CALLBACK_f mc;
Expand All @@ -20,7 +20,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
char *value_dup, *value_added;
AC_REP_t match;
AC_TEXT_t ac_input_text;
FILE *f;
u_int16_t protocol_id;
ndpi_protocol_category_t category;
ndpi_protocol_breed_t breed;
Expand Down Expand Up @@ -59,31 +58,38 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {

num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>();
for (i = 0; i < num_iteration; i++) {
memset(&ac_pattern, 0, sizeof(ac_pattern));

std::string value = fuzzed_data.ConsumeRandomLengthString(64);
value_dup = ndpi_strdup(value.c_str());
if (!value_dup)
continue;

ac_pattern.astring = value_dup;
ac_pattern.length = strlen(value_dup);
ac_pattern.rep.number = fuzzed_data.ConsumeIntegral<u_int16_t>();
ac_pattern.rep.category = 0;
ac_pattern.rep.breed = 0;
ac_pattern.rep.level = fuzzed_data.ConsumeIntegralInRange(0, 2);
ac_pattern.rep.from_start = fuzzed_data.ConsumeBool();
ac_pattern.rep.at_end = fuzzed_data.ConsumeBool();
ac_pattern.rep.dot = memchr(value_dup, '.', strlen(value_dup)) != NULL;

if (ac_automata_add(a, &ac_pattern) != ACERR_SUCCESS) {
ndpi_free(value_dup);
} else {
/* Keep one random string really added */
if (is_added == 0 && fuzzed_data.ConsumeBool()) {
value_added = ndpi_strdup(value_dup);
if (value_added)
is_added = 1;
/* Adding (sometimes) the same string twice, with different "properties" */
for (j = 0; j < 2; j++) {
if (j == 1 && fuzzed_data.ConsumeBool())
continue;

memset(&ac_pattern, 0, sizeof(ac_pattern));

value_dup = ndpi_strdup(value.c_str());
if (!value_dup)
continue;

ac_pattern.astring = value_dup;
ac_pattern.length = strlen(value_dup);
ac_pattern.rep.number = fuzzed_data.ConsumeIntegral<u_int16_t>();
ac_pattern.rep.category = 0;
ac_pattern.rep.breed = 0;
ac_pattern.rep.level = fuzzed_data.ConsumeIntegralInRange(0, 2);
ac_pattern.rep.from_start = fuzzed_data.ConsumeBool();
ac_pattern.rep.at_end = fuzzed_data.ConsumeBool();
ac_pattern.rep.dot = memchr(value_dup, '.', strlen(value_dup)) != NULL;

if (ac_automata_add(a, &ac_pattern) != ACERR_SUCCESS) {
ndpi_free(value_dup);
} else {
/* Keep one random string really added */
if (is_added == 0 && fuzzed_data.ConsumeBool()) {
value_added = ndpi_strdup(value_dup);
if (value_added)
is_added = 1;
}
}
}

Expand Down Expand Up @@ -133,10 +139,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
ndpi_free(value_added);
}

f = fopen("/dev/null", "w");
ac_automata_dump(a, f);
if (f)
fclose(f);
ac_automata_dump(a, stdout);

ac_automata_get_stats(a, &stats);

Expand Down
2 changes: 2 additions & 0 deletions fuzz/fuzz_ds_ahocorasick.options
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[libfuzzer]
close_fd_mask=1
2 changes: 1 addition & 1 deletion fuzz/fuzz_ds_domain_classify.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {

ndpi_domain_classify_add_domains(d,
fuzzed_data.ConsumeIntegralInRange(0, NDPI_LAST_IMPLEMENTED_PROTOCOL - 1),
(char *)"random_list.list");
fuzzed_data.ConsumeBool() ? (char *)"random_list.list" : (char *)"wrong_path");

if (fuzzed_data.ConsumeBool())
ndpi_domain_classify_finalize(d);
Expand Down
3 changes: 2 additions & 1 deletion src/include/ndpi_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -1636,6 +1636,7 @@ extern "C" {
u_int16_t ndpi_crc16_ccit(const void* data, size_t n_bytes);
u_int16_t ndpi_crc16_ccit_false(const void *data, size_t n_bytes);
u_int16_t ndpi_crc16_xmodem(const void *data, size_t n_bytes);
u_int16_t ndpi_crc16_x25(const void* data, size_t n_bytes);
u_int32_t ndpi_crc32(const void* data, size_t n_bytes);
u_int32_t ndpi_nearest_power_of_two(u_int32_t x);

Expand Down Expand Up @@ -1815,7 +1816,7 @@ extern "C" {

/* ******************************* */

u_int32_t ndpi_quick_16_byte_hash(u_int8_t *in_16_bytes_long);
u_int32_t ndpi_quick_16_byte_hash(const u_int8_t *in_16_bytes_long);

/* ******************************* */

Expand Down
4 changes: 3 additions & 1 deletion src/include/ndpi_protocol_ids.h
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ typedef enum {
NDPI_PROTOCOL_MPEGTS = 198,
NDPI_PROTOCOL_SNAPCHAT = 199,
NDPI_PROTOCOL_SINA = 200,
NDPI_PROTOCOL_HANGOUT_DUO = 201, /* Google Hangout ad Duo (merged as they are very similar) */
NDPI_PROTOCOL_GOOGLE_MEET = 201,
NDPI_PROTOCOL_IFLIX = 202,
NDPI_PROTOCOL_GITHUB = 203,
NDPI_PROTOCOL_BJNP = 204,
Expand Down Expand Up @@ -406,6 +406,8 @@ typedef enum {
NDPI_PROTOCOL_JSON_RPC = 375,
NDPI_PROTOCOL_WEBDAV = 376,
NDPI_PROTOCOL_APACHE_KAFKA = 377,
NDPI_PROTOCOL_NOMACHINE = 378,
NDPI_PROTOCOL_IEC62056 = 379,

#ifdef CUSTOM_NDPI_PROTOCOLS
#include "../../../nDPI-custom/custom_ndpi_protocol_ids.h"
Expand Down
8 changes: 2 additions & 6 deletions src/include/ndpi_typedefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -859,9 +859,6 @@ struct ndpi_flow_tcp_struct {
/* NDPI_PROTOCOL_LOTUS_NOTES */
u_int8_t lotus_notes_packet_id;

/* NDPI_PROTOCOL_TEAMVIEWER */
u_int8_t teamviewer_stage;

/* NDPI_PROTOCOL_ZMQ */
u_int8_t prev_zmq_pkt_len;
u_char prev_zmq_pkt[10];
Expand Down Expand Up @@ -902,9 +899,6 @@ struct ndpi_flow_udp_struct {
/* NDPI_PROTOCOL_SKYPE */
u_int8_t skype_crc[4];

/* NDPI_PROTOCOL_TEAMVIEWER */
u_int8_t teamviewer_stage;

/* NDPI_PROTOCOL_EAQ */
u_int8_t eaq_pkt_id;
u_int32_t eaq_sequence;
Expand Down Expand Up @@ -1459,6 +1453,8 @@ struct ndpi_flow_struct {
/* NDPI_PROTOCOL_OOKLA */
u_int8_t ookla_stage : 1;

/* NDPI_PROTOCOL_TEAMVIEWER */
u_int8_t teamviewer_stage : 3;

/* NDPI_PROTOCOL_OPENVPN */
u_int8_t ovpn_session_id[2][8];
Expand Down
12 changes: 12 additions & 0 deletions src/lib/ndpi_analyze.c
Original file line number Diff line number Diff line change
Expand Up @@ -1729,6 +1729,9 @@ double ndpi_pearson_correlation(u_int32_t *values_a, u_int32_t *values_b, u_int1
variance_a = sum_squared_diff_a / (double)num_values, variance_b = sum_squared_diff_b / (double)num_values;
covariance = sum_product_diff / (double)num_values;

if(variance_a == 0.0 || variance_b == 0.0)
return(0.0);

return(covariance / sqrt(variance_a * variance_b));
}

Expand Down Expand Up @@ -1830,6 +1833,15 @@ u_int16_t ndpi_crc16_xmodem(const void *data, size_t n_bytes) {
return __crc16(0, data, n_bytes);
}

u_int16_t ndpi_crc16_x25(const void* data, size_t n_bytes) {
u_int16_t crc = 0xFFFF;
u_int8_t* b = (u_int8_t*)data;
while (n_bytes--) {
crc = (crc >> 8) ^ crc16_ccitt_table[(crc ^ *b++) & 0xFF];
}
return (crc ^ 0xFFFF);
}

/* ********************************************************** */
/* http://home.thep.lu.se/~bjorn/crc/crc32_fast.c */
/* ********************************************************** */
Expand Down
6 changes: 3 additions & 3 deletions src/lib/ndpi_content_match.c.inc
Original file line number Diff line number Diff line change
Expand Up @@ -608,8 +608,8 @@ static ndpi_protocol_match host_match[] =
{ "app-measurement.com", "Google", NDPI_PROTOCOL_GOOGLE, NDPI_PROTOCOL_CATEGORY_WEB, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_DEFAULT_LEVEL },
{ ".app-measurement.com", "Google", NDPI_PROTOCOL_GOOGLE, NDPI_PROTOCOL_CATEGORY_WEB, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_DEFAULT_LEVEL },

/* Google Hangout */
{ "images2-hangout-opensocial.googleusercontent.com", "GoogleHangout", NDPI_PROTOCOL_HANGOUT_DUO, NDPI_PROTOCOL_CATEGORY_CHAT, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_DEFAULT_LEVEL },
/* Google Meet */
{ "meet.google.com", "GoogleMeet", NDPI_PROTOCOL_GOOGLE_MEET, NDPI_PROTOCOL_CATEGORY_CHAT, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_DEFAULT_LEVEL },

/* Google Services */
{ "googleapis.com", "GoogleServices", NDPI_PROTOCOL_GOOGLE_SERVICES, NDPI_PROTOCOL_CATEGORY_WEB, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_DEFAULT_LEVEL },
Expand Down Expand Up @@ -1571,8 +1571,8 @@ static ndpi_tls_cert_name_match tls_certificate_match [] = {
{ "O=Yandex LLC", NDPI_PROTOCOL_YANDEX },
{ "O=Riot Games, Inc.", NDPI_PROTOCOL_RIOTGAMES },
{ "O=Riot Games Inc", NDPI_PROTOCOL_RIOTGAMES },
{ "O=NoMachine", NDPI_PROTOCOL_NOMACHINE },

{ "CN=hangouts", NDPI_PROTOCOL_HANGOUT_DUO },
{ "CN=Snapchat Inc.", NDPI_PROTOCOL_SNAPCHAT_CALL },
{ "CN=NVIDIA GameStream", NDPI_PROTOCOL_GEFORCENOW },

Expand Down
2 changes: 1 addition & 1 deletion src/lib/ndpi_hash.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ u_int32_t ndpi_hash_string_len(const char *str, u_int len) {
two independent 64-bit linear congruential generators are applied
results are mixed, scrambled and cast to 32-bit
*/
u_int32_t ndpi_quick_16_byte_hash(u_int8_t *in_16_bytes_long) {
u_int32_t ndpi_quick_16_byte_hash(const u_int8_t *in_16_bytes_long) {
u_int64_t a = *(u_int64_t*)(in_16_bytes_long + 0);
u_int64_t c = *(u_int64_t*)(in_16_bytes_long + 8);

Expand Down
Loading

0 comments on commit 1538bb9

Please sign in to comment.