Merge pull request #601 from yungtravla/master

add boolean for dumping HTTP bodies in hex format
This commit is contained in:
evilsocket 2019-08-17 14:01:18 -04:00 committed by GitHub
commit 33797b120e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 6 deletions

View file

@ -36,6 +36,7 @@ type EventsStream struct {
quit chan bool quit chan bool
dumpHttpReqs bool dumpHttpReqs bool
dumpHttpResp bool dumpHttpResp bool
dumpFormatHex bool
} }
func NewEventsStream(s *session.Session) *EventsStream { func NewEventsStream(s *session.Session) *EventsStream {
@ -214,6 +215,10 @@ func NewEventsStream(s *session.Session) *EventsStream {
"false", "false",
"If true all HTTP responses will be dumped.")) "If true all HTTP responses will be dumped."))
mod.AddParam(session.NewBoolParameter("events.stream.http.format.hex",
"true",
"If true dumped HTTP bodies will be in hexadecimal format."))
return mod return mod
} }
@ -258,6 +263,8 @@ func (mod *EventsStream) Configure() (err error) {
return err return err
} else if err, mod.dumpHttpResp = mod.BoolParam("events.stream.http.response.dump"); err != nil { } else if err, mod.dumpHttpResp = mod.BoolParam("events.stream.http.response.dump"); err != nil {
return err return err
} else if err, mod.dumpFormatHex = mod.BoolParam("events.stream.http.format.hex"); err != nil {
return err
} }
return err return err

View file

@ -89,12 +89,21 @@ func (mod *EventsStream) dumpGZIP(body []byte) string {
buffer := bytes.NewBuffer(body) buffer := bytes.NewBuffer(body)
uncompressed := bytes.Buffer{} uncompressed := bytes.Buffer{}
reader, err := gzip.NewReader(buffer) reader, err := gzip.NewReader(buffer)
if err != nil { if mod.dumpFormatHex {
return mod.dumpRaw(body) if err != nil {
} else if _, err = uncompressed.ReadFrom(reader); err != nil { return mod.dumpRaw(body)
return mod.dumpRaw(body) } else if _, err = uncompressed.ReadFrom(reader); err != nil {
return mod.dumpRaw(body)
}
return mod.dumpRaw(uncompressed.Bytes())
} else {
if err != nil {
return mod.dumpText(body)
} else if _, err = uncompressed.ReadFrom(reader); err != nil {
return mod.dumpText(body)
}
return mod.dumpText(uncompressed.Bytes())
} }
return mod.dumpRaw(uncompressed.Bytes())
} }
func (mod *EventsStream) dumpJSON(body []byte) string { func (mod *EventsStream) dumpJSON(body []byte) string {
@ -149,7 +158,11 @@ func (mod *EventsStream) viewHttpRequest(e session.Event) {
} else if req.IsType("application/json") { } else if req.IsType("application/json") {
dump += mod.dumpJSON(req.Body) dump += mod.dumpJSON(req.Body)
} else { } else {
dump += mod.dumpRaw(req.Body) if mod.dumpFormatHex {
dump += mod.dumpRaw(req.Body)
} else {
dump += mod.dumpText(req.Body)
}
} }
} }