Merge pull request #22 from projectdiscovery/iceman-add-colors

Added colors to output
This commit is contained in:
Ice3man 2020-06-15 10:29:45 -07:00 committed by GitHub
commit 1ba45c0d8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 74 additions and 31 deletions

View File

@ -7,6 +7,7 @@ import (
"io/ioutil"
"os"
"path"
"strconv"
"strings"
"time"
@ -56,6 +57,7 @@ func main() {
scanopts.StoreResponseDirectory = options.StoreResponseDir
scanopts.Method = options.Method
scanopts.OutputServerHeader = options.OutputServerHeader
scanopts.OutputWithNoColor = options.NoColor
scanopts.ResponseInStdout = options.responseInStdout
// Try to create output folder if it doesnt exist
@ -180,6 +182,7 @@ type scanOptions struct {
StoreResponse bool
StoreResponseDirectory string
OutputServerHeader bool
OutputWithNoColor bool
ResponseInStdout bool
}
@ -229,16 +232,56 @@ retry:
builder.WriteString(fullURL)
if scanopts.OutputStatusCode {
builder.WriteString(fmt.Sprintf(" [%d]", resp.StatusCode))
builder.WriteString(" [")
if !scanopts.OutputWithNoColor {
// Color the status code based on its value
switch {
case resp.StatusCode >= 200 && resp.StatusCode < 300:
builder.WriteString("\033[38;2;0;128;0m")
case resp.StatusCode >= 300 && resp.StatusCode < 400:
builder.WriteString("\033[38;2;255;165;0m")
case resp.StatusCode >= 400 && resp.StatusCode < 500:
builder.WriteString("\033[38;2;255;0;0m")
case resp.StatusCode > 500:
builder.WriteString("\033[38;2;255;255;0m")
}
}
builder.WriteString(strconv.Itoa(resp.StatusCode))
if !scanopts.OutputWithNoColor {
builder.WriteString("\u001b[0m")
}
builder.WriteRune(']')
}
if scanopts.OutputContentLength {
builder.WriteString(fmt.Sprintf(" [%d]", resp.ContentLength))
builder.WriteString(" [")
if !scanopts.OutputWithNoColor {
builder.WriteString("\033[38;2;138;43;226m")
}
builder.WriteString(strconv.Itoa(resp.ContentLength))
if !scanopts.OutputWithNoColor {
builder.WriteString("\u001b[0m")
}
builder.WriteRune(']')
}
title := httpx.ExtractTitle(resp)
if scanopts.OutputTitle {
builder.WriteString(fmt.Sprintf(" [%s]", title))
builder.WriteString(" [")
if !scanopts.OutputWithNoColor {
builder.WriteString("\033[38;2;34;215;211m")
}
builder.WriteString(title)
if !scanopts.OutputWithNoColor {
builder.WriteString("\u001b[0m")
}
builder.WriteRune(']')
}
serverHeader := resp.GetHeader("Server")