Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Netcat

16/19
Recursos

Aportes 2

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para los que no sepan que es netcat, es una herramienta “simple” que nos sirve para hacer conexiones tcp o udp y enviar datos por las mismas, se puede enviar por ejemplo, una petición http (o si nos vamos a algo mas malvado, una reverse Shell).
Si quieren hacer una petición http solo tienen que levantar un server, y escribir las siguientes líneas en que programa que realizamos

GET / HTTP/1.0
Host: localhost

También se ocupa la linea vacía del final

package main

import (
	"flag"
	"fmt"
	"io"
	"net"
	"os"
)

var (
	port = flag.Int("p", 3090, "port to listen on")
	host = flag.String("h", "localhost", "host to listen on")
)

func main() {
	flag.Parse()

	// Listen on TCP port
	conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", *host, *port))
	if err != nil {
		panic(err)
	}

	fmt.Println("connected")
	done := make(chan struct{})

	// Start a goroutine to receive data from the server
	go func() {
		io.Copy(os.Stdout, conn)
		done <- struct{}{}
	}()

	// Copy what we got to the console line
	CopyContent(conn, os.Stdin)
	conn.Close()
	<-done

}

// CopyCOntent copies content from src to dst
func CopyContent(dst io.Writer, src io.Reader) {
	if _, err := io.Copy(dst, src); err != nil {
		fmt.Fprintf(os.Stderr, "io.Copy: %v\n", err)
		os.Exit(1)
	}
}