¿Es posible cargarse un ordenador por software?

Avatar de Usuario
badapower
Mensajes: 437
Registrado: 16 Oct 2012 00:16
Agradecido : 57 veces
Agradecimiento recibido: 47 veces

¿Es posible cargarse un ordenador por software?

Mensajepor badapower » 09 May 2015 23:08

Tras leer el impresionante artículo sobre el INVES SPECTRUM + del RW magazine por el que hay que felicitar a sus autores por el repaso tan impresionante que le dan al INVES y como han desentrañado todos sus misterios, me surge la cuestión de si realmente sería posible llegar a cargarse un ordenador de la época mediante software, no hablo solo de ejecutar un par de instrucciones como se rumoreaba que pasaba con el INVES si no de hacer un programa que dejase inutilizable un ordenador para siempre, desconocía ése rumor acerca del INVES y al leerlo he pensado, ¿cómo pudieron llegar a creerse semejante cosa los de microhobby?, me pareció de risa, pero al terminar de leer el artículo y descubrir que el INVES llevaba una EPROM me ha surgido la duda de si sería posible hacer un programa que reescribiese la EPROM y dejase al ordenador inútil de por vida pero tengo entendido que para grabar una EPROM hacía falta algún tipo de hardware especial y que no es posible reescribirla definitivamente simplemente por software.

Bueno, a ver si alguno de los electrónicos me saca de dudas.

Avatar de Usuario
Jinks
Mensajes: 2058
Registrado: 09 Oct 2013 16:47
Agradecido : 200 veces
Agradecimiento recibido: 270 veces
Contactar:

Re: ¿Es posible cargarse un ordenador por software?

Mensajepor Jinks » 09 May 2015 23:33

Cuando salieron los primeros PC con la BIOS en EEPROM y actualizable desde la propia placa (estamos hablando de últimos 486 y primeros Pentium) salieron también los primeros virus que machacaban la BIOS (escribiendo en la EEPROM) de manera que ese PC no volviese a arrancar. Y no hace falta un virus: el proceso de actualización de la BIOS siempre puede fallar y conseguir el mismo resultado.

En el Spectrum no creo que el pin que habilita la escritura de la EPROM o EEPROM esté conectado, así que no habría ese problema.

De todas formas, para mi eso no es estropear el ordenador, lo que yo llamo "estropear" sería un destrozo "físico". La EEPROM con contenido corrupto siempre puede grabarse (aunque en otro equipo) y el ordenador volvería a funcionar con ese mismo chip.

Sí que sería posible crear un destrozo físico pero se necesitaría que el ordenador tuviera algún fallo de diseño. Por ejemplo alguna resistencia con un valor mal calculado que haciendo circular por ella cierta intensidad (por ejemplo, sacando cierto valor a cierto puerto) se fundiese, o cosas por el estilo. Pero habría que descubrir el fallo y la manera de explotarlo (lo de "explotar" nunca mejor dicho). La pregunta es ¿esto se ha dado alguna vez?

También se me ocurre un micro-controlador que su programa (de manera fortuita o intencionada) configure un pin por el que entran datos como pin de salida...

Dentro de la categoría de "no estropeado pero no lo puedes volver a usar" también se me ocurre poner un password para arrancar sin decírselo al usuario.

grxt123
Mensajes: 239
Registrado: 08 Nov 2012 10:14
Agradecimiento recibido: 14 veces

Re: ¿Es posible cargarse un ordenador por software?

Mensajepor grxt123 » 10 May 2015 01:31

Con algunas tarjetas gráficas de PC solía venir una advertencia de que ciertos modos de video en monitores no apropiados podrían dañarlo. Es cierto que en este caso se podría decir que realmente la avería sería por un hardware y no por un software.

Por otra parte, con algunos emulaores de CGA para las tarjetas Hercules, también aparecía una advertencia parecida.
De hecho, a veces a causa de la señal enviada por el controlador de video programado de forma "incorrecta", el monitor monocromo podía llegar a hacer ruido y a mostrar una señal con mucho brillo que en teoría podría dañarlo, .

Luego estaría el tema de las disqueteras... ¿podrían llegarse a dañar por movimientos continuos de los cabezales, etc?

Bye.

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: ¿Es posible cargarse un ordenador por software?

Mensajepor mcleod_ideafix » 10 May 2015 04:41

Por lo general, no, no se puede, pero sí que se puede estresar a la máquina hasta el punto de que, si tiene fallos de diseño, estropearla de forma irremediable.

Un ejemplo: el C64 tiene muchos chips NMOS que se calientan bastante. Para colmo, y por culpa de tener que cumplir la regulación anti-interferencias de EEUU, tuvieron que ponerle ese cartón metalizado que todo el mundo conoce, y que no hace si no concentrar el calor que despiden sus circuitos.

Pues bien: un circuito NMOS se calienta porque siempre consume energía, conmute o no. Cuando más consume es cuando en el interior del circuito hay muchos transistores en saturación, es decir, conduciendo toda la corriente que pueden conducir, haciendo que el transistor que hace de pullup se "coma" toda la corriente que el transitor saturado pueda hacer pasar.

Así, si por programa se consigue que un circuito presente un estado interno "lleno de ceros", ese circuito se calentará bastante. Si después de eso, el circuito no cambia su estado, su consumo seguirá siendo alto, aumentando su temperatura, y pudiendo provocar su destrucción si no tiene ningún tipo de refrigeración. ¿Y cómo se consigue eso? Por ejemplo, si el circuito tiene registros internos, poniéndolos todos a 0 (por ejemplo, el SID o el VIC-II), o bien forzando a que sus salidas sean 0 (caso de la PLA)

Otro ejemplo: el Dragon y el Amstrad disponen de un relé mecánico controlado por software que permite controlar el motor del cassette, a través de la clavija REMOTE. Un programa que mediante un bucle consiga activar y desactivar ese relé conseguirá, como poco, que llegue un momento en que los contactos del relé dejen de funcionar de forma fiable. Además, la bobina del relé genera una fuerza contraelectromotriz cada vez que se conmuta su estado. Habitualmente se pone un diodo en paralelo con dicha bobina para que esa fuerza contraelectromotriz circule por el diodo y no dañe al driver al que está conectada la bobina, pero si en una de éstas el pico de intensidad es demasiado fuerte para el diodo y "rompe" la unión PN dejandolo en corte, la fuerza contraelectromotriz que se genere a continuación será mucho más dañina.

Si te vas a un PC, donde hay muchos más elementos que pueden entrar en conflicto, tienes: desde los mencionados modos gráficos que pueden dañar al monitor, pasando por virus que recuerdo que intentaban cargarse la disquetera a base de forzar al brazo del cabezal a acceder a pistas por debajo del 0, provocando que el cabezal chocara de forma muy escandalosa contra el tope (lo que se perseguía en este caso era descalibrar la disquetera)

Por último, en el caso del Inves, el contenido de su EPROM no podría nunca verse alterado por software. Para escribir en una EPROM hace falta poner una tensión de 12V en cierto pin, durante un tiempo determinado, y esa tensión no está presente en los pines de la EPROM del Inves.

Pero hay un caso en el Inves (que no hemos contado por cierto) en donde podría darse conflicto y provocar quizás algún daño: tanto el puerto de lectura $FE, desde el que se lee el teclado y el cassette, como el puerto de lectura $DF desde el que se lee el joystick, están cableados de forma que cada uno responde a un bit diferente del bus de direcciones: A0 en el primer caso, y A5 en el segundo. Si A0 es igual a 0, se lee el puerto de teclado/cassette y si A5 es 0, se lee el puerto del joystick.

Pero... ¿y si resulta que A0 y A5 son 0 a la vez? (por ejemplo, el puerto 00h) Pues que ambos, obedientemente pondrán un valor en el bus de datos del Z80, colisionando.

Y si resulta que cuando se hace la operación no hay nada pinchado al puerto Kempston y no hay ninguna tecla pulsada, los valores que se entregarán serán respectivamente 10111111b (puerto $FE) y 00000000b (puerto $DF), provocando colisión en 7 de los 8 bits de los dos transceivers involucrados.

En el artículo en RW puedes ver qué pinta tiene la etapa de salida de dichos transceivers y explico lo que ocurre a nivel de transistor cuando estas colisiones ocurren. En resumen: la situación de cortocircuito dura unos 800ns en cada operación de E/S, pero les ocurre a 7 de los 8 bits, y eso está desaconsejado en el datasheet de los transceivers, así que hay una ligera posibilidad de que un programa tal como éste:

Código: Seleccionar todo

  org 28000
  di
  ld hl,0000h
  ld bc,0000h
Bucle:
  rept 9000
    inir
    indr
  endm
  jp Bucle


estrese tanto a los dos transceivers que haga que uno de ellos se estropee.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
cpcbegin
Mensajes: 263
Registrado: 27 Ago 2014 22:02
Agradecido : 135 veces
Agradecimiento recibido: 73 veces

Re: ¿Es posible cargarse un ordenador por software?

Mensajepor cpcbegin » 18 Jun 2015 06:43

Otra manera de cargarse un ordenador por software es ponerlo en modo sobrecarga (como los phasers de star trek), que se lo digan a los que se las ido el móvil por un calentón por no cerrarse automáticamente la aplicación de hacer fotos.
También es posible cargarse periféricos, por ejemplo, hace varios años había grabadoras que se estropeaban si se accedía con sistemas operativos sin sus drivers oficiales porque usaban la instrucción estándar de expulsar disco para actualizar firmware (una cagada en toda regla).
Los monitores y discos duros muy antiguos nos lo podíamos cargar poniéndoles frecuencias inadecuadas a los primeros o a los segundos aparcándolos mal y dándole valores de cilindro, cabeza, sector incorrectos. Menos mal que eso cambió hace muchos años.


Volver a “General”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados