Projects STRLCPY afrog Commits 8a51253f
🤬
  • cmd 控制台输出美化、report报告美化及体验提升

  • Loading...
  • zan8in committed 2 years ago
    8a51253f
    1 parent 9c809af9
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    cmd/afrog/main.go
    skipped 1 lines
    2 2   
    3 3  import (
    4 4   "fmt"
    5  - "github.com/zan8in/afrog/pkg/utils"
    6 5   "os"
     6 + "sync"
    7 7   
    8 8   "github.com/urfave/cli/v2"
    9 9   "github.com/zan8in/afrog/internal/runner"
    skipped 3 lines
    13 13   "github.com/zan8in/afrog/pkg/log"
    14 14   "github.com/zan8in/afrog/pkg/poc"
    15 15   "github.com/zan8in/afrog/pkg/upgrade"
     16 + "github.com/zan8in/afrog/pkg/utils"
    16 17  )
    17 18   
    18 19  var options = &config.Options{}
    19 20  var htemplate = &html.HtmlTemplate{}
     21 +var lock sync.Mutex
     22 +var number = 0
    20 23   
    21 24  func main() {
    22 25   app := cli.NewApp()
    skipped 14 lines
    37 40   upgrade := upgrade.New()
    38 41   upgrade.UpgradeAfrogPocs()
    39 42   
    40  - showBanner(upgrade.LastestAfrogVersion)
     43 + runner.ShowBanner2(upgrade.LastestAfrogVersion)
    41 44   
    42 45   fmt.Println("PATH:")
    43 46   fmt.Println(" " + options.Config.GetConfigPath())
    skipped 7 lines
    51 54   err := runner.New(options, func(result interface{}) {
    52 55   r := result.(*core.Result)
    53 56   
    54  - options.OptLock.Lock()
    55  - defer options.OptLock.Unlock()
     57 + lock.Lock()
     58 + defer lock.Unlock()
    56 59   
    57 60   if !options.Silent {
    58 61   options.CurrentCount++
    59 62   }
    60 63   
    61 64   if r.IsVul {
    62  - r.PrintColorResultInfoConsole()
     65 + number++
    63 66   
    64 67   if len(r.Output) > 0 {
    65 68   htemplate.Result = r
     69 + htemplate.Number = utils.GetNumberText(number)
    66 70   htemplate.Append()
    67 71   }
     72 + 
     73 + r.PrintColorResultInfoConsole(utils.GetNumberText(number))
    68 74   }
    69 75   
    70 76   if !options.Silent {
    71 77   fmt.Printf("\r%d/%d | %d%% ", options.CurrentCount, options.Count, options.CurrentCount*100/options.Count)
    72 78   }
     79 + 
    73 80   })
    74 81   if err != nil {
    75 82   return err
    skipped 9 lines
    85 92   }
    86 93  }
    87 94   
    88  -func showBanner(afrogLatestversion string) {
    89  - title := "NAME:\n " + log.LogColor.Banner(runner.ShowBanner()) + " - v" + config.Version
    90  - old := ""
    91  - if utils.Compare(afrogLatestversion, ">", config.Version) {
    92  - old = log.LogColor.High(" (outdated)")
    93  - old += log.LogColor.Title(" --> https://github.com/zan8in/afrog/releases/tag/v" + afrogLatestversion)
    94  - }
    95  - fmt.Println(title + old + "\n")
    96  -}
    97  - 
  • ■ ■ ■ ■ ■ ■
    internal/runner/banner.go
    1 1  package runner
    2 2   
     3 +import (
     4 + "fmt"
     5 + 
     6 + "github.com/zan8in/afrog/pkg/config"
     7 + "github.com/zan8in/afrog/pkg/log"
     8 + "github.com/zan8in/afrog/pkg/utils"
     9 +)
     10 + 
    3 11  func ShowBanner() string {
    4 12   return "afrog"
    5 13  }
    skipped 2 lines
    8 16   return "\nUSAGE:\n afrog -t example.com -o result.html\n afrog -T urls.txt -o result.html\n afrog -T urls.txt -s -o result.html\n afrog -t example.com -P ./pocs/poc-test.yaml -o result.html\n afrog -t example.com -P ./pocs/ -o result.html\n"
    9 17  }
    10 18   
     19 +func ShowBanner2(afrogLatestversion string) {
     20 + title := "NAME:\n " + log.LogColor.Banner(ShowBanner()) + " - v" + config.Version
     21 + old := ""
     22 + if utils.Compare(afrogLatestversion, ">", config.Version) {
     23 + old = log.LogColor.High(" (outdated)")
     24 + old += log.LogColor.Title(" --> https://github.com/zan8in/afrog/releases/tag/v" + afrogLatestversion)
     25 + }
     26 + fmt.Println(title + old + "\n")
     27 +}
     28 + 
  • ■ ■ ■ ■ ■ ■
    pkg/core/result.go
    skipped 79 lines
    80 80   return "[" + utils.GetNowDateTime() + "] [" + r.PocInfo.Id + "] [" + r.PocInfo.Info.Severity + "] " + r.Target
    81 81  }
    82 82   
    83  -func (r *Result) PrintColorResultInfoConsole() {
    84  - fmt.Printf("\r" + log.LogColor.Time(utils.GetNowDateTime()) + " " +
     83 +func (r *Result) PrintColorResultInfoConsole(number string) {
     84 + fmt.Printf("\r" + log.LogColor.Time(number+" "+utils.GetNowDateTime()) + " " +
    85 85   log.LogColor.Vulner(""+r.PocInfo.Id+"") + " " +
    86 86   log.LogColor.GetColor(r.PocInfo.Info.Severity, ""+
    87 87   strings.ToUpper(r.PocInfo.Info.Severity)+"") + " " + r.Target + "\r\n")
    skipped 16 lines
  • pkg/html/html.go
    Unable to diff as some line is too long.
  • ■ ■ ■ ■ ■ ■
    pkg/utils/file.go
    skipped 3 lines
    4 4   "bufio"
    5 5   "errors"
    6 6   "fmt"
     7 + "io"
    7 8   "io/ioutil"
    8 9   "log"
    9 10   "os"
    skipped 71 lines
    81 82  }
    82 83   
    83 84  func BufferWriteAppend(filename string, param string) error {
    84  - fileHandle, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
     85 + fileHandle, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_APPEND|os.O_SYNC, 0660)
    85 86   if err != nil {
    86 87   return err
    87 88   }
    skipped 9 lines
    97 98   return buf.Flush()
    98 99  }
    99 100   
     101 +const (
     102 + NEW_FILE_PERM = 0666
     103 +)
     104 + 
     105 +// AppendString appends the contents of the string to filename.
     106 +func AppendString(filename, content string) error {
     107 + f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, NEW_FILE_PERM)
     108 + if err != nil {
     109 + return err
     110 + }
     111 + data := []byte(content)
     112 + n, err := f.Write(data)
     113 + if err == nil && n < len(data) {
     114 + err = io.ErrShortWrite
     115 + // fmt.Println(err)
     116 + }
     117 + if err1 := f.Close(); err == nil {
     118 + err = err1
     119 + // fmt.Println(err)
     120 + }
     121 + return err
     122 +}
     123 + 
  • ■ ■ ■ ■ ■ ■
    pkg/utils/utils.go
    skipped 4 lines
    5 5   "net/http"
    6 6   "net/url"
    7 7   "os"
     8 + "strconv"
    8 9   "strings"
    9 10   "time"
    10 11   
    skipped 141 lines
    152 153   return now.Format("2006-01-02 15:04:05")
    153 154  }
    154 155   
     156 +func GetNumberText(number int) string {
     157 + num := strconv.Itoa(number)
     158 + if len(num) == 1 {
     159 + num = "00" + num
     160 + } else if len(num) == 2 {
     161 + num = "0" + num
     162 + }
     163 + return num
     164 +}
     165 + 
Please wait...
Page is in error, reload to recover