From 77f1046bfcaf7c0e8e72235f165fbf93910425fa Mon Sep 17 00:00:00 2001 From: perp Date: Tue, 9 Jul 2024 18:55:31 +0100 Subject: [PATCH] Added output flag --- v1/cmd/blink/main.go | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/v1/cmd/blink/main.go b/v1/cmd/blink/main.go index 15330d0..b452eed 100644 --- a/v1/cmd/blink/main.go +++ b/v1/cmd/blink/main.go @@ -6,6 +6,7 @@ import ( "slices" "strconv" "strings" + "sync" "git.supernets.org/perp/blink/v1/internal/bar" "git.supernets.org/perp/blink/v1/internal/file" @@ -31,8 +32,11 @@ var opts runner.Options var ( wordlist string resolvers string + output string wildcard bool verbose bool + + mu sync.Mutex ) // Command @@ -99,7 +103,7 @@ var rootCmd = &cobra.Command{ pb.Add(1) pb.Clear() - // Error found + // Check error if result.Error != nil { // Verbose enabled if verbose { @@ -125,6 +129,31 @@ var rootCmd = &cobra.Command{ log.Info(). Str("hosts", ips). 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 @@ -171,6 +200,7 @@ func init() { // Add flags rootCmd.Flags().StringVarP(&wordlist, "wordlist", "w", "", "Path to wordlist") 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.IPv6, "ipv6", "i", false, "Query for IPv6") rootCmd.Flags().BoolVarP(&wildcard, "wildcard", "d", false, "Query for wildcard")