diff options
| -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.")  | 
