@@ -42,19 +42,54 @@ static void ndpi_search_gearup_booster(struct ndpi_detection_module_struct *ndpi
4242
4343 NDPI_LOG_DBG (ndpi_struct , "search GearUP Booster\n" );
4444
45- if (packet -> udp -> source != htons (9999 ) && packet -> udp -> dest != htons (9999 ))
46- {
47- NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
45+ if (packet -> tcp != NULL && packet -> payload_packet_len >= 16 ) {
46+ if (flow -> packet_counter <= 3 ) {
47+ int32_t pdu_length = ntohl (get_u_int32_t (packet -> payload , 0 ));
48+ if (pdu_length != packet -> payload_packet_len - 4 ) {
49+ NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
50+ return ;
51+ }
52+ }
53+ if (packet -> payload [4 ] != 0x08 ) {
54+ NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
55+ return ;
56+ }
57+ if (flow -> packet_counter <= 2 ) {
58+ if (packet -> payload_packet_len > 128 ||
59+ packet -> payload [5 ] != 0x01 )
60+ {
61+ NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
62+ return ;
63+ }
64+ } else {
65+ if (get_u_int16_t (packet -> payload , 7 ) != ntohs (0x0510 ) ||
66+ get_u_int16_t (packet -> payload , 13 ) != ntohs (0x2000 ))
67+ {
68+ NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
69+ return ;
70+ }
71+ }
72+ if (flow -> packet_counter >= 4 ) {
73+ ndpi_int_gearup_booster_add_connection (ndpi_struct , flow );
74+ }
4875 return ;
4976 }
5077
51- if (flow -> packet_counter == 1 )
52- {
53- if (packet -> packet_direction != 0 || packet -> udp -> dest != htons (9999 ))
78+ if (packet -> udp != NULL ) {
79+ if (packet -> udp -> source != htons (9999 ) && packet -> udp -> dest != htons (9999 ))
5480 {
5581 NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
5682 return ;
5783 }
84+
85+ if (flow -> packet_counter == 1 )
86+ {
87+ if (packet -> packet_direction != 0 || packet -> udp -> dest != htons (9999 ))
88+ {
89+ NDPI_EXCLUDE_DISSECTOR (ndpi_struct , flow );
90+ return ;
91+ }
92+ }
5893 }
5994
6095 if (packet -> payload_packet_len == 4 )
@@ -86,7 +121,7 @@ void init_gearup_booster_dissector(struct ndpi_detection_module_struct *ndpi_str
86121{
87122 ndpi_register_dissector ("GeaUP_Booster" , ndpi_struct ,
88123 ndpi_search_gearup_booster ,
89- NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_UDP_WITH_PAYLOAD ,
124+ NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_OR_UDP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION ,
90125 1 , NDPI_PROTOCOL_GEARUP_BOOSTER );
91126}
92127
0 commit comments