diff options
Diffstat (limited to 'mitmproxy/libmproxy/platform/pf.py')
-rw-r--r-- | mitmproxy/libmproxy/platform/pf.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/mitmproxy/libmproxy/platform/pf.py b/mitmproxy/libmproxy/platform/pf.py new file mode 100644 index 00000000..97a4c192 --- /dev/null +++ b/mitmproxy/libmproxy/platform/pf.py @@ -0,0 +1,24 @@ +import sys + + +def lookup(address, port, s): + """ + Parse the pfctl state output s, to look up the destination host + matching the client (address, port). + + Returns an (address, port) tuple, or None. + """ + spec = "%s:%s" % (address, port) + for i in s.split("\n"): + if "ESTABLISHED:ESTABLISHED" in i and spec in i: + s = i.split() + if len(s) > 4: + if sys.platform.startswith("freebsd"): + # strip parentheses for FreeBSD pfctl + s = s[3][1:-1].split(":") + else: + s = s[4].split(":") + + if len(s) == 2: + return s[0], int(s[1]) + raise RuntimeError("Could not resolve original destination.") |