Merge pull request #17 from lunchcat/whois

feat: WHOIS support
This commit is contained in:
Matthieu Witrowiez
2024-02-04 15:15:16 +01:00
committed by GitHub
3 changed files with 42 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ type Settings struct {
Ports string
Dorking bool
Git bool
Whois bool
Threads int
Nuclei bool
Timeout time.Duration
@@ -58,6 +59,7 @@ func Parse() *Settings {
flagSet.BoolVar(&settings.Git, "git", false, "Enable git repository scanning"),
flagSet.BoolVar(&settings.Nuclei, "nuclei", false, "Enable scanning using nuclei templates"),
flagSet.BoolVar(&settings.NoScan, "noscan", false, "Do not perform base URL (robots.txt, etc) scanning"),
flagSet.BoolVar(&settings.Whois, "whois", false, "Enable WHOIS lookup"),
)
flagSet.CreateGroup("runtime", "Runtime",

36
pkg/scan/whois.go Normal file
View File

@@ -0,0 +1,36 @@
package scan
import (
"fmt"
"os"
"strings"
"github.com/charmbracelet/log"
"github.com/dropalldatabases/sif/internal/styles"
"github.com/dropalldatabases/sif/pkg/logger"
"github.com/likexian/whois"
)
func Whois(url string, logdir string) {
fmt.Println(styles.Separator.Render("💭 Starting " + styles.Status.Render("WHOIS Lookup") + "..."))
sanitizedURL := strings.Split(url, "://")[1]
if logdir != "" {
if err := logger.WriteHeader(sanitizedURL, logdir, " port scanning"); err != nil {
log.Errorf("Error creating log file: %v", err)
return
}
}
whoislog := log.NewWithOptions(os.Stderr, log.Options{
Prefix: "WHOIS 💭",
})
whoislog.Infof("Starting WHOIS")
result, err := whois.Whois(sanitizedURL)
if err == nil {
log.Info(result)
logger.Write(sanitizedURL, logdir, result)
}
}

4
sif.go
View File

@@ -102,6 +102,10 @@ func (app *App) Run() error {
scan.Ports(app.settings.Ports, url, app.settings.Timeout, app.settings.Threads, app.settings.LogDir)
}
if app.settings.Whois {
scan.Whois(url, app.settings.LogDir)
}
if app.settings.ApiMode {
utils.ReturnApiOutput()
}