This commit is contained in:
kar
2025-09-13 18:25:59 -06:00
parent 421a9b247b
commit ae7884c24a
4 changed files with 152 additions and 8 deletions
+78
View File
@@ -0,0 +1,78 @@
package main
import (
"fmt"
"net"
"log"
"os"
"strings"
)
type remoteAddr struct {
addr string
}
// meotodo constructor
func SetAddr() *remoteAddr {
return &remoteAddr {
addr: "0.0.0.0:4444",
}
}
func (ra remoteAddr) bindPort() {
listener, err := net.Listen("tcp", ra.addr)
if err != nil {
log.Println(err)
}
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
log.Println(err)
}
fmt.Println("Conexion recibida de", conn.RemoteAddr())
fmt.Println("Desea seguir con la conexion de", conn.RemoteAddr())
var respuesta string
fmt.Scan(&respuesta)
if respuesta != "y" {
conn.Close()
}
go handleConnection(conn)
}
//go handleConnection(conn)
}
func handleConnection(conn net.Conn) {
defer conn.Close()
if os.Args[1] == "shell" {
//getShell(conn)
return
} else {
sendCommand(conn)
}
}
func sendCommand(conn net.Conn){
defer conn.Close()
comando := os.Args[1:] // el comando completo son los argumentos que establecemos
comandoUnido := strings.Join(comando, " ") // Juntamos los argumentos como un solo string
_, err := conn.Write([]byte(comandoUnido))
if err != nil {
log.Println(err)
}
//conn.(*net.TCPconn).CloseWrite()
conn.(*net.TCPConn).CloseWrite()
buf := make([]byte, 4096)
n, err := conn.Read(buf)
mensaje := string(buf[:n])
fmt.Println("Respuesta de", conn.RemoteAddr())
fmt.Println(mensaje)
}
func main() {
myAddr := SetAddr()
myAddr.bindPort()
}