aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/platform
diff options
context:
space:
mode:
authorTom <you@example.com>2019-10-28 16:23:15 +0100
committerTom <you@example.com>2019-11-05 20:27:00 +0100
commitd35c00ee65708ca73005e201fa1998a628f553b3 (patch)
tree47edd8aadd4ef87ef69a939d978813c89362b880 /mitmproxy/platform
parent3af4647804700bb6e86a9e1b73d7bf8612d872fa (diff)
downloadmitmproxy-d35c00ee65708ca73005e201fa1998a628f553b3.tar.gz
mitmproxy-d35c00ee65708ca73005e201fa1998a628f553b3.tar.bz2
mitmproxy-d35c00ee65708ca73005e201fa1998a628f553b3.zip
Added support for IPv6 in pf.py for macOS
Diffstat (limited to 'mitmproxy/platform')
-rw-r--r--mitmproxy/platform/pf.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/mitmproxy/platform/pf.py b/mitmproxy/platform/pf.py
index 5e22ec31..fd62d977 100644
--- a/mitmproxy/platform/pf.py
+++ b/mitmproxy/platform/pf.py
@@ -13,9 +13,15 @@ def lookup(address, port, s):
# Those still appear as "127.0.0.1" in the table, so we need to strip the prefix.
address = re.sub(r"^::ffff:(?=\d+.\d+.\d+.\d+$)", "", address)
s = s.decode()
- spec = "%s:%s" % (address, port)
+
+ # ALL tcp 192.168.1.13:57474 -> 23.205.82.58:443 ESTABLISHED:ESTABLISHED
+ specv4 = "%s:%s" % (address, port)
+
+ # ALL tcp 2a01:e35:8bae:50f0:9d9b:ef0d:2de3:b733[58505] -> 2606:4700:30::681f:4ad0[443] ESTABLISHED:ESTABLISHED
+ specv6 = "%s[%s]" % (address, port)
+
for i in s.split("\n"):
- if "ESTABLISHED:ESTABLISHED" in i and spec in i:
+ if "ESTABLISHED:ESTABLISHED" in i and specv4 in i:
s = i.split()
if len(s) > 4:
if sys.platform.startswith("freebsd"):
@@ -26,4 +32,11 @@ def lookup(address, port, s):
if len(s) == 2:
return s[0], int(s[1])
+ elif "ESTABLISHED:ESTABLISHED" in i and specv6 in i:
+ s = i.split()
+ if len(s) > 4:
+ s = s[4].split("[")
+ port = s[1].split("]")
+ port = port[0]
+ return s[0], int(port)
raise RuntimeError("Could not resolve original destination.")