yellow~ opinionated web scanning pipeline for pentesters in a hurry |
| git clone https://github.com/djnnvx/yellow.git |
| log | files | refs | archive | README | LICENSE |
strings.go (1424B)
1 package helper 2 3 import ( 4 "encoding/json" 5 "strings" 6 "unicode" 7 ) 8 9 func ReplaceWithHyphen(input string) string { 10 var result strings.Builder 11 for _, r := range input { 12 if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '.' { 13 result.WriteRune(r) 14 } else { 15 result.WriteRune('-') 16 } 17 } 18 19 return result.String() 20 } 21 22 // if its not a valid domain in the end, not too big of a deal, 23 // we just want an approximate response 24 func StringHasUnwantedCharactersForDomainName(url string) bool { 25 if strings.ContainsAny(url, ":;\t\n, +\\\"[]{}()=") { 26 return true 27 } 28 return strings.HasSuffix(url, ".") || strings.HasPrefix(url, "Name") 29 } 30 31 func ExtractString(m map[string]any, k string) string { 32 if v, ok := m[k]; ok { 33 if s, ok := v.(string); ok { 34 return s 35 } 36 } 37 return "" 38 } 39 40 func ExtractInt(m map[string]any, k string) int { 41 if v, ok := m[k]; ok { 42 switch t := v.(type) { 43 case json.Number: 44 if i, err := t.Int64(); err == nil { 45 return int(i) 46 } 47 if f, err := t.Float64(); err == nil { 48 return int(f) 49 } 50 case float64: 51 return int(t) 52 case int: 53 return t 54 case int64: 55 return int(t) 56 } 57 } 58 return 0 59 } 60 61 func ExtractNumberAsFloat(m map[string]any, k string) (float64, bool) { 62 if v, ok := m[k]; ok { 63 switch t := v.(type) { 64 case json.Number: 65 f, err := t.Float64() 66 if err != nil { 67 return 0, false 68 } 69 return f, true 70 case float64: 71 return t, true 72 } 73 } 74 return 0, false 75 }