|
@@ -1,9 +1,10 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
+ "flag"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
- "os"
|
|
|
+ "strings"
|
|
|
"sync"
|
|
|
|
|
|
kyoketsu "git.aetherial.dev/aeth/kyoketsu/pkg"
|
|
@@ -13,28 +14,55 @@ func main() {
|
|
|
// kyoketsu.PingWithDependency(os.Args[1])
|
|
|
// os.Exit(1)
|
|
|
|
|
|
- if len(os.Args) == 1 {
|
|
|
- log.Fatal("Please pass in the name of an interface that belongs to the network to scan.")
|
|
|
- }
|
|
|
- addr, err := kyoketsu.GetAllAddresses(os.Args[1])
|
|
|
- if err != nil {
|
|
|
- log.Fatal(err)
|
|
|
- }
|
|
|
- var wg sync.WaitGroup
|
|
|
- for i := range addr.Addr {
|
|
|
- wg.Add(1)
|
|
|
- go func(idx int, wg *sync.WaitGroup) {
|
|
|
+ local := flag.Bool("local", true, "set flag to false to run this in targeted remote mode")
|
|
|
+ remoteAddrs := flag.String("ips", "", "comma seperated list of ip addresses to gather info about")
|
|
|
+ iface := flag.String("iface", "eth0", "use this flag to specify the interface to autonomously use for scanning.")
|
|
|
+ flag.Parse()
|
|
|
|
|
|
- out := kyoketsu.PortWalk(addr.Addr[idx].String(), kyoketsu.PORT_MAP)
|
|
|
- if len(out.ListeningPorts) > 0 {
|
|
|
- fmt.Printf("%+v\n", out)
|
|
|
+ if !*local {
|
|
|
+ spAddr := strings.Split(*remoteAddrs, ",")
|
|
|
+ addr, err := kyoketsu.GetAllRemoteAddresses(spAddr)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ var wg sync.WaitGroup
|
|
|
+ for i := range addr.Addr {
|
|
|
+ wg.Add(1)
|
|
|
+ go func(idx int, wg *sync.WaitGroup) {
|
|
|
|
|
|
- }
|
|
|
+ out := kyoketsu.PortWalk(addr.Addr[idx].String(), kyoketsu.PORT_MAP)
|
|
|
+ if len(out.ListeningPorts) > 0 {
|
|
|
+ fmt.Printf("%+v\n", out)
|
|
|
|
|
|
- wg.Done()
|
|
|
- }(i, &wg)
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ wg.Done()
|
|
|
+ }(i, &wg)
|
|
|
+ }
|
|
|
+
|
|
|
+ wg.Wait()
|
|
|
|
|
|
- wg.Wait()
|
|
|
+ } else {
|
|
|
+ addr, err := kyoketsu.GetAllAddresses(*iface)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ var wg sync.WaitGroup
|
|
|
+ for i := range addr.Addr {
|
|
|
+ wg.Add(1)
|
|
|
+ go func(idx int, wg *sync.WaitGroup) {
|
|
|
|
|
|
+ out := kyoketsu.PortWalk(addr.Addr[idx].String(), kyoketsu.PORT_MAP)
|
|
|
+ if len(out.ListeningPorts) > 0 {
|
|
|
+ fmt.Printf("%+v\n", out)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ wg.Done()
|
|
|
+ }(i, &wg)
|
|
|
+ }
|
|
|
+
|
|
|
+ wg.Wait()
|
|
|
+
|
|
|
+ }
|
|
|
}
|