aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--netlib/socks.py8
-rw-r--r--netlib/utils.py23
-rw-r--r--test/test_socks.py7
-rw-r--r--test/test_utils.py18
4 files changed, 11 insertions, 45 deletions
diff --git a/netlib/socks.py b/netlib/socks.py
index 01f54859..97df3478 100644
--- a/netlib/socks.py
+++ b/netlib/socks.py
@@ -96,10 +96,10 @@ class Message(object):
"Socks Request: Invalid reserved byte: %s" % rsv)
if atyp == ATYP.IPV4_ADDRESS:
- host = utils.inet_ntop(socket.AF_INET, f.read(4)) # We use tnoa here as ntop is not commonly available on Windows.
+ host = socket.inet_ntoa(f.read(4)) # We use tnoa here as ntop is not commonly available on Windows.
use_ipv6 = False
elif atyp == ATYP.IPV6_ADDRESS:
- host = utils.inet_ntop(socket.AF_INET6, f.read(16))
+ host = socket.inet_ntop(socket.AF_INET6, f.read(16))
use_ipv6 = True
elif atyp == ATYP.DOMAINNAME:
length, = struct.unpack("!B", f.read(1))
@@ -116,9 +116,9 @@ class Message(object):
def to_file(self, f):
f.write(struct.pack("!BBBB", self.ver, self.msg, 0x00, self.atyp))
if self.atyp == ATYP.IPV4_ADDRESS:
- f.write(utils.inet_pton(socket.AF_INET, self.addr.host))
+ f.write(socket.inet_aton(self.addr.host))
elif self.atyp == ATYP.IPV6_ADDRESS:
- f.write(utils.inet_pton(socket.AF_INET6, self.addr.host))
+ f.write(socket.inet_pton(socket.AF_INET6, self.addr.host))
elif self.atyp == ATYP.DOMAINNAME:
f.write(struct.pack("!B", len(self.addr.host)))
f.write(self.addr.host)
diff --git a/netlib/utils.py b/netlib/utils.py
index 00e1cd12..69ba456a 100644
--- a/netlib/utils.py
+++ b/netlib/utils.py
@@ -43,25 +43,4 @@ def hexdump(s):
parts.append(
(o, x, cleanBin(part, True))
)
- return parts
-
-
-def inet_ntop(address_family, packed_ip):
- if hasattr(socket, "inet_ntop"):
- return socket.inet_ntop(address_family, packed_ip)
- # Windows Fallbacks
- if address_family == socket.AF_INET:
- return socket.inet_ntoa(packed_ip)
- if address_family == socket.AF_INET6:
- ip = packed_ip.encode("hex")
- return ":".join([ip[i:i + 4] for i in range(0, len(ip), 4)])
-
-
-def inet_pton(address_family, ip_string):
- if hasattr(socket, "inet_pton"):
- return socket.inet_pton(address_family, ip_string)
- # Windows Fallbacks
- if address_family == socket.AF_INET:
- return socket.inet_aton(ip_string)
- if address_family == socket.AF_INET6:
- return ip_string.replace(":", "").decode("hex") \ No newline at end of file
+ return parts \ No newline at end of file
diff --git a/test/test_socks.py b/test/test_socks.py
index 3771df62..4787e309 100644
--- a/test/test_socks.py
+++ b/test/test_socks.py
@@ -1,5 +1,6 @@
from cStringIO import StringIO
import socket
+from nose.plugins.skip import SkipTest
from netlib import socks, utils
import tutils
@@ -47,9 +48,13 @@ def test_message():
assert raw.read(2) == "\xBE\xEF"
assert msg.addr == ("127.0.0.1", 0xDEAD)
+
+def test_message_ipv6():
+ if not hasattr(socket, "inet_ntop"):
+ raise SkipTest("Skipped because inet_ntop is not available")
# Test ATYP=0x04 (IPV6)
ipv6_addr = "2001:0db8:85a3:08d3:1319:8a2e:0370:7344"
- raw = StringIO("\x05\x01\x00\x04" + utils.inet_pton(socket.AF_INET6, ipv6_addr) + "\xDE\xAD\xBE\xEF")
+ raw = StringIO("\x05\x01\x00\x04" + socket.inet_pton(socket.AF_INET6, ipv6_addr) + "\xDE\xAD\xBE\xEF")
msg = socks.Message.from_file(raw)
assert raw.read(2) == "\xBE\xEF"
assert msg.addr.host == ipv6_addr \ No newline at end of file
diff --git a/test/test_utils.py b/test/test_utils.py
index a9a48cd0..971e5076 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -10,21 +10,3 @@ def test_cleanBin():
assert utils.cleanBin("\00ne") == ".ne"
assert utils.cleanBin("\nne") == "\nne"
assert utils.cleanBin("\nne", True) == ".ne"
-
-def test_ntop_pton():
- for family, ip_string, packed_ip in (
- (socket.AF_INET,
- "127.0.0.1",
- "\x7f\x00\x00\x01"),
- (socket.AF_INET6,
- "2001:0db8:85a3:08d3:1319:8a2e:0370:7344",
- " \x01\r\xb8\x85\xa3\x08\xd3\x13\x19\x8a.\x03psD")):
- assert ip_string == utils.inet_ntop(family, packed_ip)
- assert packed_ip == utils.inet_pton(family, ip_string)
- if hasattr(socket, "inet_ntop"):
- ntop, pton = socket.inet_ntop, socket.inet_pton
- delattr(socket,"inet_ntop")
- delattr(socket,"inet_pton")
- assert ip_string == utils.inet_ntop(family, packed_ip)
- assert packed_ip == utils.inet_pton(family, ip_string)
- socket.inet_ntop, socket.inet_pton = ntop, pton \ No newline at end of file