aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
Diffstat (limited to 'example')
-rw-r--r--example/ndpiReader.c18
-rw-r--r--example/reader_util.c6
-rw-r--r--example/reader_util.h5
3 files changed, 25 insertions, 4 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c
index 2dde10182..01e0864cc 100644
--- a/example/ndpiReader.c
+++ b/example/ndpiReader.c
@@ -1024,6 +1024,8 @@ static void printFlow(u_int16_t id, struct ndpi_flow_info *flow, u_int16_t threa
return;
if(!json_flag) {
+ u_int i;
+
fprintf(out, "\t%u", id);
fprintf(out, "\t%s ", ipProto2Name(flow->protocol));
@@ -1101,6 +1103,7 @@ static void printFlow(u_int16_t id, struct ndpi_flow_info *flow, u_int16_t threa
if(flow->ssh_tls.ja3_client[0] != '\0') fprintf(out, "[JA3C: %s%s]", flow->ssh_tls.ja3_client,
print_cipher(flow->ssh_tls.client_unsafe_cipher));
+
if(flow->ssh_tls.server_info[0] != '\0') fprintf(out, "[Server: %s]", flow->ssh_tls.server_info);
if(flow->ssh_tls.server_hassh[0] != '\0') fprintf(out, "[HASSH-S: %s]", flow->ssh_tls.server_hassh);
@@ -1108,6 +1111,21 @@ static void printFlow(u_int16_t id, struct ndpi_flow_info *flow, u_int16_t threa
print_cipher(flow->ssh_tls.server_unsafe_cipher));
if(flow->ssh_tls.server_organization[0] != '\0') fprintf(out, "[Organization: %s]", flow->ssh_tls.server_organization);
+ if((flow->detected_protocol.master_protocol == NDPI_PROTOCOL_TLS)
+ || (flow->detected_protocol.app_protocol == NDPI_PROTOCOL_TLS)) {
+ if((flow->ssh_tls.sha1_cert_fingerprint[0] == 0)
+ && (flow->ssh_tls.sha1_cert_fingerprint[1] == 0)
+ && (flow->ssh_tls.sha1_cert_fingerprint[2] == 0))
+ ; /* Looks empty */
+ else {
+ fprintf(out, "[Certificate SHA-1: ");
+ for(i=0; i<20; i++)
+ fprintf(out, "%s%02X", (i > 0) ? ":" : "",
+ flow->ssh_tls.sha1_cert_fingerprint[i] & 0xFF);
+ fprintf(out, "]");
+ }
+ }
+
if(flow->ssh_tls.notBefore && flow->ssh_tls.notAfter) {
char notBefore[32], notAfter[32];
struct tm a, b;
diff --git a/example/reader_util.c b/example/reader_util.c
index b4f5d984a..0b4e6c2c8 100644
--- a/example/reader_util.c
+++ b/example/reader_util.c
@@ -994,6 +994,8 @@ void process_ndpi_collected_info(struct ndpi_workflow * workflow, struct ndpi_fl
flow->ndpi_flow->protos.stun_ssl.ssl.ja3_server);
flow->ssh_tls.server_unsafe_cipher = flow->ndpi_flow->protos.stun_ssl.ssl.server_unsafe_cipher;
flow->ssh_tls.server_cipher = flow->ndpi_flow->protos.stun_ssl.ssl.server_cipher;
+ memcpy(flow->ssh_tls.sha1_cert_fingerprint,
+ flow->ndpi_flow->l4.tcp.tls_sha1_certificate_fingerprint, 20);
}
}
@@ -1171,8 +1173,8 @@ static struct ndpi_proto packet_processing(struct ndpi_workflow * workflow,
if(enough_packets || (flow->detected_protocol.app_protocol != NDPI_PROTOCOL_UNKNOWN)) {
if((!enough_packets)
&& (flow->detected_protocol.master_protocol == NDPI_PROTOCOL_TLS)
- && (flow->ndpi_flow->protos.stun_ssl.ssl.ja3_server[0] == '\0'))
- ; /* Wait for JA3S certificate */
+ && (!flow->ndpi_flow->l4.tcp.tls_srv_cert_fingerprint_processed))
+ ; /* Wait for certificate fingerprint */
else {
/* New protocol detected or give up */
flow->detection_completed = 1;
diff --git a/example/reader_util.h b/example/reader_util.h
index 95eac67e8..0a847e3de 100644
--- a/example/reader_util.h
+++ b/example/reader_util.h
@@ -161,10 +161,11 @@ typedef struct ndpi_flow_info {
char client_info[64], server_info[64],
client_hassh[33], server_hassh[33],
server_organization[64],
- ja3_client[33], ja3_server[33];
+ ja3_client[33], ja3_server[33],
+ sha1_cert_fingerprint[20];
time_t notBefore, notAfter;
u_int16_t server_cipher;
- ndpi_cipher_weakness client_unsafe_cipher, server_unsafe_cipher;
+ ndpi_cipher_weakness client_unsafe_cipher, server_unsafe_cipher;
} ssh_tls;
void *src_id, *dst_id;