Productos y Servicios PRODUCTOS Y SERVICIOS

¿Se puede hacer explotar un altavoz de PC usando solo un controlador de kernel de Linux?

No solemos publicar peticiones de programación, especialmente cuando el código que buscamos es peligroso y destructivo.

Pero esta vez estamos preparados para hacer una excepción dado que este tema se encuentra en su decimoquinto año consecutivo.

Nos llamó la atención sobre el problema un tuit del conocido investigador de ciberseguridad de Google, Tavis Ormandy, quien tuiteó:

Con solo una excepción que yo sepa (un correo electrónico que apareció en julio de 2008), la misma persona envió un correo electrónico a la Lista de correo del kernel de Linux (LKML) en algún momento del mes de junio, desde 2007, para hacer la misma pregunta.

Cada año durante 15 años seguidos, incluido 2021, el misterioso R.F. Burns (sí, creemos que también es un juego de palabras) ha querido saber:

  
De: "R.F. Burns"

Para: linux-kernel@vger.kernel.org

Asunto: altavoz de PC

Fecha: lun, 14 de junio de 2021 23:32:32 -0400

 

¿Es posible escribir un módulo del kernel que, cuando esté cargado, podría hacer explotar el altavoz del PC?

A pesar de muchas respuestas útiles y no tan útiles cada año, el misterioso interrogador todavía no parece haber descubierto la respuesta.

Un intercambio irónico cuando se publico la pregunta explica la razón del potencial cibervandalismo de la siguiente manera:

Estoy ayudando a un sistema escolar pequeño con una serie de estaciones de trabajo Linux. Anteriormente, los estudiantes (escuelas intermedias y secundarias) abusaron de las tarjetas de sonido. Esto se solucionó cambiando los permisos en los dispositivos de sonido para que se les negara el acceso a los usuarios no root  (algo que se puede hacer fácilmente de forma remota y automática.)

En ese momento, los estudiantes comenzaron a encontrar formas creativas de abusar del altavoz del PC, que se volvió bastante molesto. Descargamos y deshabilitamos el módulo del kernel del altavoz de la PC, que solucionó la situación por un tiempo.

Entonces, surgió la idea de ver si había una manera de explotar el altavoz del PC cargando un módulo del kernel. Si es así, un despliegue masivo de un módulo del kernel de la noche a la mañana se ocuparía del problema del altavoz del PC una vez y para todos.

¿Es lo mismo un altavoz de PC que un altavoz de portátil?

Irónicamente, los ordenadores portátiles modernos ya no tienen altavoces para PC.

Claro, tienen altavoces incorporados, pero están conectados a la tarjeta de sonido que también está incorporada, por lo que simplemente brindan una versión de baja calidad de la misma salida de sonido que oirías si conectaras los auriculares.

Pero esos son solo altavoces, no específicamente un altavoz de PC, que no estaba conectado a un circuito de sonido en absoluto.

El altavoz original del PC, solo fue diseñado para ser utilizado para emitir pitidos que le avisen de algún tipo de error, especialmente durante el inicio, cuando es posible que la pantalla no esté funcionando y no pueda ver ningún mensaje de error que pueda haberse mostrado. .

En el pasado, la mayoría de los componentes de la PC funcionaban a 5 voltios CC, y el altavoz no era diferente: estaba conectado a una fuente de 5 V en su terminal positivo y conectado a tierra (a tierra) en el otro.

El cable de entrada de 5 V se puede encender y apagar a través de un bit no utilizado en el controlador del teclado (bit 1 del puerto 0x61, en caso de que desees intentar escribir tu propio código de altavoz de PC).

Si se escribe un valor de 1 en el bit de control del altavoz, el imán del altavoz se activará y el altavoz saltará a su posición “energizado”.

Si se vuelve a poner el bit en cero y el cono del altavoz volverá a su posición “silenciosa”.

Activa y desactiva ese bit mágico a una frecuencia adecuada y efectivamente crearás una onda cuadrada de tono y volumen constantes.

Varía la frecuencia de vez en cuando, y podrías variar el tono para tocar melodías rudimentarias, y cuando decimos rudimentarias, lo decimos en serio.

Atacar altavoces del PC para hablar

Pero lo rudimentario no era lo suficientemente bueno para los ciberatacantes de juegos.

Además de controlar el altavoz directamente a través de lo que se conoce como bit-banging (donde se programa directamente un cable de control escribiendo un flujo temporizado de 1 y 0 en él), también se puede conectar el cable de voltaje del altavoz hasta el temporizador de intervalo programable del PC (PIT).

Luego, se podría variar el tono del sonido que salió reprogramando el PIT de vez en cuando, lo que significa que se tiene un control más preciso de la frecuencia del altavoz y no se necesita tener un código ejecutándose en un bucle cerrado solo para generar los cambios de bits necesarios para una nota específica.

En cambio, se podría dedicar la poca potencia de CPU que se tenga a disposición para ajustar el PIT continuamente para conducir el altavoz a frecuencias variables, incluidas las más rápidas de lo que realmente se podría manejar, dado que los altavoces de PC eran pequeños y diminutos y solo podían reproducir una frecuencia de banda pequeña.

En lugar de producir una frecuencia muy alta a un volumen constante, las limitaciones electromecánicas del altavoz, básicamente, su inercia o el retraso en comenzar a moverse cuando se energiza, significaban que no se tendría tiempo para describir una onda cuadrada completa en absoluto.

De esta manera, se podría producir sonidos controlados a un volumen más bajo de lo normal, por lo que podría simular una tarjeta de sonido que admita, digamos, 6 bits (64 niveles de sonido diferentes) o incluso 8 bits (256 niveles diferentes), en lugar de tener un altavoz que solo puede reproducir sonido de 1 bit (reproducir a todo volumen o en silencio total).

Con este método, una forma burda de modulación de ancho de pulso, los primeros juegos de PC lograron resultados asombrosos sin tarjetas de sonido.

Muchos juegos de la era de DOS no solo podían reproducir música que sonaba mucho mejor que la mera secuencia de pitidos de onda cuadrada que el altavoz estaba diseñado para producir, sino que incluso podían reproducir el habla humana, aunque a menudo era difícil de entender o sonaba como si el narrador tenía un acento nasal realmente extraño.

¿Qué hacer?

Entonces, ¿se podría realmente explotar un altavoz de PC si se tuviera el tipo de control preciso sobre él que se obtendría a nivel de kernel de Linux?

Como se sigue preguntando nuestro legendario interrogador, ¿se podría explotar un altavoz de PC con un controlador de kernel?

El volumen por sí solo no lo va a conseguir. Se supone que el altavoz de la PC debe funcionar a un volumen constante, basado en ese cable de entrada de encendido o apagado de 5 V, por lo que está diseñado para funcionar en un estado “subido a 10” todo el tiempo.

No hay forma de convertir esa entrada de 5 V a 5,5 V, que sería el mismo porcentaje de aumento que subirla de 10 a 11, y hacer sonar el altavoz de esa manera.

Se puede engañar al altavoz para que funcione a un volumen más bajo de lo que cree y, por lo tanto, producir una salida de sonido mejor bajándolo de manera efectiva por debajo de 10, pero no se puede subirlo por encima de 10.

Se podría intentar engañar al altavoz haciéndolo pasar a través de una cascada de frecuencias cuidadosamente construida que pondría a prueba su resistencia física, excepto que el altavoz de la PC casi con certeza no es lo suficientemente bueno para notar, y mucho menos para reproducir de manera suficientemente confiable, el complejo y caótico movimiento físico que tenías en mente.

Una respuesta irónica pero útil a R.F. Burns (ahora estamos seguros de que el nombre es parte de la broma), en el primer año de la pregunta, sugirió que podría ser posible encontrar una frecuencia específica para cada altavoz en la que causara resonancia, y por lo tanto que se hiciera pedazos.

La resonancia es el tipo de interferencia constructiva que los vehículos viejos tendían a experimentar a ciertas velocidades, cuando los paneles de la carrocería o los cristales de las ventanas comenzaban a vibrar en una simpatía exagerada, cada vez mayor y que no paraba hasta que acelerabas o frenabas un poquito.

¿Es posible? ¿Se puede hacer?

Estamos bastante seguros de que no se puede, de lo contrario R.F. Burns (ahora sabemos que es una broma, ya no es realmente divertido) seguramente habría descubierto la frecuencia mágica en los últimos 14 años y habría dejado de preguntar cómo hacerlo.

Entonces, si no se puede hacer, esta pregunta debe, seguramente, tener un significado oculto, pero ¿cuál es ese significado oculto? ¡Respuestas abajo, por favor!