Added output flag

This commit is contained in:
perp 2024-07-09 18:55:31 +01:00
parent 3c819bd083
commit 77f1046bfc

View File

@ -6,6 +6,7 @@ import (
"slices" "slices"
"strconv" "strconv"
"strings" "strings"
"sync"
"git.supernets.org/perp/blink/v1/internal/bar" "git.supernets.org/perp/blink/v1/internal/bar"
"git.supernets.org/perp/blink/v1/internal/file" "git.supernets.org/perp/blink/v1/internal/file"
@ -31,8 +32,11 @@ var opts runner.Options
var ( var (
wordlist string wordlist string
resolvers string resolvers string
output string
wildcard bool wildcard bool
verbose bool verbose bool
mu sync.Mutex
) )
// Command // Command
@ -99,7 +103,7 @@ var rootCmd = &cobra.Command{
pb.Add(1) pb.Add(1)
pb.Clear() pb.Clear()
// Error found // Check error
if result.Error != nil { if result.Error != nil {
// Verbose enabled // Verbose enabled
if verbose { if verbose {
@ -125,6 +129,31 @@ var rootCmd = &cobra.Command{
log.Info(). log.Info().
Str("hosts", ips). Str("hosts", ips).
Msg(result.Subdomain) Msg(result.Subdomain)
// Output found
if output != "" {
// Lock mutex
mu.Lock()
// Write output
var err error
// Check IPv6
switch opts.IPv6 {
case false:
err = file.Write(output, result.Domain, result.Subdomain, result.IPv4)
case true:
err = file.Write(output, result.Domain, result.Subdomain, result.IPv6)
}
// Unlock mutex
mu.Unlock()
// Check error
if err != nil {
return
}
}
} }
// Create runner // Create runner
@ -171,6 +200,7 @@ func init() {
// Add flags // Add flags
rootCmd.Flags().StringVarP(&wordlist, "wordlist", "w", "", "Path to wordlist") rootCmd.Flags().StringVarP(&wordlist, "wordlist", "w", "", "Path to wordlist")
rootCmd.Flags().StringVarP(&resolvers, "resolvers", "r", "", "Path to resolvers") rootCmd.Flags().StringVarP(&resolvers, "resolvers", "r", "", "Path to resolvers")
rootCmd.Flags().StringVarP(&output, "output", "o", "", "Path to save output")
rootCmd.Flags().BoolVarP(&opts.UDP, "udp", "u", false, "Query using UDP") rootCmd.Flags().BoolVarP(&opts.UDP, "udp", "u", false, "Query using UDP")
rootCmd.Flags().BoolVarP(&opts.IPv6, "ipv6", "i", false, "Query for IPv6") rootCmd.Flags().BoolVarP(&opts.IPv6, "ipv6", "i", false, "Query for IPv6")
rootCmd.Flags().BoolVarP(&wildcard, "wildcard", "d", false, "Query for wildcard") rootCmd.Flags().BoolVarP(&wildcard, "wildcard", "d", false, "Query for wildcard")