aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/whatsapp.c
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2018-08-16 15:23:30 +0200
committerLuca Deri <deri@ntop.org>2018-08-16 15:23:30 +0200
commit3091dc3c4880d3d51cc5a0df6004e941c24f9e28 (patch)
treec13122dd112c4fd284c57cfc0e282fa360364585 /src/lib/protocols/whatsapp.c
parent01bf295a19c19dc4f521ee40f0c478c794e1b5e4 (diff)
Fix for #400
Diffstat (limited to 'src/lib/protocols/whatsapp.c')
-rw-r--r--src/lib/protocols/whatsapp.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/lib/protocols/whatsapp.c b/src/lib/protocols/whatsapp.c
index 6a98eac6b..6964a8e0e 100644
--- a/src/lib/protocols/whatsapp.c
+++ b/src/lib/protocols/whatsapp.c
@@ -33,12 +33,30 @@ void ndpi_search_whatsapp(struct ndpi_detection_module_struct *ndpi_struct,
NDPI_LOG_DBG(ndpi_struct, "search WhatsApp\n");
+ if(flow->l4.tcp.wa_matched_so_far == 0) {
+ if(memcmp(packet->payload, whatsapp_sequence, packet->payload_packet_len)) {
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ } else
+ flow->l4.tcp.wa_matched_so_far = packet->payload_packet_len;
+
+ return;
+ } else {
+ if(memcmp(packet->payload, &whatsapp_sequence[flow->l4.tcp.wa_matched_so_far],
+ sizeof(whatsapp_sequence)-flow->l4.tcp.wa_matched_so_far))
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ else
+ ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_WHATSAPP, NDPI_PROTOCOL_UNKNOWN);
+
+ return;
+ }
+
if((packet->payload_packet_len > 240)
&& (memcmp(packet->payload, whatsapp_sequence, sizeof(whatsapp_sequence)) == 0)) {
NDPI_LOG_INFO(ndpi_struct, "found WhatsApp\n");
ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_WHATSAPP, NDPI_PROTOCOL_UNKNOWN);
- } else
- NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ }
+
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
}
@@ -53,4 +71,3 @@ void init_whatsapp_dissector(struct ndpi_detection_module_struct *ndpi_struct,
ADD_TO_DETECTION_BITMASK);
*id += 1;
}
-