package main import ( "fmt" "gopkg.in/alecthomas/kingpin.v2" "encoding/hex" "strings" ) func main() { patternPointer:= kingpin.Arg("search", "Hex(eg '0x42424242') or String to be search").Required().String() pattLengthPointer:= kingpin.Flag("length", "Pattern length").Short(rune('l')).Int() kingpin.Parse() var fullPattern string var pattern string var combiArr []int = []int{0,0,0,0} combiMax := []int{26, 26, 26, 10} var fullCombi int charsetCaps := "ABCDEFGHIJKLMNOPQRSTUVWXYZ" charsetSmall := "abcdefgjijklmnopqrustuvwxyz" charsetNum := "0123456789" pattLength := *pattLengthPointer finalPos := 0 var startPos int if len(*patternPointer)<4 { fmt.Println("Input must have at least 4 bytes") } if (*patternPointer)[:2] == "0x" { fmt.Println("Hex detected") fullBytes, _ := hex.DecodeString((*patternPointer)[2:]) fullPattern = string(fullBytes) } else { fullPattern = *patternPointer } if len(fullPattern)<4 { fmt.Println("Input must have at least 4 bytes") } pattern = fullPattern[:4] for i:=0; i 0 { combiArr[len(combiArr)-1]+=1 for i:= len(combiArr)-1; i>0; i-- { if (combiArr[i] >= combiMax[i]) && (i >= (len(combiArr)-startPos)) { combiArr[i] = 0 if (i-1 >= (len(combiArr)-startPos)) { combiArr[i-1] += 1 } } } } for i:=0; i