aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/platform
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2017-12-12 13:58:17 +0100
committerMaximilian Hils <git@maximilianhils.com>2017-12-12 14:00:12 +0100
commit0fb48bc6a72bdd6a88e0b9ddbdd64db58a57daf4 (patch)
tree47cbf7fa8985ca17bea67f40838c9e59ff1525e7 /mitmproxy/platform
parentd181b4643fbf1dcafecbf7bd06e8cbe2e8d5e09d (diff)
downloadmitmproxy-0fb48bc6a72bdd6a88e0b9ddbdd64db58a57daf4.tar.gz
mitmproxy-0fb48bc6a72bdd6a88e0b9ddbdd64db58a57daf4.tar.bz2
mitmproxy-0fb48bc6a72bdd6a88e0b9ddbdd64db58a57daf4.zip
minor improvements, add tests for ipv4-mapped addresses
Diffstat (limited to 'mitmproxy/platform')
-rw-r--r--mitmproxy/platform/osx.py4
-rw-r--r--mitmproxy/platform/pf.py4
2 files changed, 4 insertions, 4 deletions
diff --git a/mitmproxy/platform/osx.py b/mitmproxy/platform/osx.py
index 40a742e9..f9de1fbf 100644
--- a/mitmproxy/platform/osx.py
+++ b/mitmproxy/platform/osx.py
@@ -1,7 +1,6 @@
import subprocess
from . import pf
-import re
"""
Doing this the "right" way by using DIOCNATLOOK on the pf device turns out
@@ -16,7 +15,6 @@ import re
"""
STATECMD = ("sudo", "-n", "/sbin/pfctl", "-s", "state")
-ipv4_mapped = re.compile("^::ffff:\d+.\d+.\d+.\d+$")
def original_addr(csock):
@@ -35,6 +33,4 @@ def original_addr(csock):
raise RuntimeError(
"Insufficient privileges to access pfctl. "
"See http://docs.mitmproxy.org/en/latest/transparent/osx.html for details.")
- if ipv4_mapped.match(peer[0]):
- return pf.lookup(peer[0].replace("::ffff:", ""), peer[1], stxt)
return pf.lookup(peer[0], peer[1], stxt)
diff --git a/mitmproxy/platform/pf.py b/mitmproxy/platform/pf.py
index c0397d78..bb5eb515 100644
--- a/mitmproxy/platform/pf.py
+++ b/mitmproxy/platform/pf.py
@@ -1,3 +1,4 @@
+import re
import sys
@@ -8,6 +9,9 @@ def lookup(address, port, s):
Returns an (address, port) tuple, or None.
"""
+ # We may get an ipv4-mapped ipv6 address here, e.g. ::ffff:127.0.0.1.
+ # Those still appear as "127.0.0.1" in the table, so we need to strip the prefix.
+ address = re.sub("^::ffff:(?=\d+.\d+.\d+.\d+$)", "", address)
s = s.decode()
spec = "%s:%s" % (address, port)
for i in s.split("\n"):