Getting valueError
uchihaluckycs opened this issue · comments
Socket errors are silently ignored during handshake interception in do_relay_tcp
:
Lines 264 to 265 in 9f34e23
Due to this greedy except
:
Line 282 in 9f34e23
Failed negotiation result in an invalid socket file descriptor (-1
).
I ran into the same issue recently when attempting to relay to a server which was very slow to negotiate. Fixed by increasing the timeouts:
Lines 240 to 241 in 9f34e23
I've added support for --client-timeout
/ --server-timeout
arguments in #21.
Although in your situation the reason for failed negotiation may be different. You can check by printing the error message:
diff --git a/mitm_relay.py b/mitm_relay.py
index 159b6d5..41864d0 100755
--- a/mitm_relay.py
+++ b/mitm_relay.py
@@ -279,7 +279,8 @@ def do_relay_tcp(client_sock, server_sock, cfg):
server_sock = ssl.wrap_socket(server_sock, suppress_ragged_eofs=True, certfile=cfg.clientcert.name, keyfile=cfg.clientkey.name, ssl_version=cfg_ssl_version)
else:
server_sock = ssl.wrap_socket(server_sock, suppress_ragged_eofs=True, ssl_version=cfg_ssl_version)
- except:
+ except Exception as e:
+ print(e)
pass
receiving, _, _ = select([client_sock, server_sock], [], [])
./mitm_relay.py -r 1337:127.0.0.1:1234 -c cert/server.pem -k cert/private.key
[i] Client cert/key not provided.
[!] Interception disabled! mitm_relay will run in monitoring mode only.
[+] Relay listening on tcp 1337 -> 127.0.0.1:1234
[+] New client 127.0.0.1:55052 will be relayed to 127.0.0.1:1234
---------------------- Wrapping sockets ----------------------
_ssl.c:1106: The handshake operation timed out # <-- error message
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
self.run()
File "/usr/lib/python3.9/threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "/root/Desktop/mitm_relay/./mitm_relay.py", line 404, in handle_tcp_client
do_relay_tcp(client_sock, server_sock, cfg)
File "/root/Desktop/mitm_relay/./mitm_relay.py", line 286, in do_relay_tcp
receiving, _, _ = select([client_sock, server_sock], [], [])
ValueError: file descriptor cannot be a negative integer (-1)
This should now be resolved with the recent updates.