How to bind an ip address to telnetlib in Python
-
19-09-2019 - |
Question
The code below binds an ip address to urllib, urllib2, etc.
import socket
true_socket = socket.socket
def bound_socket(*a, **k):
sock = true_socket(*a, **k)
sock.bind((sourceIP, 0))
return sock
socket.socket = bound_socket
Is it also able to bind an ip address to telnetlib?
Solution
telnetlib
at least in recent Python releases uses socket.create_connection
(see telnetlib's sources here) but that should also be caught by your monkeypatch (sources here -- you'll see it uses a bare identifier socket
but that's exactly in the module you're monkeypatching). Of course monkeypatching is always extremely fragile (the tiniest optimization in some future release, hoisting the global lookup of socket
in create_connection
, and you're toast...;-) so maybe you'll want to monkeypath create_connection
directly as a modestly-stronger approach.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow