yellow.git


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 }