act
This commit is contained in:
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user