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()
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()