aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/ndpi_typedefs.h2
-rw-r--r--src/lib/protocols/telnet.c18
2 files changed, 10 insertions, 10 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index ae7b2462f..11b3394da 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1246,7 +1246,7 @@ struct ndpi_flow_struct {
struct {
u_int8_t username_detected:1, username_found:1,
password_detected:1, password_found:1,
- skip_next:1, _pad:3;
+ _pad:4;
u_int8_t character_id;
char username[32], password[32];
} telnet;
diff --git a/src/lib/protocols/telnet.c b/src/lib/protocols/telnet.c
index d5dda0d6b..2eca2aa2c 100644
--- a/src/lib/protocols/telnet.c
+++ b/src/lib/protocols/telnet.c
@@ -38,7 +38,7 @@ static int search_telnet_again(struct ndpi_detection_module_struct *ndpi_struct,
struct ndpi_packet_struct *packet = &flow->packet;
#ifdef TELNET_DEBUG
- printf("==> %s() [%s]\n", __FUNCTION__, packet->payload);
+ printf("==> %s() [%s][direction: %u]\n", __FUNCTION__, packet->payload, packet->packet_direction);
#endif
if(packet->payload[0] == 0xFF)
@@ -67,11 +67,13 @@ static int search_telnet_again(struct ndpi_detection_module_struct *ndpi_struct,
return(0);
}
- for(i=0; i<packet->payload_packet_len; i++) {
- if(flow->protos.telnet.character_id < (sizeof(flow->protos.telnet.password)-1))
- flow->protos.telnet.password[flow->protos.telnet.character_id++] = packet->payload[i];
+ if(packet->packet_direction == 0) /* client -> server */ {
+ for(i=0; i<packet->payload_packet_len; i++) {
+ if(flow->protos.telnet.character_id < (sizeof(flow->protos.telnet.password)-1))
+ flow->protos.telnet.password[flow->protos.telnet.character_id++] = packet->payload[i];
+ }
}
-
+
return(1);
}
@@ -93,12 +95,10 @@ static int search_telnet_again(struct ndpi_detection_module_struct *ndpi_struct,
}
for(i=0; i<packet->payload_packet_len; i++) {
- if(!flow->protos.telnet.skip_next) {
+ if(packet->packet_direction == 0) /* client -> server */ {
if(flow->protos.telnet.character_id < (sizeof(flow->protos.telnet.username)-1))
flow->protos.telnet.username[flow->protos.telnet.character_id++] = packet->payload[i];
- flow->protos.telnet.skip_next = 1;
- } else
- flow->protos.telnet.skip_next = 0;
+ }
}
}