kgretzky/evilginx2 · error
set custom parameters for the child phishlet using format 'p
Error message
set custom parameters for the child phishlet using format 'param1=value1 param2=value2'
What it means
When creating a child phishlet from a template phishlet (`phishlets create <parent> <name> ...`), every extra argument from position 3 onward must be a `key=value` custom parameter. If any argument lacks an `=` sign, handlePhishlets returns this error because the template parameter cannot be parsed.
Source
Thrown at core/terminal.go:578
return fmt.Errorf("invalid syntax: %s", args)
}
func (t *Terminal) handlePhishlets(args []string) error {
pn := len(args)
if pn >= 3 && args[0] == "create" {
pl, err := t.cfg.GetPhishlet(args[1])
if err == nil {
params := make(map[string]string)
var create_ok bool = true
if pl.isTemplate {
for n := 3; n < pn; n++ {
val := args[n]
sp := strings.Index(val, "=")
if sp == -1 {
return fmt.Errorf("set custom parameters for the child phishlet using format 'param1=value1 param2=value2'")
}
k := val[:sp]
v := val[sp+1:]
params[k] = v
log.Info("adding parameter: %s='%s'", k, v)
}
}
if create_ok {
child_name := args[1] + ":" + args[2]
err := t.cfg.AddSubPhishlet(child_name, args[1], params)
if err != nil {
log.Error("%v", err)
} else {
t.cfg.SaveSubPhishlets()
log.Info("created child phishlet: %s", child_name)View on GitHub (pinned to 4c0988a1d9)
Solutions
- Append `=value` to each parameter token: `phishlets create <parent> <child> param1=value1 param2=value2`
- Check the parent phishlet's required template parameters (see phishlet YAML custom: section) and supply all of them
- Quote parameters containing spaces or special shell characters
Example fix
// before phishlets create o365 corp domain // after phishlets create o365 corp domain=corp.example.com
Defensive patterns
Strategy: validation
Validate before calling
func validateCreateArgs(extra []string) error {
for _, v := range extra {
if !strings.Contains(v, "=") {
return fmt.Errorf("parameter %q must be key=value", v)
}
}
return nil
} Type guard
func isKeyValue(s string) bool { return strings.Index(s, "=") > 0 } Try / catch
if err := t.handlePhishlets(args); err != nil {
if strings.Contains(err.Error(), "param1=value1") {
log.Info("usage: phishlets create <parent> <child> key=value ...")
} else { log.Error("%v", err) }
} Prevention
- Always pass key=value pairs for template phishlets
- Quote args containing special characters
- Check the phishlet YAML 'custom:' section for required params
When it happens
Trigger: Running `phishlets create <template-name> <child-name> <param>` where one or more parameter tokens after the child name do not contain `=` (e.g. `phishlets create o365 mycorp domain` instead of `domain=mycorp.com`).
Common situations: Operator forgot values for template-required parameters; used space instead of `=`; copied a command where shell splitting removed the `=`; passed only the child name for a template phishlet that requires params.
Related errors
- incorrect number of arguments
- enabling phishlet '%s' requires its hostname to be set up
- phishlet '%s' is a template - you have to 'create' child phi
- phishlet '%s' already exists
- phishlet '%s' can't be deleted - you can only delete child p
AI-assisted analysis of kgretzky/evilginx2@4c0988a1d9 (2026-09-05).
Data as JSON: /api/errors/87920760a6768f62.
Report an issue: GitHub.