Scan commands

Added 3 scan commands (internet, protocols and submit).
This commit is contained in:
perp 2023-08-02 04:58:30 +01:00
parent 70e45b270c
commit d3744a9dff
3 changed files with 117 additions and 0 deletions

View 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
}
}
}

View 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))
}
}

View 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
}
}
}