diff options
Diffstat (limited to 'example/ndpiReader.c')
-rw-r--r-- | example/ndpiReader.c | 165 |
1 files changed, 106 insertions, 59 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c index 15f5d6f9a..eff6ca2c5 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -1244,6 +1244,11 @@ static void printFlow(u_int16_t id, struct ndpi_flow_info *flow, u_int16_t threa if(flow->ssh_tls.tls_issuerDN) fprintf(out, "[Issuer: %s]", flow->ssh_tls.tls_issuerDN); if(flow->ssh_tls.tls_subjectDN) fprintf(out, "[Subject: %s]", flow->ssh_tls.tls_subjectDN); + if(flow->ssh_tls.encrypted_sni.esni) { + fprintf(out, "[ESNI: %s]", flow->ssh_tls.encrypted_sni.esni); + fprintf(out, "[ESNI Cipher: %s]", ndpi_cipher2str(flow->ssh_tls.encrypted_sni.cipher_suite)); + } + if((flow->detected_protocol.master_protocol == NDPI_PROTOCOL_TLS) || (flow->detected_protocol.app_protocol == NDPI_PROTOCOL_TLS)) { if(flow->ssh_tls.sha1_cert_fingerprint_set) { @@ -3079,86 +3084,128 @@ void serializerUnitTest() { ndpi_serializer serializer, deserializer; int i; u_int8_t trace = 0; + ndpi_serialization_format fmt = ndpi_serialization_format_tlv; - assert(ndpi_init_serializer(&serializer, ndpi_serialization_format_tlv) != -1); + //trace = 1; + //fmt = ndpi_serialization_format_json; + //fmt = ndpi_serialization_format_csv; + + assert(ndpi_init_serializer(&serializer, fmt) != -1); for(i=0; i<16; i++) { char kbuf[32], vbuf[32]; + snprintf(kbuf, sizeof(kbuf), "Key %d", i); + snprintf(vbuf, sizeof(vbuf), "Value %d", i); assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1); - - snprintf(kbuf, sizeof(kbuf), "Hello %d", i); - snprintf(vbuf, sizeof(vbuf), "World %d", i); - assert(ndpi_serialize_uint32_string(&serializer, i, "Hello") != -1); + assert(ndpi_serialize_uint32_string(&serializer, i, "Data") != -1); assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1); assert(ndpi_serialize_string_uint32(&serializer, kbuf, i*i) != -1); assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1); } - if(trace) - printf("Serialization size: %u\n", ndpi_serializer_get_buffer_len(&serializer)); + if (fmt == ndpi_serialization_format_json) { - assert(ndpi_init_deserializer(&deserializer, &serializer) != -1); + assert(ndpi_serialize_start_of_list(&serializer, "List") != -1); - while(1) { - ndpi_serialization_type kt, et; - et = ndpi_deserialize_get_item_type(&deserializer, &kt); + for(i=0; i<4; i++) { + char kbuf[32], vbuf[32]; + snprintf(kbuf, sizeof(kbuf), "Ignored"); + snprintf(vbuf, sizeof(vbuf), "Item %d", i); + assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1); + assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1); + assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1); + } + assert(ndpi_serialize_end_of_list(&serializer) != -1); + assert(ndpi_serialize_string_string(&serializer, "Last", "Ok") != -1); - if(et == ndpi_serialization_unknown) - break; - else { - u_int32_t k32, v32; - ndpi_string ks, vs; - float vf; - - switch(kt) { - case ndpi_serialization_uint32: - ndpi_deserialize_key_uint32(&deserializer, &k32); - if(trace) printf("%u=", k32); + if(trace) { + u_int32_t buffer_len = 0; + char *buffer = ndpi_serializer_get_buffer(&serializer, &buffer_len); + printf("%s\n", buffer); + exit(0); + } + + } else if (fmt == ndpi_serialization_format_csv) { + + if(trace) { + u_int32_t buffer_len = 0; + char *buffer; + + buffer = ndpi_serializer_get_header(&serializer, &buffer_len); + printf("%s\n", buffer); + + buffer = ndpi_serializer_get_buffer(&serializer, &buffer_len); + printf("%s\n", buffer); + + exit(0); + } + + } else { + if(trace) + printf("Serialization size: %u\n", ndpi_serializer_get_buffer_len(&serializer)); + + assert(ndpi_init_deserializer(&deserializer, &serializer) != -1); + + while(1) { + ndpi_serialization_type kt, et; + et = ndpi_deserialize_get_item_type(&deserializer, &kt); + + if(et == ndpi_serialization_unknown) + break; + else { + u_int32_t k32, v32; + ndpi_string ks, vs; + float vf; + + switch(kt) { + case ndpi_serialization_uint32: + ndpi_deserialize_key_uint32(&deserializer, &k32); + if(trace) printf("%u=", k32); break; - case ndpi_serialization_string: - ndpi_deserialize_key_string(&deserializer, &ks); - if (trace) { - u_int8_t bkp = ks.str[ks.str_len]; - ks.str[ks.str_len] = '\0'; - printf("%s=", ks.str); - ks.str[ks.str_len] = bkp; - } + case ndpi_serialization_string: + ndpi_deserialize_key_string(&deserializer, &ks); + if (trace) { + u_int8_t bkp = ks.str[ks.str_len]; + ks.str[ks.str_len] = '\0'; + printf("%s=", ks.str); + ks.str[ks.str_len] = bkp; + } break; - default: - printf("Unsupported TLV key type %u\n", kt); + default: + printf("Unsupported TLV key type %u\n", kt); return; - } - - switch(et) { - case ndpi_serialization_uint32: - assert(ndpi_deserialize_value_uint32(&deserializer, &v32) != -1); - if(trace) printf("%u\n", v32); - break; + } - case ndpi_serialization_string: - assert(ndpi_deserialize_value_string(&deserializer, &vs) != -1); - if(trace) { - u_int8_t bkp = vs.str[vs.str_len]; - vs.str[vs.str_len] = '\0'; - printf("%s\n", vs.str); - vs.str[vs.str_len] = bkp; - } - break; + switch(et) { + case ndpi_serialization_uint32: + assert(ndpi_deserialize_value_uint32(&deserializer, &v32) != -1); + if(trace) printf("%u\n", v32); + break; + + case ndpi_serialization_string: + assert(ndpi_deserialize_value_string(&deserializer, &vs) != -1); + if(trace) { + u_int8_t bkp = vs.str[vs.str_len]; + vs.str[vs.str_len] = '\0'; + printf("%s\n", vs.str); + vs.str[vs.str_len] = bkp; + } + break; - case ndpi_serialization_float: - assert(ndpi_deserialize_value_float(&deserializer, &vf) != -1); - if(trace) printf("%f\n", vf); - break; + case ndpi_serialization_float: + assert(ndpi_deserialize_value_float(&deserializer, &vf) != -1); + if(trace) printf("%f\n", vf); + break; - default: - if (trace) printf("\n"); - printf("serializerUnitTest: unsupported type %u detected!\n", et); - return; - break; + default: + if (trace) printf("\n"); + printf("serializerUnitTest: unsupported type %u detected!\n", et); + return; + } } - } - ndpi_deserialize_next(&deserializer); + ndpi_deserialize_next(&deserializer); + } } ndpi_term_serializer(&serializer); |