✨ Scan commands
Added 3 scan commands (internet, protocols and submit).
This commit is contained in:
parent
70e45b270c
commit
d3744a9dff
42
internal/shodan/scan/internet.go
Normal file
42
internal/shodan/scan/internet.go
Normal file
@ -0,0 +1,42 @@
|
||||
package scan
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"git.tcp.direct/perp/shogo/internal/utils"
|
||||
)
|
||||
|
||||
// Submit an internet scan
|
||||
func Internet(port int, protocol string) {
|
||||
// Get results
|
||||
results, err := utils.Client.ScanInternet(context.Background(), port, protocol)
|
||||
if err != nil {
|
||||
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Print results
|
||||
utils.Title.Printf("Scanning internet for %d %s\n", port, protocol)
|
||||
|
||||
fmt.Printf("%s: %s\n", utils.Green("ID"), utils.Blue(results))
|
||||
|
||||
for {
|
||||
time.Sleep(time.Second * 3)
|
||||
|
||||
// Get results
|
||||
results, err := utils.Client.GetScanStatus(context.Background(), results)
|
||||
if err != nil {
|
||||
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Get status
|
||||
switch results.Status {
|
||||
case "DONE":
|
||||
fmt.Printf("%s: %s\n", utils.Blue("Status"), utils.Green(results.Status))
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
25
internal/shodan/scan/protocols.go
Normal file
25
internal/shodan/scan/protocols.go
Normal file
@ -0,0 +1,25 @@
|
||||
package scan
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"git.tcp.direct/perp/shogo/internal/utils"
|
||||
)
|
||||
|
||||
// Return protocols to scan
|
||||
func Protocols() {
|
||||
// Get results
|
||||
results, err := utils.Client.GetProtocols(context.Background())
|
||||
if err != nil {
|
||||
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Print results
|
||||
utils.Title.Println("Protocols")
|
||||
|
||||
for key, value := range results {
|
||||
fmt.Printf("%-36s %s\n", utils.Green(key), utils.Blue(value))
|
||||
}
|
||||
}
|
50
internal/shodan/scan/submit.go
Normal file
50
internal/shodan/scan/submit.go
Normal file
@ -0,0 +1,50 @@
|
||||
package scan
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"git.tcp.direct/perp/shogo/internal/utils"
|
||||
)
|
||||
|
||||
// Submit a scan
|
||||
func Submit(ips []string) {
|
||||
// Get results
|
||||
results, err := utils.Client.Scan(context.Background(), ips)
|
||||
if err != nil {
|
||||
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Print results
|
||||
utils.Title.Printf("Starting scan for %s\n", ips)
|
||||
|
||||
fmt.Printf(
|
||||
"%s: %s\n%s: %s\n%s: %s\n",
|
||||
utils.Green("ID"),
|
||||
utils.Blue(results.ID),
|
||||
utils.Blue("Count"),
|
||||
utils.Green(results.Count),
|
||||
utils.Green("Credits left"),
|
||||
utils.Blue(results.CreditsLeft),
|
||||
)
|
||||
|
||||
for {
|
||||
time.Sleep(time.Second * 3)
|
||||
|
||||
// Get results
|
||||
results, err := utils.Client.GetScanStatus(context.Background(), results.ID)
|
||||
if err != nil {
|
||||
fmt.Printf("%s: %s\n", utils.Red("Error"), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Get status
|
||||
switch results.Status {
|
||||
case "DONE":
|
||||
fmt.Printf("%s: %s\n", utils.Blue("Status"), utils.Green(results.Status))
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user