package pkg import ( "errors" "strings" ) type NTLMProfile struct { ProfileCommon InsertCookieDomain string `json:"insert_cookie_domain"` InsertCookieName string `json:"insert_cookie_name"` InsertCookiePassphrase string `json:"insert_cookie_passphrase"` KeyByCookie string `json:"key_by_cookie"` KeyByCookieName string `json:"key_by_cookie_name"` //key-by-cookie-name mycookie KeyByDomain string `json:"key_by_domain"` //key-by-domain disabled KeyByIPAddress string `json:"key_by_ip_address"` //key-by-ip-address disabled KeyByTarget string `json:"key_by_target"` //key-by-target disabled KeyByUser string `json:"key_by_user"` //key-by-user enabled KeyByWorkstation string `json:"key_by_workstation"` //key-by-workstation disabled } func ParseNTLM(raw string) (*NTLMProfile, error) { p := new(NTLMProfile) split := strings.Split(raw, "\n") if !strings.Contains(split[0], "ltm profile ntlm") { return nil, errors.New("not an ntlm profile") } p.ProfileCommon = parseCommon(raw) for _, line := range split { f := strings.Fields(line) switch strings.ToLower(f[0]) { case "insert-cookie-domain": p.InsertCookieDomain = f[1] case "insert-cookie-name": p.InsertCookieName = f[1] case "insert-cookie-passphrase": p.InsertCookiePassphrase = f[1] case "key-by-cookie": p.KeyByCookie = f[1] case "key-by-cookie-name": p.KeyByCookieName = f[1] case "key-by-domain": p.KeyByDomain = f[1] case "key-by-ip-address": p.KeyByIPAddress = f[1] case "key-by-target": p.KeyByTarget = f[1] case "key-by-user": p.KeyByUser = f[1] case "key-by-workstation": p.KeyByWorkstation = f[1] } } return p, nil }