summaryrefslogtreecommitdiffstats
path: root/cmd/osint.go
diff options
context:
space:
mode:
authors <[email protected]>2025-11-13 22:25:02 -0500
committers <[email protected]>2025-11-13 22:25:02 -0500
commit07662d9403eb85b39e1ffcf91014bbf36efd1c5a (patch)
tree1181435223899bae039a947c5fc4fdeec085f91b /cmd/osint.go
parent239936e87183a10a33ce593709eb16c92a04af98 (diff)
downloaddborg-07662d9403eb85b39e1ffcf91014bbf36efd1c5a.tar.gz
dborg-07662d9403eb85b39e1ffcf91014bbf36efd1c5a.zip
refactor: break down large osint.go file into separate command modules and add helper functionsv1.0.1
Diffstat (limited to 'cmd/osint.go')
-rw-r--r--cmd/osint.go349
1 files changed, 0 insertions, 349 deletions
diff --git a/cmd/osint.go b/cmd/osint.go
deleted file mode 100644
index e29ef54..0000000
--- a/cmd/osint.go
+++ /dev/null
@@ -1,349 +0,0 @@
-package cmd
-
-import (
- "encoding/json"
- "fmt"
- "git.db.org.ai/dborg/internal/client"
- "git.db.org.ai/dborg/internal/config"
- "git.db.org.ai/dborg/internal/formatter"
- "git.db.org.ai/dborg/internal/models"
-
- "github.com/spf13/cobra"
-)
-
-var usernameCmd = &cobra.Command{
- Use: "username [username]",
- Short: "Check username availability across websites",
- Long: `Check username availability across hundreds of websites using WhatsMyName dataset`,
- Args: cobra.ExactArgs(1),
- RunE: runUsernameCheck,
-}
-
-var bssidCmd = &cobra.Command{
- Use: "bssid [bssid]",
- Short: "Lookup WiFi access point location by BSSID",
- Long: `Lookup geographic location of a WiFi access point by its BSSID (MAC address) using Apple's location services`,
- Args: cobra.ExactArgs(1),
- RunE: runBSSIDLookup,
-}
-
-var breachforumCmd = &cobra.Command{
- Use: "breachforum [search]",
- Short: "Search BreachForum data",
- Long: `Search breachdetect index for BreachForum messages and detections`,
- Args: cobra.ExactArgs(1),
- RunE: runBreachForumSearch,
-}
-
-var filesCmd = &cobra.Command{
- Use: "files [url]",
- Short: "Search open directory files",
- Long: `Search for files in open directories using various filters (free OSINT endpoint)`,
- Args: cobra.ExactArgs(1),
- RunE: runFilesSearch,
-}
-
-var bucketsCmd = &cobra.Command{
- Use: "buckets",
- Short: "List public buckets",
- Long: `List public S3, Azure, GCP, and DigitalOcean buckets with file counts`,
- RunE: runBucketsSearch,
-}
-
-var bucketFilesCmd = &cobra.Command{
- Use: "bucket-files",
- Short: "Search public bucket files",
- Long: `Search public S3, Azure, GCP, and DigitalOcean buckets for exposed files`,
- RunE: runBucketFilesSearch,
-}
-
-var shortlinksCmd = &cobra.Command{
- Use: "shortlinks",
- Short: "Search brute forced short links",
- Long: `Search for exposed URLs discovered through brute forcing URL shortener services`,
- RunE: runShortlinksSearch,
-}
-
-var geoCmd = &cobra.Command{
- Use: "geo",
- Short: "Search for address information",
- Long: `Returns address information including residents, property details, and demographics (costs 1 credit)`,
- RunE: runGeoSearch,
-}
-
-var crawlCmd = &cobra.Command{
- Use: "crawl [domain]",
- Short: "Crawl domain",
- Long: `Resolves a domain using httpx and crawls it using katana. Returns discovered links as plain text, one per line, streamed in real-time. Supports both http:// and https:// URLs.`,
- Args: cobra.ExactArgs(1),
- RunE: runCrawl,
-}
-
-func init() {
- rootCmd.AddCommand(usernameCmd)
- rootCmd.AddCommand(bssidCmd)
- rootCmd.AddCommand(breachforumCmd)
- rootCmd.AddCommand(filesCmd)
- rootCmd.AddCommand(bucketsCmd)
- rootCmd.AddCommand(bucketFilesCmd)
- rootCmd.AddCommand(shortlinksCmd)
- rootCmd.AddCommand(geoCmd)
- rootCmd.AddCommand(crawlCmd)
-
- usernameCmd.Flags().StringSliceP("sites", "s", []string{}, "Specific sites to check (comma-separated)")
- usernameCmd.Flags().BoolP("fuzzy", "f", false, "Enable fuzzy validation mode")
- usernameCmd.Flags().IntP("max_tasks", "m", 50, "Maximum concurrent tasks")
-
- bssidCmd.Flags().BoolP("all", "a", false, "Show all related results instead of exact match only")
- bssidCmd.Flags().BoolP("google", "g", false, "Include Google Maps URL for the location")
- bssidCmd.Flags().BoolP("osm", "o", false, "Include OpenStreetMap URL for the location")
-
- breachforumCmd.Flags().IntP("max_hits", "m", 10, "Maximum number of hits to return")
-
- filesCmd.Flags().StringP("filename", "n", "", "Search term to match in filenames")
- filesCmd.Flags().StringP("extension", "e", "", "Filter by file extension(s) - comma-separated (e.g., pdf,doc,txt)")
- filesCmd.Flags().StringP("exclude", "x", "html,HTML", "Exclude file extension(s) - comma-separated")
- filesCmd.Flags().IntP("size", "s", 10, "Number of results to return (max 40)")
- filesCmd.Flags().IntP("from", "f", 0, "Starting offset for pagination")
-
- bucketsCmd.Flags().IntP("limit", "l", 1000, "Number of results to return")
- bucketsCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination")
-
- bucketFilesCmd.Flags().StringP("keywords", "w", "", "Search keywords")
- bucketFilesCmd.Flags().StringP("extensions", "e", "", "File extensions (comma-separated, e.g. 'sql,db,xlsx')")
- bucketFilesCmd.Flags().StringP("buckets", "b", "", "Filter by bucket names (comma-separated)")
- bucketFilesCmd.Flags().IntP("limit", "l", 1000, "Number of results to return")
- bucketFilesCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination")
-
- shortlinksCmd.Flags().StringP("keywords", "w", "", "Search keywords")
- shortlinksCmd.Flags().StringP("ext", "e", "", "File extensions (comma-separated, e.g. 'pdf,docx,xlsx')")
- shortlinksCmd.Flags().StringP("order", "o", "", "Sort by property (size, timestamp)")
- shortlinksCmd.Flags().StringP("direction", "d", "", "Sort direction (asc, desc)")
- shortlinksCmd.Flags().BoolP("regexp", "r", false, "Treat keywords as regular expression")
- shortlinksCmd.Flags().IntP("limit", "l", 100, "Number of results to return")
- shortlinksCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination")
-
- geoCmd.Flags().StringP("street", "s", "", "Street address")
- geoCmd.Flags().StringP("city", "c", "", "City")
- geoCmd.Flags().StringP("state", "t", "", "State (2-letter code)")
- geoCmd.Flags().StringP("zip", "z", "", "ZIP code")
- geoCmd.MarkFlagRequired("street")
- geoCmd.MarkFlagRequired("city")
- geoCmd.MarkFlagRequired("state")
- geoCmd.MarkFlagRequired("zip")
-}
-
-func runUsernameCheck(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.NewUnauthenticated(cfg)
- if err != nil {
- return err
- }
-
- params := &models.USRSXParams{
- Username: args[0],
- }
- params.Sites, _ = cmd.Flags().GetStringSlice("sites")
- params.Fuzzy, _ = cmd.Flags().GetBool("fuzzy")
- params.MaxTasks, _ = cmd.Flags().GetInt("max_tasks")
-
- err = c.CheckUsernameStream(params, func(result json.RawMessage) error {
- if IsJSONOutput() {
- fmt.Println(string(result))
- return nil
- }
-
- var siteResult models.SiteResult
- if err := json.Unmarshal(result, &siteResult); err != nil {
- return err
- }
-
- return formatter.FormatUsernameSiteResult(&siteResult)
- })
-
- if err != nil {
- return err
- }
-
- return nil
-}
-
-func runBSSIDLookup(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.NewUnauthenticated(cfg)
- if err != nil {
- return err
- }
-
- params := &models.BSSIDParams{
- BSSID: args[0],
- }
- params.All, _ = cmd.Flags().GetBool("all")
- params.Google, _ = cmd.Flags().GetBool("google")
- params.OSM, _ = cmd.Flags().GetBool("osm")
-
- response, err := c.LookupBSSID(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatBSSIDResults(*response, IsJSONOutput())
-}
-
-func runBreachForumSearch(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.NewUnauthenticated(cfg)
- if err != nil {
- return err
- }
-
- params := &models.BreachForumSearchParams{
- Search: args[0],
- }
- params.MaxHits, _ = cmd.Flags().GetInt("max_hits")
-
- response, err := c.SearchBreachForum(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatBreachForumResults(response, IsJSONOutput())
-}
-
-func runFilesSearch(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.NewUnauthenticated(cfg)
- if err != nil {
- return err
- }
-
- params := &models.OpenDirectorySearchParams{
- URL: args[0],
- }
- params.Filename, _ = cmd.Flags().GetString("filename")
- params.Extension, _ = cmd.Flags().GetString("extension")
- params.Exclude, _ = cmd.Flags().GetString("exclude")
- params.Size, _ = cmd.Flags().GetInt("size")
- params.From, _ = cmd.Flags().GetInt("from")
-
- response, err := c.SearchOpenDirectoryFiles(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatFilesResults(*response, IsJSONOutput())
-}
-
-func runBucketsSearch(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.New(cfg)
- if err != nil {
- return err
- }
-
- params := &models.BucketsSearchParams{}
- params.Limit, _ = cmd.Flags().GetInt("limit")
- params.Start, _ = cmd.Flags().GetInt("start")
-
- response, err := c.SearchBuckets(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatBucketsResults(response, IsJSONOutput())
-}
-
-func runBucketFilesSearch(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.New(cfg)
- if err != nil {
- return err
- }
-
- params := &models.BucketsFilesSearchParams{}
- params.Keywords, _ = cmd.Flags().GetString("keywords")
- params.Extensions, _ = cmd.Flags().GetString("extensions")
- params.Buckets, _ = cmd.Flags().GetString("buckets")
- params.Limit, _ = cmd.Flags().GetInt("limit")
- params.Start, _ = cmd.Flags().GetInt("start")
-
- response, err := c.SearchBucketFiles(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatBucketFilesResults(response, IsJSONOutput())
-}
-
-func runShortlinksSearch(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.New(cfg)
- if err != nil {
- return err
- }
-
- params := &models.ShortlinksSearchParams{}
- params.Keywords, _ = cmd.Flags().GetString("keywords")
- params.Ext, _ = cmd.Flags().GetString("ext")
- params.Order, _ = cmd.Flags().GetString("order")
- params.Direction, _ = cmd.Flags().GetString("direction")
- params.Regexp, _ = cmd.Flags().GetBool("regexp")
- params.Limit, _ = cmd.Flags().GetInt("limit")
- params.Start, _ = cmd.Flags().GetInt("start")
-
- response, err := c.SearchShortlinks(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatShortlinksResults(response, IsJSONOutput())
-}
-
-func runGeoSearch(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.New(cfg)
- if err != nil {
- return err
- }
-
- params := &models.GeoSearchParams{}
- params.Street, _ = cmd.Flags().GetString("street")
- params.City, _ = cmd.Flags().GetString("city")
- params.State, _ = cmd.Flags().GetString("state")
- params.Zip, _ = cmd.Flags().GetString("zip")
-
- response, err := c.SearchGeo(params)
- if err != nil {
- return err
- }
-
- return formatter.FormatGeoResults(*response, IsJSONOutput())
-}
-
-func runCrawl(cmd *cobra.Command, args []string) error {
- cfg := config.New()
-
- c, err := client.NewUnauthenticated(cfg)
- if err != nil {
- return err
- }
-
- err = c.CrawlDomain(args[0], func(line string) error {
- fmt.Println(line)
- return nil
- })
-
- if err != nil {
- return err
- }
-
- return nil
-}