elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  AYUDA con Python 3
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA con Python 3  (Leído 1,622 veces)
Aguijon_zerO

Desconectado Desconectado

Mensajes: 25


Jod@nse---


Ver Perfil
AYUDA con Python 3
« 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  :-[





« Última modificación: 27 Junio 2018, 00:04 am por Pregunton7 » En línea

HACKING / CiberSecurity:
 https://seguridadaguijon.blogspot.com/
Avispon99

Desconectado Desconectado

Mensajes: 82



Ver Perfil WWW
Re: AYUDA con Python 3
« Respuesta #1 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




« Última modificación: 27 Junio 2018, 05:48 am por Avispon99 » En línea

Aguijon_zerO

Desconectado Desconectado

Mensajes: 25


Jod@nse---


Ver Perfil
Re: AYUDA con Python 3
« Respuesta #2 en: 4 Agosto 2018, 02:34 am »

Si funciona. :D   Con "cp850" se arreglo.
En línea

HACKING / CiberSecurity:
 https://seguridadaguijon.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines