diff options
author | Tom <you@example.com> | 2019-10-28 16:23:15 +0100 |
---|---|---|
committer | Tom <you@example.com> | 2019-11-05 20:27:00 +0100 |
commit | d35c00ee65708ca73005e201fa1998a628f553b3 (patch) | |
tree | 47edd8aadd4ef87ef69a939d978813c89362b880 | |
parent | 3af4647804700bb6e86a9e1b73d7bf8612d872fa (diff) | |
download | mitmproxy-d35c00ee65708ca73005e201fa1998a628f553b3.tar.gz mitmproxy-d35c00ee65708ca73005e201fa1998a628f553b3.tar.bz2 mitmproxy-d35c00ee65708ca73005e201fa1998a628f553b3.zip |
Added support for IPv6 in pf.py for macOS
-rw-r--r-- | mitmproxy/platform/pf.py | 17 |
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.") |