Skip to content

Commit

Permalink
Merge pull request #88 from x90skysn3k/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
x90skysn3k committed Feb 27, 2024
2 parents 83db358 + 44dd0d8 commit 30d5b31
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 10 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# BruteSpray

![Version](https://img.shields.io/badge/Version-2.2.0-red)[![goreleaser](https://github.com/x90skysn3k/brutespray/actions/workflows/release.yml/badge.svg)](https://github.com/x90skysn3k/brutespray/actions/workflows/release.yml)[![Go Report Card](https://goreportcard.com/badge/github.com/x90skysn3k/brutespray)](https://goreportcard.com/report/github.com/x90skysn3k/brutespray)
![Version](https://img.shields.io/badge/Version-2.2.1-red)[![goreleaser](https://github.com/x90skysn3k/brutespray/actions/workflows/release.yml/badge.svg)](https://github.com/x90skysn3k/brutespray/actions/workflows/release.yml)[![Go Report Card](https://goreportcard.com/badge/github.com/x90skysn3k/brutespray)](https://goreportcard.com/report/github.com/x90skysn3k/brutespray)

Created by: Shane Young/@t1d3nio && Jacob Robles/@shellfail

Expand Down
68 changes: 59 additions & 9 deletions brutespray/brutespray.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"os"
"os/signal"
"strconv"
"strings"
"sync"
"syscall"
Expand All @@ -20,7 +21,7 @@ var masterServiceList = []string{"ssh", "ftp", "smtp", "mssql", "telnet", "smbnt

var alphaServiceList = []string{"asterisk", "nntp", "oracle", "xmpp"}

var version = "v2.2.0"
var version = "v2.2.1"

func Execute() {
user := flag.String("u", "", "Username or user list to bruteforce")
Expand All @@ -35,6 +36,7 @@ func Execute() {
quiet := flag.Bool("q", false, "Suppress the banner")
timeout := flag.Duration("w", 5*time.Second, "Set timeout of bruteforce attempts")
retry := flag.Int("r", 3, "Amount of times to retry after receiving connection failed")
printhosts := flag.Bool("P", false, "Print found hosts parsed from provided host and file arguments")

flag.Parse()

Expand Down Expand Up @@ -105,29 +107,77 @@ func Execute() {
}
}
}
bar, _ := pterm.DefaultProgressbar.WithTotal((totalCombinations) - nopassServices).WithTitle("Bruteforcing...").Start()
var wg sync.WaitGroup
var bruteForceWg sync.WaitGroup
sem := make(chan struct{}, *threads**hostParallelism)
hostSem := make(chan struct{}, *hostParallelism)
sigs := make(chan os.Signal, 1)
progressCh := make(chan int, totalCombinations)

signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
if *printhosts {

pterm.Color(pterm.FgLightGreen).Println("Found Services:")
data := pterm.TableData{}

header := []string{"IP", "Service and Port"}
data = append(data, header)

hostToServices := make(map[string][]string)

for _, h := range hostsList {
portstr := strconv.Itoa(h.Port)
service := h.Service + " on port " + portstr
if _, ok := hostToServices[h.Host]; !ok {
hostToServices[h.Host] = []string{service}
} else {
hostToServices[h.Host] = append(hostToServices[h.Host], service)
}
}

for ip, services := range hostToServices {
row := []string{ip, strings.Join(services, "\n")}
data = append(data, row)
}

err := pterm.DefaultTable.WithRowSeparator("-").WithHeaderRowSeparator("-").WithData(data).Render()
if err != nil {
_ = err
}
spinner, _ := pterm.DefaultSpinner.Start("Waiting...")
time.Sleep(3 * time.Second)
err = spinner.Stop()
if err != nil {
_ = err
}

}

pterm.Color(pterm.FgLightYellow).Println("\nStarting to brute, please make sure to use the right amount of threads(-t) and parallel hosts(-T)...")

spinner, _ := pterm.DefaultSpinner.Start("Starting Bruteforce...")
time.Sleep(3 * time.Second)
err = spinner.Stop()
if err != nil {
_ = err
}

bar, _ := pterm.DefaultProgressbar.WithTotal((totalCombinations) - nopassServices).WithTitle("Bruteforcing...").Start()

go func() {
for range progressCh {
bar.Increment()
}
}()

go func() {
<-sigs
pterm.DefaultSection.Println("\nReceived an interrupt signal, shutting down...")
pterm.Color(pterm.FgLightYellow).Println("\nReceived an interrupt signal, shutting down...")
time.Sleep(5 * time.Second)
_, _ = bar.Stop()
os.Exit(0)
}()

go func() {
for range progressCh {
bar.Increment()
}
}()
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

for _, service := range supportedServices {
wg.Add(1)
Expand Down

0 comments on commit 30d5b31

Please sign in to comment.