kgretzky/evilginx2 · error
this phishlet is incompatible with current version of evilgi
Error message
this phishlet is incompatible with current version of evilginx. please do the following modifications to update it: - replace `landing_path` with `login` section - change `min_ver` to at least `2.3.0` you can find the phishlet 2.3.0 file format documentation here: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)
What it means
After the 2.2.0 check, the phishlet loader enforces a second minimum: phishlets must declare min_ver >= 2.3.0, which introduced the `login` section replacing `landing_path`. The message is a migration checklist for upgrading a 2.2.0-era phishlet to the 2.3.0 format.
Source
Thrown at core/phishlet.go:306
p.Version, err = p.parseVersion(c.GetString("min_ver"))
if err != nil {
return err
}
if !p.isVersionHigherEqual(&p.Version, "2.2.0") {
return fmt.Errorf("this phishlet is incompatible with current version of evilginx.\nplease do the following modifications to update it:\n\n" +
"- in each `sub_filters` item change `hostname` to `triggers_on`\n" +
"- in each `sub_filters` item change `sub` to `orig_sub`\n" +
"- rename section `user_regex` to `username`\n" +
"- rename section `pass_regex` to `password`\n" +
"- rename field `re` in both `username` and `password` to `search`\n" +
"- field `key` in both `username` and `password` must be a regexp by default\n" +
"- move `username` and `password` into new `credentials` section\n" +
"- add `type` field to `username` and `password` with value 'post' or 'json'\n" +
"- change `min_ver` to at least `2.2.0`\n" +
"you can find the phishlet 2.2.0 file format documentation here: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.2.0)")
}
if !p.isVersionHigherEqual(&p.Version, "2.3.0") {
return fmt.Errorf("this phishlet is incompatible with current version of evilginx.\nplease do the following modifications to update it:\n\n" +
"- replace `landing_path` with `login` section\n" +
"- change `min_ver` to at least `2.3.0`\n" +
"you can find the phishlet 2.3.0 file format documentation here: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)")
}
fp := ConfigPhishlet{}
err = c.Unmarshal(&fp)
if err != nil {
return err
}
if fp.Params != nil {
if len(*fp.Params) > 0 {
p.isTemplate = true
}
if customParams != nil {
prequired := make(map[string]string)
pall := make(map[string]string)View on GitHub (pinned to 4c0988a1d9)
Solutions
- Replace the `landing_path` field with a `login` section per the 2.3.0 format (login: { domain, path })
- Set `min_ver` to at least 2.3.0
- Fetch an updated 2.3.0+ phishlet from the author if available
- Consult the official docs: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)
Example fix
# before min_ver: 2.2.0 landing_path: /login # after min_ver: 2.3.0 login: domain: 'example.com' path: '/login'
Defensive patterns
Strategy: validation
Validate before calling
if v, _ := parseVersion(minVer); !isVersionHigherEqual(v, "2.3.0") {
return fmt.Errorf("phishlet must declare min_ver >= 2.3.0 (login section required)")
} Type guard
func isPhishlet23Compatible(minVer string) bool {
v, err := parseVersion(minVer)
return err == nil && isVersionHigherEqual(&v, "2.3.0")
} Try / catch
if err := cfg.LoadPhishlet(name, path, nil); err != nil {
if strings.Contains(err.Error(), "landing_path") {
log.Error("convert landing_path to the login section and set min_ver: 2.3.0")
}
} Prevention
- After the 2.2.0 migration, immediately do the 2.3.0 step (login section) — don't stop at 2.2.0
- Search phishlet files for `landing_path` and convert them
- Set min_ver: 2.3.0 or higher in all maintained phishlets
- Refresh phishlets from upstream repos after upgrading evilginx
When it happens
Trigger: Loading a phishlet whose `min_ver` is exactly 2.2.x (or otherwise below 2.3.0) and which still uses `landing_path` instead of the `login` section — e.g. `min_ver: 2.2.0` with `landing_path: /login`.
Common situations: Phishlets downloaded from repositories frozen at the 2.2.0 format, hand-migrated phishlets that got min_ver to 2.2.0 but not 2.3.0, or older evilginx tutorials' example phishlets.
Related errors
- this phishlet is incompatible with current version of evilgi
- 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
- missing custom parameter values during initalization: %v
AI-assisted analysis of kgretzky/evilginx2@4c0988a1d9 (2026-09-05).
Data as JSON: /api/errors/5cbe633391aca33a.
Report an issue: GitHub.