From cb81eafe74d89b323d1541570c79760f4d4e0959 Mon Sep 17 00:00:00 2001 From: jbergner Date: Thu, 26 Jun 2025 21:00:56 +0200 Subject: [PATCH] Try Dualstack Update --- main.go | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 8672402..cd5754f 100644 --- a/main.go +++ b/main.go @@ -72,12 +72,15 @@ func main() { portsTCP := []string{"135", "139", "445", "389", "636", "3268", "3269", "88", "3389", "3306", "27017", "5432", "25", "123", "5900", "143", "993", "1723", "21"} for _, port := range portsTCP { - go startTCPListener(port) + //go startTCPListener(port) + go startTCPListenerWithNet("tcp4", port) + go startTCPListenerWithNet("tcp6", port) } portsUDP := []string{"135", "137", "138", "389", "3389", "88"} for _, port := range portsUDP { - go startUDPListener(port) + go startUDPListener("udp4", port) + go startUDPListener("udp6", port) } http.HandleFunc("/", handleRoot) @@ -92,7 +95,7 @@ func main() { } } -func startTCPListener(port string) { +/*func startTCPListener(port string) { ln, err := net.Listen("tcp", ":"+port) if err != nil { log.Fatalf("❌ Could not listen on TCP port %s: %v", port, err) @@ -108,9 +111,51 @@ func startTCPListener(port string) { processIP(ip, port, "TCP", nil) conn.Close() } +}*/ + +func startTCPListenerWithNet(network, port string) { + ln, err := net.Listen(network, ":"+port) + if err != nil { + log.Fatalf("❌ Could not listen on %s port %s: %v", network, port, err) + } + log.Printf("🚀 TCP Honeypot listening on %s port %s", network, port) + for { + conn, err := ln.Accept() + if err != nil { + log.Printf("⚠️ Error accepting TCP connection: %v", err) + continue + } + ip, _, _ := net.SplitHostPort(conn.RemoteAddr().String()) + processIP(ip, port, "TCP", nil) + conn.Close() + } } -func startUDPListener(port string) { +func startUDPListener(network, port string) { + addr := net.UDPAddr{ + Port: portInt(port), + IP: nil, // nil bedeutet: alle Interfaces (IPv4 oder IPv6 je nach Netzwerktyp) + } + conn, err := net.ListenUDP(network, &addr) + if err != nil { + log.Fatalf("❌ Could not listen on %s port %s: %v", network, port, err) + } + log.Printf("🚀 UDP Honeypot listening on %s port %s", network, port) + buf := make([]byte, 1024) + for { + n, remoteAddr, err := conn.ReadFromUDP(buf) + if err != nil { + log.Printf("⚠️ Error reading UDP packet: %v", err) + continue + } + if n > 0 { + ip := remoteAddr.IP.String() + processIP(ip, port, "UDP", nil) + } + } +} + +/*func startUDPListener(port string) { addr := net.UDPAddr{ Port: portInt(port), IP: net.ParseIP("0.0.0.0"), @@ -134,6 +179,30 @@ func startUDPListener(port string) { } } +func startUDP6Listener(port string) { + addr := net.UDPAddr{ + Port: portInt(port), + IP: net.ParseIP("::"), + } + conn, err := net.ListenUDP("udp", &addr) + if err != nil { + log.Fatalf("❌ Could not listen on UDP port %s: %v", port, err) + } + log.Printf("🚀 UDP Honeypod listening on port %s", port) + buf := make([]byte, 1024) + for { + n, remoteAddr, err := conn.ReadFromUDP(buf) + if err != nil { + log.Printf("⚠️ Error reading UDP packet: %v", err) + continue + } + if n > 0 { + ip := remoteAddr.IP.String() + processIP(ip, port, "UDP", nil) + } + } +}*/ + func handleRoot(w http.ResponseWriter, r *http.Request) { ip := getClientIP(r) if ip == "" {