mirror of https://github.com/daffainfo/nuclei.git
39 lines
765 B
Go
39 lines
765 B
Go
|
package generators
|
||
|
|
||
|
// PitchforkGenerator Attack - Generate positional combinations from an input map with all values listed
|
||
|
// as slices of the same size
|
||
|
func PitchforkGenerator(payloads map[string][]string) (out chan map[string]interface{}) {
|
||
|
out = make(chan map[string]interface{})
|
||
|
|
||
|
size := 0
|
||
|
|
||
|
// check if all wordlists have the same size
|
||
|
for _, wordlist := range payloads {
|
||
|
if size == 0 {
|
||
|
size = len(wordlist)
|
||
|
}
|
||
|
|
||
|
if len(wordlist) != size {
|
||
|
//set size = 0 and exit the cycle
|
||
|
size = 0
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// generator
|
||
|
go func() {
|
||
|
defer close(out)
|
||
|
|
||
|
for i := 0; i < size; i++ {
|
||
|
element := make(map[string]interface{})
|
||
|
for name, wordlist := range payloads {
|
||
|
element[name] = wordlist[i]
|
||
|
}
|
||
|
|
||
|
out <- element
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
return out
|
||
|
}
|