diff options
Diffstat (limited to 'mitmproxy/tools')
-rw-r--r-- | mitmproxy/tools/console/flowdetailview.py | 7 | ||||
-rw-r--r-- | mitmproxy/tools/dump.py | 8 | ||||
-rw-r--r-- | mitmproxy/tools/web/app.py | 6 | ||||
-rw-r--r-- | mitmproxy/tools/web/master.py | 5 |
4 files changed, 20 insertions, 6 deletions
diff --git a/mitmproxy/tools/console/flowdetailview.py b/mitmproxy/tools/console/flowdetailview.py index 7677efe4..571a5e1b 100644 --- a/mitmproxy/tools/console/flowdetailview.py +++ b/mitmproxy/tools/console/flowdetailview.py @@ -2,6 +2,7 @@ import urwid from mitmproxy.tools.console import common, searchable from mitmproxy.utils import human +from mitmproxy.utils import strutils def maybe_timestamp(base, attr): @@ -31,6 +32,8 @@ def flowdetails(state, flow): ["Address", repr(sc.address)], ["Resolved Address", repr(sc.ip_address)], ] + if sc.alpn_proto_negotiated: + parts.append(["ALPN", sc.alpn_proto_negotiated]) text.extend( common.format_keyvals(parts, key="key", val="text", indent=4) @@ -75,7 +78,7 @@ def flowdetails(state, flow): parts.append( [ "Alt names", - ", ".join(str(x) for x in c.altnames) + ", ".join(strutils.bytes_to_escaped_str(x) for x in c.altnames) ] ) text.extend( @@ -94,6 +97,8 @@ def flowdetails(state, flow): parts.append(["Server Name Indication", cc.sni]) if cc.cipher_name: parts.append(["Cipher Name", cc.cipher_name]) + if cc.alpn_proto_negotiated: + parts.append(["ALPN", cc.alpn_proto_negotiated]) text.extend( common.format_keyvals(parts, key="key", val="text", indent=4) diff --git a/mitmproxy/tools/dump.py b/mitmproxy/tools/dump.py index 90332627..4e2844a1 100644 --- a/mitmproxy/tools/dump.py +++ b/mitmproxy/tools/dump.py @@ -30,12 +30,14 @@ class Options(options.Options): class DumpMaster(master.Master): - def __init__(self, options, server): + def __init__(self, options, server, with_termlog=True, with_dumper=True): master.Master.__init__(self, options, server) self.has_errored = False - self.addons.add(termlog.TermLog()) + if with_termlog: + self.addons.add(termlog.TermLog()) self.addons.add(*addons.default_addons()) - self.addons.add(dumper.Dumper()) + if with_dumper: + self.addons.add(dumper.Dumper()) # This line is just for type hinting self.options = self.options # type: Options diff --git a/mitmproxy/tools/web/app.py b/mitmproxy/tools/web/app.py index ce18c6f0..c0de4c1f 100644 --- a/mitmproxy/tools/web/app.py +++ b/mitmproxy/tools/web/app.py @@ -34,6 +34,12 @@ def flow_to_json(flow: mitmproxy.flow.Flow) -> dict: "type": flow.type, "modified": flow.modified(), } + # .alpn_proto_negotiated is bytes, we need to decode that. + for conn in "client_conn", "server_conn": + if f[conn]["alpn_proto_negotiated"] is None: + continue + f[conn]["alpn_proto_negotiated"] = \ + f[conn]["alpn_proto_negotiated"].decode(errors="backslashreplace") if flow.error: f["error"] = flow.error.get_state() diff --git a/mitmproxy/tools/web/master.py b/mitmproxy/tools/web/master.py index 68a3db70..e6c15a0a 100644 --- a/mitmproxy/tools/web/master.py +++ b/mitmproxy/tools/web/master.py @@ -15,7 +15,7 @@ from mitmproxy.tools.web import app class WebMaster(master.Master): - def __init__(self, options, server): + def __init__(self, options, server, with_termlog=True): super().__init__(options, server) self.view = view.View() self.view.sig_view_add.connect(self._sig_view_add) @@ -34,8 +34,9 @@ class WebMaster(master.Master): intercept.Intercept(), self.view, self.events, - termlog.TermLog(), ) + if with_termlog: + self.addons.add(termlog.TermLog()) self.app = app.Application( self, self.options.wdebug ) |