package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "math/rand" "net" "time" ) // isPrivate checks if the IP address falls within private IP ranges func isPrivate(ip [4]byte) bool { switch { case ip[0] == 10: return true case ip[0] == 172 && ip[1] >= 16 && ip[1] <= 31: return true case ip[0] == 192 && ip[1] == 168: return true default: return false } } var triedIPs []net.IP // generateRandomPublicIP generates a random public IP address func generateRandomPublicIP() net.IP { rand.NewSource(time.Now().UnixNano()) var ipTemp [4]byte var ip net.IP for { ipTemp[0] = byte(rand.Intn(255)) + 1 ipTemp[1] = byte(rand.Intn(256)) ipTemp[2] = byte(rand.Intn(256)) ipTemp[3] = byte(rand.Intn(256)) ip = net.IPv4(ipTemp[0], ipTemp[1], ipTemp[2], ipTemp[3]) // Ensure the generated IP is not in a private range if !ip.IsPrivate() && !ip.IsLoopback() { // Exclude 0.x.x.x and 127.x.x.x (loopback) dupe := false for _, ipTried := range triedIPs { if ipTried.Equal(ip) { dupe = true } } if !dupe { break } } } return ip } func doIPScan() { randomIP := generateRandomPublicIP() _, err := PingIP(randomIP, 25565, "") if err != nil { fmt.Println(err) } } func main() { for i := 0; i < 100000000; i++ { go doIPScan() time.Sleep(time.Duration(rand.Intn(10)) * time.Millisecond) } }