Пример #1
0
    def Log(self,
            record,
            detail=False,
            full=False,
            opt1=None,
            opt2=None,
            opt3=None):
        highlight, skip, take = self._displayOptions(opt1, opt2, opt3)
        ix = record[0]
        x = record[1]
        ct = ""
        cl = ""

        for k, v in x.request.header.items():
            if k.lower() == "content-type":
                ct = v.split(";")[0]
            if k.lower() == "content-length":
                cl = v
        self.HR()
        Printer.Cols([
            (ix, 6, False),
            (x.method, 7, False),
            (ct, 34, False),
            (cl, 8, False),
            ("Response: ", 10, False),
            (x.status, 4, False),
            (x.mime, 7, False),
            (x.length, 8, False),
            (x.ip, 15, False),
        ])
        self.P(x.url)

        if detail:
            self.HR()
            self.P(x.request.line)
            self.Dict(x.request.HeaderNoCookies())
            if x.request.cookies:
                self.P("Cookie:")
                self.Dict(x.request.cookies, "    ")
            self.BR(2)
            if x.request.body:
                self.P(x.request.content)
            self.HR()

            self.P(x.response.line)
            self.Dict(x.response.header)
            self.BR(2)
            if full:
                matches, lines = Printer.PrintBody(x.response.body, highlight,
                                                   skip, take, self.P)
                if highlight:
                    self.BR()
                    self.Pair("Highlights", matches)
                    self.Pair("Lines", ", ".join(lines))
                self.BR()
Пример #2
0
    def Result(self,
               result,
               detail=False,
               full=False,
               opt1=None,
               opt2=None,
               opt3=None):
        highlight, skip, take = self._displayOptions(opt1, opt2, opt3)
        res = result.response
        req = result.response.request
        meta = result.meta

        if not detail:
            Printer.Cols([
                (result.result_id, 5, False),
                ("[+]" if result.flag else "[-]", 5, False,
                 "green" if result.flag else None), (result.log_id, 5, False),
                (res.status_code, 7, False), (len(res.text), 8, False),
                (Html.GetMime(res), 7, False),
                (int(res.elapsed.microseconds / 1000), 7, False),
                (result.meta["count"] if result.meta else "", 4, False),
                (result.type, 7, False), (result.parameter, 25, False),
                (result.value, 35, False)
            ])
        else:

            self.HR()
            self.Pair(req.method.upper(), req.url, False)
            self.Dict(req.headers)
            self.BR(2)
            if req.body:
                #TODO: correct json display
                self.P(req.body)
            self.HR()
            self.Pair(res.status_code, res.reason, False)
            self.Dict(res.headers)
            self.BR(2)
            if full:
                body = res.text
                if result.meta and "rendered" in result.meta.keys():
                    body = result.meta["rendered"]
                if result.meta and "diff" in result.meta.keys():
                    body = "".join(result.meta["diff"])
                matches, lines = Printer.PrintBody(body, highlight, skip, take,
                                                   self.P)
                if highlight:
                    self.BR()
                    self.Pair("Highlights", matches)
                    self.Pair("Lines", ", ".join(lines))
                self.BR()

            self.HR()
            if result.pv:
                for p, v in result.pv.items():
                    self.Pair("Parameter", p)
                    self.Pair("Word", v)
                    self.BR()
            if meta:
                if meta["type"] == "match":
                    self.Pair("Matches", meta["count"])
                    for m in meta["matches"]:
                        self.Pair("   ", m, False)
                if meta["type"] == "compare":
                    diffs = []
                    for k, v in meta.items():
                        if isinstance(v, bool) and v == True:
                            diffs.append(k)

                    self.Pair("Differences", meta["count"])

                    self.P(", ".join(diffs))
                    self.BR()
                    if meta["headers"]:
                        self.Pair("Headers", ", ".join(meta["headers"]))
                    if meta["cookies"]:
                        self.Pair("Cookies", ", ".join(meta["cookies"]))
                self.BR()