aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/protocols/stun.c17
-rw-r--r--tests/pcap/stun_facebook.pcapngbin0 -> 13492 bytes
-rw-r--r--tests/result/stun_facebook.pcapng.out7
3 files changed, 15 insertions, 9 deletions
diff --git a/src/lib/protocols/stun.c b/src/lib/protocols/stun.c
index f89239f7a..2f14639c9 100644
--- a/src/lib/protocols/stun.c
+++ b/src/lib/protocols/stun.c
@@ -346,17 +346,13 @@ static ndpi_int_stun_t ndpi_int_check_stun(struct ndpi_detection_module_struct *
u_int16_t realm_len = ntohs(*((u_int16_t*)&payload[offset+2]));
if(flow->host_server_name[0] == '\0') {
- u_int j, i = (realm_len > sizeof(flow->host_server_name)) ? sizeof(flow->host_server_name) : realm_len;
+ u_int i;
u_int k = offset+4;
- memset(flow->host_server_name, 0, sizeof(flow->host_server_name));
-
- for(j=0; j<i; j++) {
- if((k+i) < payload_length)
- flow->host_server_name[j] = payload[k++];
- else
- break;
- }
+ i = ndpi_min(realm_len, sizeof(flow->host_server_name) - 1);
+ i = ndpi_min(i, payload_length - k);
+ memcpy(flow->host_server_name, payload + k, i);
+ flow->host_server_name[i] = '\0';
#ifdef DEBUG_STUN
printf("==> [%s]\n", flow->host_server_name);
@@ -368,6 +364,9 @@ static ndpi_int_stun_t ndpi_int_check_stun(struct ndpi_detection_module_struct *
} else if(strstr((char*) flow->host_server_name, "whispersystems.org") != NULL) {
flow->guessed_host_protocol_id = NDPI_PROTOCOL_SIGNAL;
return(NDPI_IS_STUN);
+ } else if(strstr((char*) flow->host_server_name, "facebook") != NULL) {
+ flow->guessed_host_protocol_id = NDPI_PROTOCOL_MESSENGER;
+ return(NDPI_IS_STUN);
}
}
}
diff --git a/tests/pcap/stun_facebook.pcapng b/tests/pcap/stun_facebook.pcapng
new file mode 100644
index 000000000..bb789c71d
--- /dev/null
+++ b/tests/pcap/stun_facebook.pcapng
Binary files differ
diff --git a/tests/result/stun_facebook.pcapng.out b/tests/result/stun_facebook.pcapng.out
new file mode 100644
index 000000000..bf7b1dd27
--- /dev/null
+++ b/tests/result/stun_facebook.pcapng.out
@@ -0,0 +1,7 @@
+Guessed flow protos: 0
+
+DPI Packets (UDP): 2 (2.00 pkts/flow)
+
+Messenger 75 10554 1
+
+ 1 UDP 192.168.12.169:38123 <-> 31.13.86.54:40003 [proto: 78.157/STUN.Messenger][Encrypted][cat: VoIP/10][40 pkts/6134 bytes <-> 35 pkts/4420 bytes][Goodput ratio: 73/67][10.09 sec][Host: turner.facebook][bytes ratio: 0.162 (Mixed)][IAT c2s/s2c min/avg/max/stddev: 0/0 260/331 6004/5997 1040/1126][Pkt Len c2s/s2c min/avg/max/stddev: 70/68 153/126 190/174 31/39][Risk: ** Known protocol on non standard port **][Risk Score: 10][PLAIN TEXT (unauthorized)][Plen Bins: 8,14,9,28,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]