diff options
author | MrRadix <edo.ermini@gmail.com> | 2020-07-22 16:25:01 +0200 |
---|---|---|
committer | MrRadix <edo.ermini@gmail.com> | 2020-07-22 16:25:01 +0200 |
commit | 1c1be5a0d18b44f757f1907cf48c0d44018483f7 (patch) | |
tree | a7a94fb3fcf168ad9850a1c18c192a60472275f9 /src | |
parent | a3ba9253ef3c3ca9fb45348e6dc019c6cf694e31 (diff) | |
parent | 3cd1ec5c9a165c8c53e49568b2da820222252986 (diff) |
Resolved conflicts on fetch
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_typedefs.h | 2 | ||||
-rw-r--r-- | src/lib/protocols/ssh.c | 45 | ||||
-rw-r--r-- | src/lib/third_party/src/hll/hll.c | 91 |
3 files changed, 92 insertions, 46 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index 5f980b506..824e2585f 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -1172,7 +1172,7 @@ struct ndpi_flow_struct { u_char host_server_name[240]; u_int8_t initial_binary_bytes[8], initial_binary_bytes_len; u_int8_t risk_checked; - u_int32_t risk; /* Issues found with this flow [bitmask of ndpi_risk] */ + ndpi_risk risk; /* Issues found with this flow [bitmask of ndpi_risk] */ /* This structure below will not not stay inside the protos diff --git a/src/lib/protocols/ssh.c b/src/lib/protocols/ssh.c index 1b876a42e..5927d066b 100644 --- a/src/lib/protocols/ssh.c +++ b/src/lib/protocols/ssh.c @@ -92,6 +92,7 @@ static void ssh_analyze_signature_version(struct ndpi_detection_module_struct *n if (patch < PATCH_CUTOFF) obsolete_ssh_version = 1; } +<<<<<<< HEAD if (obsolete_ssh_version) { #ifdef SSH_DEBUG printf("[SSH] [SSH Version: %d.%d.%d]\n", major, minor, patch); @@ -99,6 +100,40 @@ static void ssh_analyze_signature_version(struct ndpi_detection_module_struct *n NDPI_SET_BIT(flow->risk, (is_client_signature ? NDPI_SSH_OBSOLETE_CLIENT_VERSION_OR_CIPHER : NDPI_SSH_OBSOLETE_SERVER_VERSION_OR_CIPHER)); } +||||||| f83d0b18 + /* + if(obsolete_ssh_version) + NDPI_SET_BIT(flow->risk, is_client_signature ? NDPI_SSH_OBSOLETE_CLIENT_SIGNATURE : NDPI_SSH_OBSOLETE_SERVER_SIGNATURE); + */ + +======= + /* + if(obsolete_ssh_version) + NDPI_SET_BIT(flow->risk, is_client_signature ? NDPI_SSH_OBSOLETE_CLIENT_SIGNATURE : NDPI_SSH_OBSOLETE_SERVER_SIGNATURE); + */ +} + +/* ************************************************************************ */ + +static void ssh_analyse_cipher(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow, + char *cipher, u_int cipher_len, + u_int8_t is_client_signature) { + /* + List of obsolete ciphers can be found at + https://www.linuxminion.com/deprecated-ssh-cryptographic-settings/ + */ +#ifdef SSH_DEBUG + u_int i; + + printf("[%s] ", is_client_signature ? "CLIENT" : "SERVER"); + + for(i=0; i<cipher_len; i++) + printf("%c", cipher[i]); + + printf("\n"); +#endif +>>>>>>> ntop_origin/dev } /* ************************************************************************ */ @@ -136,7 +171,9 @@ static void ndpi_int_ssh_add_connection(struct ndpi_detection_module_struct /* ************************************************************************ */ -static u_int16_t concat_hash_string(struct ndpi_packet_struct *packet, +static u_int16_t concat_hash_string(struct ndpi_detection_module_struct *ndpi_struct, + struct ndpi_flow_struct *flow, + struct ndpi_packet_struct *packet, char *buf, u_int8_t client_hash) { u_int32_t offset = 22, len, buf_out_len = 0, max_payload_len = packet->payload_packet_len-sizeof(u_int32_t); const u_int32_t len_max = 65565; @@ -178,6 +215,7 @@ static u_int16_t concat_hash_string(struct ndpi_packet_struct *packet, goto invalid_payload; strncpy(&buf[buf_out_len], (const char *)&packet->payload[offset], len); + ssh_analyse_cipher(ndpi_struct, flow, (char*)&packet->payload[offset], len, 1 /* client */); buf_out_len += len; buf[buf_out_len++] = ';'; } @@ -198,6 +236,7 @@ static u_int16_t concat_hash_string(struct ndpi_packet_struct *packet, goto invalid_payload; strncpy(&buf[buf_out_len], (const char *)&packet->payload[offset], len); + ssh_analyse_cipher(ndpi_struct, flow, (char*)&packet->payload[offset], len, 0 /* server */); buf_out_len += len; buf[buf_out_len++] = ';'; } @@ -383,7 +422,7 @@ static void ndpi_search_ssh_tcp(struct ndpi_detection_module_struct *ndpi_struct if(packet->packet_direction == 0 /* client */) { u_char fingerprint_client[16]; - len = concat_hash_string(packet, hassh_buf, 1 /* client */); + len = concat_hash_string(ndpi_struct, flow, packet, hassh_buf, 1 /* client */); ndpi_MD5Init(&ctx); ndpi_MD5Update(&ctx, (const unsigned char *)hassh_buf, len); @@ -401,7 +440,7 @@ static void ndpi_search_ssh_tcp(struct ndpi_detection_module_struct *ndpi_struct } else { u_char fingerprint_server[16]; - len = concat_hash_string(packet, hassh_buf, 0 /* server */); + len = concat_hash_string(ndpi_struct, flow, packet, hassh_buf, 0 /* server */); ndpi_MD5Init(&ctx); ndpi_MD5Update(&ctx, (const unsigned char *)hassh_buf, len); diff --git a/src/lib/third_party/src/hll/hll.c b/src/lib/third_party/src/hll/hll.c index b9d61f21c..a7006c7ed 100644 --- a/src/lib/third_party/src/hll/hll.c +++ b/src/lib/third_party/src/hll/hll.c @@ -82,21 +82,26 @@ int hll_init(struct ndpi_hll *hll, u_int8_t bits) { } void hll_destroy(struct ndpi_hll *hll) { - ndpi_free(hll->registers); - - hll->registers = NULL; + if(hll->registers) { + ndpi_free(hll->registers); + + hll->registers = NULL; + } } void hll_reset(struct ndpi_hll *hll) { - memset(hll->registers, 0, hll->size); + if(hll->registers) + memset(hll->registers, 0, hll->size); } static __inline void _hll_add_hash(struct ndpi_hll *hll, u_int32_t hash) { - u_int32_t index = hash >> (32 - hll->bits); - u_int8_t rank = _hll_rank(hash, hll->bits); - - if(rank > hll->registers[index]) { - hll->registers[index] = rank; + if(hll->registers) { + u_int32_t index = hash >> (32 - hll->bits); + u_int8_t rank = _hll_rank(hash, hll->bits); + + if(rank > hll->registers[index]) { + hll->registers[index] = rank; + } } } @@ -107,46 +112,48 @@ void hll_add(struct ndpi_hll *hll, const void *buf, size_t size) { } double hll_count(const struct ndpi_hll *hll) { - double alpha_mm; - u_int32_t i; - - switch (hll->bits) { - case 4: - alpha_mm = 0.673; - break; - case 5: - alpha_mm = 0.697; - break; - case 6: - alpha_mm = 0.709; - break; - default: - alpha_mm = 0.7213 / (1.0 + 1.079 / (double)hll->size); - break; - } + if(hll->registers) { + double alpha_mm, sum, estimate; + u_int32_t i; - alpha_mm *= ((double)hll->size * (double)hll->size); + switch(hll->bits) { + case 4: + alpha_mm = 0.673; + break; + case 5: + alpha_mm = 0.697; + break; + case 6: + alpha_mm = 0.709; + break; + default: + alpha_mm = 0.7213 / (1.0 + 1.079 / (double)hll->size); + break; + } - double sum = 0; - for(i = 0; i < hll->size; i++) { - sum += 1.0 / (1 << hll->registers[i]); - } + alpha_mm *= ((double)hll->size * (double)hll->size); + + sum = 0; + for(i = 0; i < hll->size; i++) + sum += 1.0 / (1 << hll->registers[i]); - double estimate = alpha_mm / sum; + estimate = alpha_mm / sum; - if (estimate <= 5.0 / 2.0 * (double)hll->size) { - int zeros = 0; + if(estimate <= (5.0 / 2.0 * (double)hll->size)) { + int zeros = 0; - for(i = 0; i < hll->size; i++) - zeros += (hll->registers[i] == 0); + for(i = 0; i < hll->size; i++) + zeros += (hll->registers[i] == 0); - if(zeros) - estimate = (double)hll->size * log((double)hll->size / zeros); + if(zeros) + estimate = (double)hll->size * log((double)hll->size / zeros); - } else if (estimate > (1.0 / 30.0) * 4294967296.0) { - estimate = -4294967296.0 * log(1.0 - (estimate / 4294967296.0)); - } + } else if(estimate > ((1.0 / 30.0) * 4294967296.0)) { + estimate = -4294967296.0 * log(1.0 - (estimate / 4294967296.0)); + } - return estimate; + return estimate; + } else + return(0.); } |