diff options
| author | sinner <[email protected]> | 2026-01-19 06:02:10 -0500 |
|---|---|---|
| committer | sinner <[email protected]> | 2026-01-19 06:02:10 -0500 |
| commit | 85caa38c7b45766f044a016b88a410f75cb7469e (patch) | |
| tree | fd6be3a176b62097494ced076768d82179a4dbcf /internal/formatter/sl.go | |
| parent | 542a09fd14761b4789ae89e16060b1b453e2e0f2 (diff) | |
| download | dborg-85caa38c7b45766f044a016b88a410f75cb7469e.tar.gz dborg-85caa38c7b45766f044a016b88a410f75cb7469e.zip | |
Diffstat (limited to 'internal/formatter/sl.go')
| -rw-r--r-- | internal/formatter/sl.go | 86 |
1 files changed, 12 insertions, 74 deletions
diff --git a/internal/formatter/sl.go b/internal/formatter/sl.go index d7d293f..33f4ac0 100644 --- a/internal/formatter/sl.go +++ b/internal/formatter/sl.go @@ -10,7 +10,7 @@ import ( func FormatSLResults(resp *models.SLResponse, asJSON bool) (string, error) { if asJSON { - data, err := json.MarshalIndent(resp.Results, "", " ") + data, err := json.MarshalIndent(resp.Hits, "", " ") if err != nil { return "", fmt.Errorf("failed to marshal JSON: %w", err) } @@ -19,63 +19,35 @@ func FormatSLResults(resp *models.SLResponse, asJSON bool) (string, error) { var sb strings.Builder - if resp.Results == nil { + if len(resp.Hits) == 0 { sb.WriteString(fmt.Sprintf("\n%s\n\n", Gray("No results found"))) return sb.String(), nil } - resultsMap, ok := resp.Results.(map[string]interface{}) - if !ok { - resultsJSON, err := json.MarshalIndent(resp.Results, "", " ") - if err != nil { - return "", fmt.Errorf("failed to format results: %w", err) - } - return string(resultsJSON), nil - } - - hits, ok := resultsMap["hits"].([]interface{}) - if !ok || len(hits) == 0 { - sb.WriteString(fmt.Sprintf("\n%s\n\n", Gray("No results found"))) - return sb.String(), nil - } - - numHits, _ := resultsMap["num_hits"].(float64) - elapsed, _ := resultsMap["elapsed_time_micros"].(float64) - sb.WriteString(fmt.Sprintf("%s %s %s\n", Cyan("Found"), - Bold(Yellow(fmt.Sprintf("%d", int(numHits)))), - Cyan(fmt.Sprintf("credentials (%.2fms)", elapsed/1000)))) + Bold(Yellow(fmt.Sprintf("%d", resp.NumHits))), + Cyan("credentials"))) sb.WriteString("\n") - for i, hit := range hits { - hitMap, ok := hit.(map[string]interface{}) - if !ok { - continue - } - + for i, hit := range resp.Hits { if i > 0 { sb.WriteString(Dim("───")) sb.WriteString("\n") } - username, _ := hitMap["username"].(string) - password, _ := hitMap["password"].(string) - url, _ := hitMap["url"].(string) - filename, _ := hitMap["filename"].(string) + sb.WriteString(fmt.Sprintf("%s %s\n", Dim("Username:"), Bold(hit.Username))) - sb.WriteString(fmt.Sprintf("%s %s\n", Dim("Username:"), Bold(username))) - - if password != "" { - sb.WriteString(fmt.Sprintf("%s %s\n", Dim("Password:"), Yellow(password))) + if hit.Password != "" { + sb.WriteString(fmt.Sprintf("%s %s\n", Dim("Password:"), Yellow(hit.Password))) } - if url != "" { - sb.WriteString(fmt.Sprintf("%s %s\n", Dim("URL:"), Blue(url))) + if hit.URL != "" { + sb.WriteString(fmt.Sprintf("%s %s\n", Dim("URL:"), Blue(hit.URL))) } - if filename != "" { - sb.WriteString(fmt.Sprintf("%s %s\n", Dim("Source:"), Magenta(filename))) + if hit.Filename != "" { + sb.WriteString(fmt.Sprintf("%s %s\n", Dim("Source:"), Magenta(hit.Filename))) } sb.WriteString("\n") @@ -89,37 +61,3 @@ func FormatSLResults(resp *models.SLResponse, asJSON bool) (string, error) { return sb.String(), nil } - -func formatSLResultsData(sb *strings.Builder, data map[string]interface{}) { - sb.WriteString(fmt.Sprintf("%s\n", Bold("Stealer Log Entries:"))) - - for key, value := range data { - sb.WriteString(fmt.Sprintf("\n %s:\n", Cyan(key))) - if valueMap, ok := value.(map[string]interface{}); ok { - for k, v := range valueMap { - sb.WriteString(fmt.Sprintf(" %s %v\n", Dim(fmt.Sprintf("%s:", k)), v)) - } - } else if valueArray, ok := value.([]interface{}); ok { - for i, item := range valueArray { - sb.WriteString(fmt.Sprintf(" %s %v\n", Dim(fmt.Sprintf("[%d]:", i)), item)) - } - } else { - sb.WriteString(fmt.Sprintf(" %v\n", value)) - } - } -} - -func formatSLResultsArray(sb *strings.Builder, data []interface{}) { - sb.WriteString(fmt.Sprintf("%s\n", Bold("Stealer Log Entries:"))) - - for i, entry := range data { - sb.WriteString(fmt.Sprintf("\n %s:\n", Blue(fmt.Sprintf("Entry %d", i+1)))) - if entryMap, ok := entry.(map[string]interface{}); ok { - for key, value := range entryMap { - sb.WriteString(fmt.Sprintf(" %s %v\n", Dim(fmt.Sprintf("%s:", key)), value)) - } - } else { - sb.WriteString(fmt.Sprintf(" %v\n", entry)) - } - } -} |
