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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Python, duda sobre procesos, persistencia y ese tipo de cosas...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Python, duda sobre procesos, persistencia y ese tipo de cosas...  (Leído 2,075 veces)
#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Python, duda sobre procesos, persistencia y ese tipo de cosas...
« en: 10 Diciembre 2017, 04:49 am »

A raíz de hacer tonterias y divertirme con la programación se me ocurrió hacer un programa que generase una key aleatoria y la mandase por e-mail, y si esta no se introducia en menos de X tiempo, apagar el ordenador, la finalidad era saber si entraban a la particion de la tarde gente de por la mañana. El script basta con meterlo en la carpeta dónde windows inicia los programas por defecto al encender el ordenador.

La cosa es, que es tan sencillo como matar el proceso para no lidiar con el programa.

Había pensado sobre un segundo proceso que estuviese pendiente de si el primero lo cerraban, o mataban el proceso, pero pensandolo bien si matan uno muy probablemente matasen el otro. ¿Alguna idea?

Se me ocurren chapuzas como que esté matando siempre el proceso del administrador de tareas, pero podrían matar los procesos mediante la consola, lo cuál también podría matar al cmd... - que sangriento suena todo esto -

Gracias de antemano!


En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Python, duda sobre procesos, persistencia y ese tipo de cosas...
« Respuesta #1 en: 20 Diciembre 2017, 14:37 pm »

La cosa es, que es tan sencillo como matar el proceso para no lidiar con el programa.

Había pensado sobre un segundo proceso que estuviese pendiente de si el primero lo cerraban, o mataban el proceso, pero pensandolo bien si matan uno muy probablemente matasen el otro. ¿Alguna idea?

Se me ocurren chapuzas como que esté matando siempre el proceso del administrador de tareas, pero podrían matar los procesos mediante la consola, lo cuál también podría matar al cmd... - que sangriento suena todo esto -

No te comas mucho el coco, en principio es algo mucho mas sencillo de resolver de lo que parece (más abajo se entenderá por que digo "en principio"). Para prevenir todos los males solamente necesitas modificar el modo del proceso a modo crítico, es decir, convertirlo en un proceso crítico (el cual, si se mata, se mostrará un BSOD y el usuario tendría que reiniciar el equipo...)

Eso sí, hacer esto en Python... vamos a ver, estamos hablando de un script, no un executable, así que a menos que establezcas el executable del intérprete (py.exe) como proceso crítico, o estés usando algun framework para el diseño de interfaces de usuario que compile un executable (tu programa)... pues de lo contrario no podrás llevar a cabo esta metodología en dicho lenguaje.

En fin, te explico más en profundidad, para volver un proceso a modo crítico en Windows, primero debes establecer el privilegio de proceso SE_DEBUG_NAME ("SeDebugPrivilege") en tu proceso, para ello deberás lidiar con las siguientes funciones nativas de Windows: OpenProcessToken, CloseHandle, LookupPrivilegeValue y AdjustTokenPrivileges y las estructuras LUID_AND_ATTRIBUTES y TOKEN_PRIVILEGES, y entonces podrás llamar a la función nativa (e indocumentada) de Windows RtlSetProcessIsCritical para volver el proceso crítico.

Aquí te dejo toda la documentación necesaria:

¿Y como implementar todo esto en Python?, pues si te digo la verdad... no tengo ni p**a idea, nunca lo he necesitado hacer ni me interesa Python, pero se que hay algunas librerías gratuitas para Python que te permiten invocar miembros de la API de Windows, como por ejemplo PyWin32, ese podría ser el camino a seguir por donde empezar a documentarse y probar...


...en C++ sería coser y cantar (acceso directo a las funciones y estructuras nativas de la API de Windows), en lenguajes como C# y VB.NET se puede implementar y hacerlo todo en 10 minutejos (servicio de invocación de plataforma más conocido como P/Invoking para el acceso a funciones y estructuras nativas de la API de Windows), pero en Python la verdad es que no se ni tan siquiera si se podrá, pero supongo que algún modo habrá si existe soporte para exponer el uso de funciones nativas del S.O. mediante algún módulo/libreria... o puede que no.

Había pensado sobre un segundo proceso que estuviese pendiente de si el primero lo cerraban, o mataban el proceso, pero pensandolo bien si matan uno muy probablemente matasen el otro.

A menos que tengas mucho tiempo libre con ganas de aprender cosas nuevas documentándote y no te importe sufrir una estresante y larga etapa de ensayo y error, lo que yo haría en tu lugar sería desarrollar un segundo executable, pero en C++, C# o VB.NET y solamente para que cumpliese la función de volver el proceso a modo crítico por los motivos que he dicho (por que es facil de hacer en esos lenguajes), esa sería su única funcionalidad del programa, y el resto ya con tu executable generado con Python. Pienso que eso sería mucho más viable que (intentar) hacerlo directamente en Python... a menos que ya tengas algo de experiencia en estos temas de llamadas a miembros Win32 desde Python, claro está.



Una alternativa a esto, sería desarrollar un servicio de Windows que trabajase en segundo plano para monitorizar la "existencia" del proceso en cuestión. Seguiría habiendo peligro de que el usuario cierre el programa, pero no el servicio, bueno, en realidad si, pero no sería un problema ya que puedes crear un servicio de sistema que se reinicie automáticamente en caso de cierre y no se pueda deshabilitar/detener de forma natural. Sin embargo, tampoco sé como se haría esto en Python.

Saludos.


« Última modificación: 20 Diciembre 2017, 15:16 pm por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Listar procesos y realizar cosas con los procesos
Programación Visual Basic
sebas369 2 3,188 Último mensaje 14 Julio 2006, 16:08 pm
por sebas369
duda sobre procesos
Programación Visual Basic
Anteros 1 1,225 Último mensaje 28 Abril 2007, 01:36 am
por vivachapas
Duda sobre algunos procesos
Seguridad
Fierce 5 3,082 Último mensaje 19 Julio 2011, 21:20 pm
por .:UND3R:.
Hola una duda sobre los procesos y los exe
Programación Visual Basic
ricardovinzo 8 2,444 Último mensaje 17 Octubre 2008, 16:28 pm
por ~~
Duda sobre procesos
Programación C/C++
michelmarques 3 2,120 Último mensaje 1 Diciembre 2012, 21:16 pm
por naderST
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines