mirror of https://github.com/daffainfo/nuclei.git
63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
|
package matchers
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"net/http/httputil"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/miekg/dns"
|
||
|
)
|
||
|
|
||
|
func httpToMap(resp *http.Response, body, headers string) (m map[string]interface{}) {
|
||
|
m = make(map[string]interface{})
|
||
|
|
||
|
m["content_length"] = resp.ContentLength
|
||
|
m["status_code"] = resp.StatusCode
|
||
|
for k, v := range resp.Header {
|
||
|
k = strings.ToLower(strings.TrimSpace(strings.Replace(k, "-", "_", -1)))
|
||
|
m[k] = strings.Join(v, " ")
|
||
|
}
|
||
|
m["all_headers"] = headers
|
||
|
|
||
|
m["body"] = body
|
||
|
if r, err := httputil.DumpResponse(resp, true); err == nil {
|
||
|
m["raw"] = string(r)
|
||
|
}
|
||
|
|
||
|
return m
|
||
|
}
|
||
|
|
||
|
func dnsToMap(msg *dns.Msg) (m map[string]interface{}) {
|
||
|
m = make(map[string]interface{})
|
||
|
|
||
|
m["rcode"] = msg.Rcode
|
||
|
var qs string
|
||
|
for _, question := range msg.Question {
|
||
|
qs += fmt.Sprintln(question.String())
|
||
|
}
|
||
|
m["question"] = qs
|
||
|
|
||
|
var exs string
|
||
|
for _, extra := range msg.Extra {
|
||
|
exs += fmt.Sprintln(extra.String())
|
||
|
}
|
||
|
m["extra"] = exs
|
||
|
|
||
|
var ans string
|
||
|
for _, answer := range msg.Answer {
|
||
|
ans += fmt.Sprintln(answer.String())
|
||
|
}
|
||
|
m["answer"] = ans
|
||
|
|
||
|
var nss string
|
||
|
for _, ns := range msg.Ns {
|
||
|
nss += fmt.Sprintln(ns.String())
|
||
|
}
|
||
|
m["ns"] = nss
|
||
|
|
||
|
m["raw"] = msg.String()
|
||
|
|
||
|
return m
|
||
|
}
|