Skip to content

Commit 121f875

Browse files
authored
Fix telnet timeout (#439)
* Adding verbosity level to prints * Checking if telnet connection was successful
1 parent a4e0390 commit 121f875

File tree

6 files changed

+28
-19
lines changed

6 files changed

+28
-19
lines changed

routersploit/core/ftp/ftp_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ def ftp_connect(self, retries=1):
3434
try:
3535
ftp_client.connect(self.target, self.port, timeout=FTP_TIMEOUT)
3636
except (socket.error, socket.timeout):
37-
print_error("Connection error")
37+
print_error("Connection error", verbose=self.verbosity)
3838
except Exception as err:
39-
print_error(err)
39+
print_error(err, verbose=self.verbosity)
4040
else:
4141
return ftp_client
4242

routersploit/core/ssh/ssh_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ def ssh_test_connect(self):
8585
return True
8686

8787
except socket.error:
88-
print_error("Connection error")
88+
print_error("Connection error", verbose=self.verbosity)
8989
ssh_client.close()
9090
return False
9191

9292
except Exception as err:
93-
print_error("Err: {}".format(err))
93+
print_error("Err: {}".format(err), verbose=self.verbosity)
9494

9595
ssh_client.close()
9696
return False
@@ -182,7 +182,7 @@ def writeall(sock):
182182
chan.send(d)
183183

184184
except Exception as err:
185-
print_error("Err: {}".format(err))
185+
print_error("Err: {}".format(err), verbose=self.verbosity)
186186

187187
def ssh_close(self, ssh_client):
188188
if ssh_client:

routersploit/core/tcp/tcp_client.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from routersploit.core.exploit.exploit import Exploit
44
from routersploit.core.exploit.exploit import Protocol
5+
from routersploit.core.exploit.option import OptBool
56
from routersploit.core.exploit.printer import print_status
67
from routersploit.core.exploit.printer import print_error
78
from routersploit.core.exploit.utils import is_ipv4
@@ -16,13 +17,15 @@ class TCPClient(Exploit):
1617

1718
target_protocol = Protocol.TCP
1819

20+
verbosity = OptBool("true", "Enable verbose output: true/false")
21+
1922
def tcp_create(self):
2023
if is_ipv4(self.target):
2124
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2225
elif is_ipv6(self.target):
2326
tcp_client = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
2427
else:
25-
print_error("Target address is not valid IPv4 nor IPv6 address")
28+
print_error("Target address is not valid IPv4 nor IPv6 address", verbose=self.verbosity)
2629
return None
2730

2831
tcp_client.settimeout(TCP_SOCKET_TIMEOUT)
@@ -33,12 +36,12 @@ def tcp_connect(self):
3336
tcp_client = self.tcp_create()
3437
tcp_client.connect((self.target, self.port))
3538

36-
print_status("Connection established")
39+
print_status("Connection established", verbose=self.verbosity)
3740
return tcp_client
3841

3942
except Exception as err:
40-
print_error("Could not connect")
41-
print_error(err)
43+
print_error("Could not connect", verbose=self.verbosity)
44+
print_error(err, verbose=self.verbosity)
4245

4346
return None
4447

@@ -47,7 +50,7 @@ def tcp_send(self, tcp_client, data):
4750
if type(data) is bytes:
4851
return tcp_client.send(data)
4952
else:
50-
print_error("Data to send is not type of bytes")
53+
print_error("Data to send is not type of bytes", verbose=self.verbosity)
5154

5255
return None
5356

@@ -67,9 +70,9 @@ def tcp_recv(self, tcp_client, num):
6770

6871
return response
6972
except socket.timeout:
70-
print_error("Socket did timeout")
73+
print_error("Socket did timeout", verbose=self.verbosity)
7174
except socket.error:
72-
print_error("Socket error")
75+
print_error("Socket error", verbose=self.verbosity)
7376

7477
return None
7578

routersploit/core/telnet/telnet_client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ def telnet_login(self, username, password, target=None, port=None, retries=1):
4040
for _ in range(retries):
4141
try:
4242
telnet_client = self.telnet_connect(target=target, port=port)
43+
if not telnet_client:
44+
continue
45+
4346
telnet_client.expect([b"Login: ", b"login: ", b"Username: ", b"username: "], 5)
4447
telnet_client.write(bytes(username, "utf-8") + b"\r\n")
4548
telnet_client.expect([b"Password: ", b"password: "], 5)
@@ -55,9 +58,9 @@ def telnet_login(self, username, password, target=None, port=None, retries=1):
5558
print_error("Telnet Authentication Failed - Username: '{}' Password: '{}'".format(username, password), verbose=self.verbosity)
5659
break
5760
except EOFError:
58-
print_error("Telnet connection error")
61+
print_error("Telnet connection error", verbose=self.verbosity)
5962
except Exception as err:
60-
print_error(err)
63+
print_error(err, verbose=self.verbosity)
6164

6265
return None
6366

routersploit/core/udp/udp_client.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from routersploit.core.exploit.exploit import Exploit
44
from routersploit.core.exploit.exploit import Protocol
5+
from routersploit.core.exploit.option import OptBool
56
from routersploit.core.exploit.printer import print_error
67
from routersploit.core.exploit.utils import is_ipv4
78
from routersploit.core.exploit.utils import is_ipv6
@@ -15,13 +16,15 @@ class UDPClient(Exploit):
1516

1617
target_protocol = Protocol.UDP
1718

19+
verbosity = OptBool("true", "Enable verbose output: true/false")
20+
1821
def udp_create(self):
1922
if is_ipv4(self.target):
2023
udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
2124
elif is_ipv6(self.target):
2225
udp_client = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
2326
else:
24-
print_error("Target address is not valid IPv4 nor IPv6 address")
27+
print_error("Target address is not valid IPv4 nor IPv6 address", verbose=self.verbosity)
2528
return None
2629

2730
udp_client.settimeout(UDP_SOCKET_TIMEOUT)
@@ -34,7 +37,7 @@ def udp_send(self, udp_client, data):
3437
elif type(data) is str:
3538
return udp_client.sendto(bytes(data, "utf-8"), (self.target, self.port))
3639
else:
37-
print_error("Data to send is not type of bytes or string")
40+
print_error("Data to send is not type of bytes or string", verbose=self.verbosity)
3841

3942
return None
4043

@@ -44,9 +47,9 @@ def udp_recv(self, udp_client, num):
4447
response = udp_client.recv(num)
4548
return str(response, "utf-8")
4649
except socket.timeout:
47-
print_error("Socket did timeout")
50+
print_error("Socket did timeout", verbose=self.verbosity)
4851
except socket.error:
49-
print_error("Socket err")
52+
print_error("Socket err", verbose=self.verbosity)
5053

5154
return None
5255

rsf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#!/usr/bin/env python3
22

33
from __future__ import print_function
4+
import logging.handlers
45
import sys
56
if sys.version_info.major < 3:
67
print("RouterSploit supports only Python3. Rerun application in Python3 environment.")
78
exit(0)
89

9-
import logging.handlers
1010
from routersploit.interpreter import RoutersploitInterpreter
1111

1212
log_handler = logging.handlers.RotatingFileHandler(filename="routersploit.log", maxBytes=500000)

0 commit comments

Comments
 (0)