Пример #1
0
    def __init__(self, options, with_termlog=True):
        super().__init__(options)
        self.view = view.View()
        self.view.sig_view_add.connect(self._sig_view_add)
        self.view.sig_view_remove.connect(self._sig_view_remove)
        self.view.sig_view_update.connect(self._sig_view_update)
        self.view.sig_view_refresh.connect(self._sig_view_refresh)

        self.events = eventstore.EventStore()
        self.events.sig_add.connect(self._sig_events_add)
        self.events.sig_refresh.connect(self._sig_events_refresh)

        self.options.changed.connect(self._sig_options_update)
        self.options.changed.connect(self._sig_settings_update)

        self.addons.add(*addons.default_addons())
        self.addons.add(
            webaddons.WebAddon(),
            intercept.Intercept(),
            readfile.ReadFile(),
            static_viewer.StaticViewer(),
            self.view,
            self.events,
        )
        if with_termlog:
            self.addons.add(termlog.TermLog(), termstatus.TermStatus())
        self.app = app.Application(
            self, self.options.web_debug
        )
Пример #2
0
    def __init__(self, options, server):
        master.Master.__init__(self, options, server)
        self.has_errored = False
        self.addons.add(termlog.TermLog())
        self.addons.add(*addons.default_addons())
        self.addons.add(dumper.Dumper())
        # This line is just for type hinting
        self.options = self.options  # type: Options

        if not self.options.no_server:
            self.add_log(
                "Proxy server listening at http://{}".format(server.address),
                "info"
            )

        if self.server and self.options.http2 and not tcp.HAS_ALPN:  # pragma: no cover
            self.add_log(
                "ALPN support missing (OpenSSL 1.0.2+ required)!\n"
                "HTTP/2 is disabled. Use --no-http2 to silence this warning.",
                "error"
            )

        if options.rfile:
            try:
                self.load_flows_file(options.rfile)
            except exceptions.FlowReadException as v:
                self.add_log("Flow file corrupted.", "error")
                raise DumpError(v)
Пример #3
0
    def __init__(
        self,
        options: Options,
        server,
        with_termlog=True,
        with_dumper=True,
    ) -> None:
        master.Master.__init__(self, options, server)
        self.has_errored = False
        if with_termlog:
            self.addons.add(termlog.TermLog())
        self.addons.add(*addons.default_addons())
        if with_dumper:
            self.addons.add(dumper.Dumper())

        if not self.options.no_server:
            self.add_log(
                "Proxy server listening at http://{}:{}".format(
                    server.address[0], server.address[1]), "info")

        if options.rfile:
            try:
                self.load_flows_file(options.rfile)
            except exceptions.FlowReadException as v:
                self.add_log("Flow file corrupted.", "error")
                raise DumpError(v)
Пример #4
0
    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)
        self.view.sig_view_remove.connect(self._sig_view_remove)
        self.view.sig_view_update.connect(self._sig_view_update)
        self.view.sig_view_refresh.connect(self._sig_view_refresh)

        self.events = eventstore.EventStore()
        self.events.sig_add.connect(self._sig_events_add)
        self.events.sig_refresh.connect(self._sig_events_refresh)

        self.options.changed.connect(self._sig_options_update)

        self.addons.add(*addons.default_addons())
        self.addons.add(
            intercept.Intercept(),
            self.view,
            self.events,
        )
        if with_termlog:
            self.addons.add(termlog.TermLog(), termstatus.TermStatus())
        self.app = app.Application(self, self.options.web_debug)
        # This line is just for type hinting
        self.options = self.options  # type: Options
Пример #5
0
    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)
        self.view.sig_view_remove.connect(self._sig_view_remove)
        self.view.sig_view_update.connect(self._sig_view_update)
        self.view.sig_view_refresh.connect(self._sig_view_refresh)

        self.events = eventstore.EventStore()
        self.events.sig_add.connect(self._sig_events_add)
        self.events.sig_refresh.connect(self._sig_events_refresh)

        self.options.changed.connect(self._sig_options_update)

        self.addons.add(*addons.default_addons())
        self.addons.add(
            intercept.Intercept(),
            self.view,
            self.events,
        )
        if with_termlog:
            self.addons.add(termlog.TermLog())
        self.app = app.Application(self, self.options.wdebug)
        # This line is just for type hinting
        self.options = self.options  # type: Options
        if options.rfile:
            try:
                self.load_flows_file(options.rfile)
            except exceptions.FlowReadException as v:
                self.add_log("Could not read flow file: %s" % v, "error")
Пример #6
0
 def test_simple(self):
     t = termlog.TermLog()
     sio = io.StringIO()
     t.configure(dump.Options(tfile=sio, verbosity=2), set([]))
     t.log(log.LogEntry("one", "info"))
     assert "one" in sio.getvalue()
     t.log(log.LogEntry("two", "debug"))
     assert "two" not in sio.getvalue()
Пример #7
0
def test_styling(monkeypatch) -> None:
    f = io.StringIO()
    t = termlog.TermLog(out=f)
    t.out_has_vt_codes = True
    with taddons.context(t) as tctx:
        tctx.configure(t)
        t.add_log(log.LogEntry("hello world", "info"))

    assert f.getvalue() == "\x1b[22mhello world\x1b[0m\n"
