José C. García Gamero

Crasheando Linux a golpe de ratón

Posted on

En todos los sistemas operativos, el conjunto de procesos que iniciamos no se ejecutan a la misma vez. Se ejecutan de manera alterna y con una gran rapidez. Dependiendo el número de núcleos y el algoritmo que utilice el sistema operativo para la gestión de los procesos, si podrían llegar a ejecutarse, pero para hacer esta prueba, vamos a comenzar pensando en un único núcleo.

No todos los sistemas operativos funcionan de la misma manera, pero sí hay algo que tienen en común, hablo de los que tienen interfaz gráfica, el proceso por el cual el ratón lo podemos mover, es prioritario. Es decir, si queremos mover el ratón, este manda una señal al microprocesador que, a su vez, ejecuta el proceso de manera prioritaria. Es evidente que, teniendo en cuenta que el ratón lo mueve una persona humana, esta sería incapaz de crashear el sistema operativo moviéndolo, por lo que al parecer, no tiene ningún mecanismo que, dependiendo de ciertos aspectos como puede ser la rapidez con la que mueves el ratón, o el número de instrucciones que le das al microprocesador con este dispositivo, el microprocesador saque fuera ese proceso. Aprovechándome de esto, y de que existe una librería en python que te permite hacer movimientos con el ratón, he creado un par de script, uno en python y otro en bash para Linux, que nos va a permitir crashear el sistema operativo.

La prueba ha sido realizada con Linux Mint de 32bits, en una máquina virtual con un único núcleo y con 2GB de Ram.

 

 

Como podéis ver en la imagen, antes de ejecutar el script, el microprocesador rondaba el 3{4204b44b48da0dd34cf6cfb0e5281c1ba3a18dae9812c2d17433a540306da057}.

Tras ejecutar el script, como podéis comprobar está ejecutándose en segundo plano, el uso de CPU, en apenas 2 segundos, alcanzó el 100{4204b44b48da0dd34cf6cfb0e5281c1ba3a18dae9812c2d17433a540306da057}. ¿Cómo he hecho los script?. Pues de la siguiente manera:

En primer lugar he buscado una librería que permitiera hacer esto en Python y, buscando por Internet, encontré este post de Ernesto Crespo, que explica muy bien como instalarla y da algunos ejemplos de script para realizar. De hecho, he utilizado uno de ellos para hacer esta prueba.

Este el script escrito en python:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#Se importa la libreria pyautogui
import pyautogui

#Se genera un ciclo de 10 veces
for i in range(20):
#Se mueve a la coordenada (100,100)
pyautogui.moveTo(100,100,duration=0.05)
#Se mueve a la coordenada (200,100)
pyautogui.moveTo(300,100,duration=0.05)
#Se mueve a la coordenada (200,200)
pyautogui.moveTo(300,300,duration=0.05)
#Se mueve a la coordenada (100;200)
pyautogui.moveTo(100,300,duration=0.05)
#Se mueve a la coordenada (100,100)
pyautogui.moveTo(100,100,duration=0.05)
#Se mueve a la coordenada (200,100)
pyautogui.moveTo(300,100,duration=0.05)
#Se mueve a la coordenada (200,200)
pyautogui.moveTo(300,300,duration=0.05)
#Se mueve a la coordenada (100;200)
pyautogui.moveTo(100,300,duration=0.05)
#Se mueve a la coordenada (100,100)
pyautogui.moveTo(100,100,duration=0.05)
#Se mueve a la coordenada (200,100)
pyautogui.moveTo(300,100,duration=0.05)
#Se mueve a la coordenada (200,200)
pyautogui.moveTo(300,300,duration=0.05)
#Se mueve a la coordenada (100;200)
pyautogui.moveTo(100,300,duration=0.05)
#Se mueve a la coordenada (100,100)
pyautogui.moveTo(100,100,duration=0.05)
#Se mueve a la coordenada (200,100)
pyautogui.moveTo(300,100,duration=0.05)
#Se mueve a la coordenada (200,200)
pyautogui.moveTo(300,300,duration=0.05)
#Se mueve a la coordenada (100;200)
pyautogui.moveTo(100,300,duration=0.05)

Lo único que hace es mover el cursor a las coordenadas que nosotros le demos, con la duración que nosotros le demos.

En segundo lugar, creé un script en bash para ejecutar el script de arriba en segundo plano y de manera reiterada:

#!/bin/bash

python prueba.py & y lo copié 180 veces. Después le di permisos de ejecución y listo.

¿Esto sirve para algo?. Pues depende de la imaginación que podáis llegar a tener.

 

Deja un comentario

Your email address will not be published.*
*
*

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies