MCPcopy Create free account
hub / github.com/chainreactors/spray / BuildWords

Method BuildWords

core/option.go:958–1117  ·  view source on GitHub ↗
(r *Runner)

Source from the content-addressed store, hash-verified

956}
957
958func (opt *Option) BuildWords(r *Runner) error {
959 var dicts [][]string
960 var err error
961 if opt.DefaultDict {
962 dicts = append(dicts, pkg.Dicts["default"])
963 logs.Log.Info("use default dictionary: https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt")
964 }
965 for i, f := range opt.Dictionaries {
966 dict, err := pkg.LoadFileToSlice(f)
967 if err != nil {
968 return err
969 }
970 dicts = append(dicts, dict)
971 if opt.ResumeFrom != "" {
972 pkg.Dicts[f] = dicts[i]
973 }
974
975 logs.Log.Logf(pkg.LogVerbose, "Loaded %d word from %s", len(dict), f)
976 }
977
978 if len(dicts) == 0 && opt.Word == "" && len(opt.Rules) == 0 && len(opt.AppendRule) == 0 {
979 r.IsCheck = true
980 }
981
982 if opt.Word == "" {
983 opt.Word = "{?"
984 for i, _ := range dicts {
985 opt.Word += strconv.Itoa(i)
986 }
987 opt.Word += "}"
988 }
989
990 if len(opt.Suffixes) != 0 {
991 mask.SpecialWords["suffix"] = opt.Suffixes
992 opt.Word += "{?@suffix}"
993 }
994 if len(opt.Prefixes) != 0 {
995 mask.SpecialWords["prefix"] = opt.Prefixes
996 opt.Word = "{?@prefix}" + opt.Word
997 }
998
999 if opt.ForceExtension && opt.Extensions != "" {
1000 exts := strings.Split(opt.Extensions, ",")
1001 for i, e := range exts {
1002 if !strings.HasPrefix(e, ".") {
1003 exts[i] = "." + e
1004 }
1005 }
1006 mask.SpecialWords["ext"] = exts
1007 opt.Word += "{?@ext}"
1008 }
1009
1010 r.Wordlist, err = mask.Run(opt.Word, dicts, nil)
1011 if err != nil {
1012 return fmt.Errorf("%s %w", opt.Word, err)
1013 }
1014 if len(r.Wordlist) > 0 {
1015 logs.Log.Logf(pkg.LogVerbose, "Parsed %d words by %s", len(r.Wordlist), opt.Word)

Callers 1

NewRunnerMethod · 0.95

Calls 7

LoadFileToSliceFunction · 0.92
LoadRuleAndCombineFunction · 0.92
ParseEXTPlaceholderFuncFunction · 0.92
WrapWordsFuncFunction · 0.92
ParseExtensionFunction · 0.92
AppendFunctionMethod · 0.80
RunMethod · 0.45

Tested by

no test coverage detected