Пример #8
0
 def test_output(self, outfile, expected_out, expected_err, capfd):
     t = termlog.TermLog(outfile=outfile)
     with taddons.context(options=Options(verbosity=2)) as tctx:
         tctx.configure(t)
         t.log(log.LogEntry("one", "info"))
         t.log(log.LogEntry("two", "debug"))
         t.log(log.LogEntry("three", "warn"))
         t.log(log.LogEntry("four", "error"))
     out, err = capfd.readouterr()
     assert out.strip().splitlines() == expected_out
     assert err.strip().splitlines() == expected_err
Пример #9
0
def test_output(capsys):
    t = termlog.TermLog()
    with taddons.context(t) as tctx:
        tctx.options.termlog_verbosity = "info"
        tctx.configure(t)
        t.add_log(log.LogEntry("one", "info"))
        t.add_log(log.LogEntry("two", "debug"))
        t.add_log(log.LogEntry("three", "warn"))
        t.add_log(log.LogEntry("four", "error"))
    out, err = capsys.readouterr()
    assert out.strip().splitlines() == ["one", "three"]
    assert err.strip().splitlines() == ["four"]
Пример #10
0
    def __init__(self, proxy_events, listen_port, include_path):
        self.opts = options.Options()
        self.opts.listen_port = listen_port
        self.opts.confdir = include_path
        self.master = master.Master(self.opts)
        proxy_events.set_proxy(self)
        self.master.addons.add(proxy_events)

        self.master.addons.add(termlog.TermLog())
        self.master.addons.add(*addons.default_addons())
        self.master.addons.add(keepserving.KeepServing(),
                               readfile.ReadFileStdin())
Пример #11
0
 def __init__(
     self,
     options: options.Options,
     with_termlog=True,
     with_dumper=True,
 ) -> None:
     super().__init__(options)
     self.errorcheck = ErrorCheck()
     if with_termlog:
         self.addons.add(termlog.TermLog(), termstatus.TermStatus())
     self.addons.add(*addons.default_addons())
     if with_dumper:
         self.addons.add(dumper.Dumper())
     self.addons.add(keepserving.KeepServing(), self.errorcheck)
Пример #12
0
 def __init__(self, options, server, with_termlog=False) -> None:
     master.Master.__init__(self, options, server)
     self.has_errored = False
     self.monitor_host = 'monitor.zkt'
     self.monitor_port = 80
     # TODO: 考虑用tornado替代flask以减少冗余依赖
     # 将Flask的实例注入mitmproxy
     self.addons.add(
         wsgiapp.WSGIApp(app, self.monitor_host, self.monitor_port))
     self.db_session = DBSession()
     if with_termlog:
         self.addons.add(termlog.TermLog())
     self.addons.add(*addons.default_addons())
     if not self.options.no_server:
         self.add_log("代理服务运行于 http://{}".format(server.address), "info")
Пример #13
0
 def __init__(
     self,
     options: options.Options,
     server,
     with_termlog=True,
     with_dumper=True,
 ) -> None:
     master.Master.__init__(self, options, server)
     self.errorcheck = ErrorCheck()
     if with_termlog:
         self.addons.add(termlog.TermLog(), termstatus.TermStatus())
     self.addons.add(*addons.default_addons())
     if with_dumper:
         self.addons.add(dumper.Dumper())
     self.addons.add(readstdin.ReadStdin(), keepserving.KeepServing(),
                     self.errorcheck)
Пример #14
0
 def __init__(
     self,
     options: options.Options,
     with_termlog=True,
     with_dumper=True,
 ) -> None:
     super().__init__(options)
     if with_termlog:
         self.addons.add(termlog.TermLog())
     self.addons.add(*addons.default_addons())
     if with_dumper:
         self.addons.add(dumper.Dumper())
     self.addons.add(
         keepserving.KeepServing(),
         readfile.ReadFileStdin(),
         errorcheck.ErrorCheck(),
     )
Пример #15
0
 def __init__(
     self,
     options: options.Options,
     mode,
     flow_name,
 ) -> None:
     super().__init__(options)
     self.addons.add(termlog.TermLog())
     self.addons.add(termstatus.TermStatus())
     self.addons.add(keepserving.KeepServing())
     self.addons.add(*addons.default_addons())
     if mode == "fuzz":
         self.addons.add(dumper.Dumper())
         self.addons.add(FuzzResponseAnalyzer())
     if mode == "runfuzz":
         self.addons.add(FuzzResponseAnalyzer())
     if mode == "capture":
         self.addons.add(Capture(flow_name))
     if mode == "intercept":
         self.addons.add(Interceptor())
Пример #16
0
    def __init__(
            self,
            options: options.Options,
            server,
            with_termlog=True,
            with_dumper=True,
    ) -> None:
        master.Master.__init__(self, options, server)
        self.has_errored = False
        if with_termlog:
            self.addons.add(termlog.TermLog(), termstatus.TermStatus())
        self.addons.add(*addons.default_addons())
        if with_dumper:
            self.addons.add(dumper.Dumper())

        if options.rfile:
            try:
                self.load_flows_file(options.rfile)
            except exceptions.FlowReadException as v:
                self.add_log("Flow file corrupted.", "error")
                raise exceptions.OptionsError(v)