Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Aguijon_zerO en 26 Junio 2018, 23:58 pm



Título: AYUDA con Python 3
Publicado por: Aguijon_zerO en 26 Junio 2018, 23:58 pm
Tengo que enviar la salida de un comando "ipconfig" utilizando un socket con el método check_output del modulo subprocess. Este proceso solía ser fácil en la versión Python 2.7 pero en Python 3 todo es más complicado y me muestra un UnicodeDecodeError.

Este es el código que envía los bytes:

Código:
import socket
import subprocess

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("localhost",7500))

m = subprocess.check_output('ipconfig')
client.send(m)

Por supuesto, no es necesario convertirlo a bytes para enviarlo porque la salida de check_output ya entrega valores en formato de bytes.

Hasta hay todo bien, Pero el problema ocurre en el siguiente codigo que recibe los datos ya que no me permite decodificarlo.

El código que recibe los datos es el siguiente:

Código:
import socket

serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(("localhost",7500))
serv.listen(1)

conex,direccion = serv.accept()
a = conex.recv(4096)
print(a.decode('utf-8'))

Cuando ejecuto este codigo me muestra el siguiente error: en la ultima linea, en la que dice "print(a.decode('utf-8'))" , El error que me sale es el siguiente:

Código:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa2 in position 13: invalid start byte

Alguien me podría ayudar, llevo muy poco tiempo usando Python 3 y no se que hacer  :-[





Título: Re: AYUDA con Python 3
Publicado por: Avispon99 en 27 Junio 2018, 00:39 am
Resolviendo...

Código:
import socket

serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(("localhost",7500))
serv.listen(1)

conex,direccion = serv.accept()
a = conex.recv(4096)
print(a.decode('utf-8', 'surrogateescape'))

Eso es todo.. agregar ['surrogateescape'] para eliminar los caracteres de escape que interfieren con la decodificación de los bytes, otra opción es decodificando con la pagina de codigos (var.decode("cp850"), por ejemplo) para manejo de ciertos caracteres molestos.. 

Problema resuelto, Tema Cerrado.  :v




Título: Re: AYUDA con Python 3
Publicado por: Aguijon_zerO en 4 Agosto 2018, 02:34 am
Si funciona. :D   Con "cp850" se arreglo.