miércoles, 2 de noviembre de 2011

Hackeando el Firmware

A veces una nueva o modificada versión no oficial de firmware es creada por terceros para proporcionar nuevas características o para abrir una funcionalidad oculta. Los ejemplos incluyen Whited00r para iPhone y iPod Touch, Rockbox para los reproductores de audio digital, CHDK2 y Magic Lantern2 3 para las cámaras digitales de Canon, y Open WRT para los enrutadores inalambricos, el firmware de region libre para unidades de DVD, que no son de región libre con el firmware oficial, así como muchos proyectos de homebrew para las consolas de juego. Éstos pueden a menudo abrir funcionalidad computacional en dispositivos previamente limitados (ej., ejecutar Doom en iPods). La mayoría de los hacks de firmware son libres y también de codigo abierto.
Estos hacks usualmente utilizan la facilidad de actualización del firmware en muchos dispositivos para instalarse o ejecutarse en ellos. Algunos, sin embargo, deben recurrir a exploits para funcionar, porque el fabricante ha intentado bloquear el hardware para evitar que utilicen código no autorizado.

Firmware hoy en día

El firmware ha evolucionado para significar casi cualquier contenido programable de un dispositivo de hardware, no sólo código de maquina para un procesador, sino también configuraciones y datos para los circuitos integrados para aplicaciones especificas (ASICs), dispositivos de lógica programable, etc.

Periféricos de computador

La mayoría de los periféricos del computador son de hecho computadores de propósito especial. Mientras que los dispositivos externos tienen el firmware almacenado internamente, las modernas tarjetas de los periféricos de computadores típicamente tienen grandes partes de firmware que es cargado en el arranque por el sistema huésped, pues esto es más flexible. Dicho hardware por lo tanto puede no funcionar completamente hasta que el computador huésped le haya cargado el firmware indispensable, a menudo por medio del driver de dispositivo específico (o, más exactamente, por medio de un subsistema dentro del paquete del driver de dispositivo). Los modernos drivers de dispositivo también pueden exponer una interfaz directa de usuario para la configuración además de las llamadas/interfaces del sistema operativo o de las Interfaces de programacion de aplicaciones (APIs).



Retos del firmware en los PC

En algún sentido, los varios componentes del firmware son tan importantes como el sistema operativo en un computador. Sin embargo, a diferencia de la mayoría de los sistemas operativos modernos, el firmware tiene raramente un mecanismo automático bien desarrollado para actualizarse a sí mismo para corregir los problemas de funcionalidad que son detectados después de que la unidad es despachada.

El BIOS es bastante fácil de actualizar en una PC moderna; los dispositivos como las tarjetas video o los módems confían en el firmware cargado dinámicamente por un driver de dispositivo y a menudo pueden así ser actualizados transparentemente a través de los mecanismos de la actualización del sistema operativo. En contraste, el firmware en dispositivos de almacenamiento es raramente actualizado; no están estandarizados los mecanismos para detectar las versiones del firmware y actualizarlas. Estos dispositivos por lo tanto tienden a tener un índice más alto de problemas de funcionalidad, comparado a otras partes de un moderno sistema de computación.



Reproductores de música portátiles

Algunas compañías usan actualizaciones del firmware para agregar nuevos formatos de archivos de reproducción de sonido (codecs); el iriver agregó el formato ogg de esta manera, por ejemplo. Otras características que pueden cambiar con las actualizaciones del firmware son el GUI e incluso la vida de la batería. La mayoría de los reproductores de música modernos soportan las actualizaciones del firmware.


Teléfonos móviles

La mayoría de los telefonos celulares tienen una capacidad de firmware actualizable por muchas de las mismas razones que arriba, pero algunos incluso pueden ser actualizados para mejorar la recepción o la calidad de sonido.



Automóviles

Desde 1996 la mayoría de los automóviles han empleado una computadora a bordo y varios sensores para detectar problemas mecánicos. Los vehículos modernos también emplean sistemas controlados por computador ABS, y sistemas de control de transmisión operados por computadora. El conductor puede también recibir información "in-dash" mientras conduce de esta manera, como por ejemplo lecturas en tiempo real de la economía del combustible y de la presión del neumático. La mayoría del firmware del vehículo puede ser actualizado en un distribuidor local autorizado.

Definición del IEEE

El glosario estándar de terminología del software del Institute of Electrical and Electronics Engineers(IEEE), Std 610.12-1990, define el firmware como sigue:
"La combinación de instrucciones de un dispositivo de hardware e instrucciones y datos de computadora que residen como software de solo lectura en ese dispositivo".
Notas:
(1) este término es a veces usado para referirse solamente al dispositivo de hardware o solamente a las instrucciones o datos de computadora, pero estos significados están desaprobados.
(2) la confusión rodeando este término ha llevado a alguno a sugerir que éste debe ser totalmente evitado.

Firmware

El firmware es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo no volátil (ROM, EEPROM, flash, etc), que establece la lógica de más bajo nivel que controla los circuitos electronicos de un dispositivo de cualquier tipo. Al estar integrado en la electronica del dispositivo es en parte hardaware, pero también es software, ya que proporciona lógica y se dispone en algún tipo de lenguaje de programacion. Funcionalmente, el firmware es el intermediario (interfaz) entre las órdenes externas que recibe el dispositivo y su electronica, ya que es el encargado de controlar a ésta última para ejecutar correctamente dichas órdenes externas.

 Encontramos firmware en memorias ROM de los sistemas de diversos dispositivos perifericos, como en monitores de video, unidades de disco, impresoras, etc., pero también en los propios microprocesadores, chips de memoria principal y en general en cualquier circuito integrado.

Muchos de los firmwares almacenados en ROM están protegidos por Derechos de Autor.

El programa BIOS de una computadora es un firmware cuyo propósito es activar una máquina desde su encendido y preparar el entorno para la instalación de un Sistema Operativo complejo, así como responder a otros eventos externos (botones de pulsación humana) y al intercambio de órdenes entre distintos componentes de la computador.

En un microprocesador el firmware es el que recibe las instrucciones de los programas y las ejecuta en la compleja circuitería del mismo, emitiendo órdenes a otros dispositivos del sistema.