Advertisement
smirnov

scanner.go

Apr 10th, 2024
861
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.36 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bytes"
  5.     "net"
  6.     "os"
  7.     "os/exec"
  8.     "time"
  9. )
  10.  
  11. var filter = []byte("statusResponse")
  12.  
  13. func masscan() {
  14.     path, err := exec.LookPath("masscan")
  15.     if err != nil {
  16.         panic(err)
  17.     }
  18.  
  19.     time.Sleep(time.Duration(5 * time.Second))
  20.  
  21.     // $ sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/masscan
  22.     // $ cat payload.txt
  23.     // udp 28000-30000 "\xff\xff\xff\xffgetstatus"
  24.     cmd := exec.Command(path, "-iL", "subnets.txt", "--ports", "U:28000-30000", "--source-port", "29070", "--max-rate", "1000000", "--nmap-payloads", "payload.txt", "--ttl", "130")
  25.     if err := cmd.Run(); err != nil {
  26.         panic(err)
  27.     }
  28.  
  29.     os.Exit(0)
  30. }
  31.  
  32. func handler(listener net.PacketConn, addr net.Addr, buffer []byte) {
  33.     if bytes.Equal(buffer[4:18], filter) {
  34.         players := bytes.Split(buffer, []byte("\n"))
  35.         if len(players) >= 4 {
  36.             println("[", addr.String(), "]")
  37.             for _, v := range players[2 : len(players)-1] {
  38.                 pos := bytes.IndexRune(v, '"')
  39.                 println(string(v[pos:]))
  40.             }
  41.         } else {
  42.             println(addr.String(), "server is empty")
  43.         }
  44.     }
  45. }
  46.  
  47. func main() {
  48.     listener, err := net.ListenPacket("udp4", "0.0.0.0:29070")
  49.     if err != nil {
  50.         panic(err)
  51.     }
  52.     defer listener.Close()
  53.  
  54.     go masscan()
  55.  
  56.     for {
  57.         buffer := make([]byte, 2048)
  58.         n, addr, err := listener.ReadFrom(buffer)
  59.         if err != nil {
  60.             continue
  61.         }
  62.         go handler(listener, addr, buffer[:n])
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement