mirror of
https://github.com/chainreactors/spray.git
synced 2025-05-08 11:36:45 +00:00
93 lines
1.9 KiB
Go
93 lines
1.9 KiB
Go
package pkg
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/chainreactors/gogo/v2/pkg/fingers"
|
|
"github.com/chainreactors/parsers"
|
|
"github.com/chainreactors/utils"
|
|
"github.com/chainreactors/utils/iutils"
|
|
"github.com/chainreactors/words/mask"
|
|
"strings"
|
|
)
|
|
|
|
func LoadTemplates() error {
|
|
var err error
|
|
// load fingers
|
|
Fingers, err = fingers.LoadFingers(LoadConfig("http"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, finger := range Fingers {
|
|
err := finger.Compile(utils.ParsePorts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
for _, f := range Fingers {
|
|
for _, rule := range f.Rules {
|
|
if rule.SendDataStr != "" {
|
|
ActivePath = append(ActivePath, rule.SendDataStr)
|
|
}
|
|
if rule.Favicon != nil {
|
|
for _, mmh3 := range rule.Favicon.Mmh3 {
|
|
Mmh3Fingers[mmh3] = f.Name
|
|
}
|
|
for _, md5 := range rule.Favicon.Md5 {
|
|
Md5Fingers[md5] = f.Name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// load rule
|
|
var data map[string]interface{}
|
|
err = json.Unmarshal(LoadConfig("spray_rule"), &data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for k, v := range data {
|
|
Rules[k] = v.(string)
|
|
}
|
|
|
|
// load mask
|
|
var keywords map[string]interface{}
|
|
err = json.Unmarshal(LoadConfig("spray_common"), &keywords)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for k, v := range keywords {
|
|
t := make([]string, len(v.([]interface{})))
|
|
for i, vv := range v.([]interface{}) {
|
|
t[i] = iutils.ToString(vv)
|
|
}
|
|
mask.SpecialWords[k] = t
|
|
}
|
|
|
|
var extracts []*parsers.Extractor
|
|
err = json.Unmarshal(LoadConfig("extract"), &extracts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, extract := range extracts {
|
|
extract.Compile()
|
|
|
|
ExtractRegexps[extract.Name] = []*parsers.Extractor{extract}
|
|
for _, tag := range extract.Tags {
|
|
if _, ok := ExtractRegexps[tag]; !ok {
|
|
ExtractRegexps[tag] = []*parsers.Extractor{extract}
|
|
} else {
|
|
ExtractRegexps[tag] = append(ExtractRegexps[tag], extract)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func LoadDefaultDict() []string {
|
|
return strings.Split(strings.TrimSpace(string(LoadConfig("spray_default"))), "\n")
|
|
}
|