minerecon/main.go
2024-09-12 19:55:47 +02:00

70 lines
1.3 KiB
Go

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