viernes, 22 de febrero de 2008

Control Remoto del PC via WIFI

Es cierto que desde hace ya tiempo tenemos aplicaciones como VNSea que nos permite el acceso a nuestro PC desde nuestro dispositivo (teniendo instalado un servidor VNC (evidentemente). VNSea está muy bien, nos permite interactuar completamente con el PC aunque estemos a miles de kilómetros.

Pero hasta ahora nadie había hecho una aplicación, ya sea para bluetooth (iPhone) o por WIFI (iPhone/iPod) para usar la pantalla de nuestro dispositivo como alfombrilla tactil de ratón. Eso es lo que hace esta aplicación. Se basa de nuevo en VNSea para realizar la conexión, pero esta vez no veremos la pantalla de nuestro PC ni nada por el estilo. Está bastante bien, el único inconveniente que le veo es que es tener otra app más, cuando podrían haber modificado el mismo VNSea para añadir dicha función, como un modo secundario.

Aun así se hecha de menos algún programa que nos permite realizar acciones más preestablecidas en el PC. Hasta mi viejo SonyEriccson K700 era capaz de hacerlo por BT sin necesidad de instalar nada en el PC. Ejecutar aplicaciones, subir/bajar volumen...

Aquí os dejo el enlace para descargarlo

http://www.cs.cmu.edu/~jsherwan/iphone/touchpad.zip

y aquí un video:

iTunes 7.6.1

Nueva actualización de iTunes, en principio nada nuevo, tan solo algunas correcciones para Apple TV y algunos errores solucionados.

Creo firmemente que apple debería de suministrar actualizaciones en vez de tenerte que descargar una y otra vez la suite completa, a menos que fueran actualizaciones más seberas.

Lo que seguramente nos preguntamos muchos es si esta nueva versión de iTunes tiene algo de nuevo en lo referente a SDK. Puesto que si el SDK está al salir y los rumores de una versión 1.1.4 también... lo lógico hubiese sido esperar un día o dos. Luego es muy posible que no haya actualizción de iTunes para el SDK y que ya esté preparado para ello, y por otro lado también es posible que no haya ninguna actualización 1.1.4 en estos días.

Lo que si corrige es el problema de las aplicaciones de enero, el dichoso "no gracias" ya funciona correctamente y te deja entrar sin problemas en la administración de tu iPod/iPhone

jueves, 21 de febrero de 2008

Artículo: Herramientas y comandos útiles (Parte III | Herramientas útiles)

En este punto ya no solo deberíamos de saber lo que es una shell o SSH, sino que deberíamos de ser capaces de saber manejar más o menos el sistema de archivo de nuestro dispositivo, movernos por él e incluso crear pequeños scripts, que no son más que archivos de texto con muchas instrucciones una tras otra.

Ahora vamos a seguir amplicado la lista. Muchos de estos comandos ya no estarán incluidos en el BSD subsystem o en la misma firmware. Entre otros paquetes interesantes tenemos:

DNS Tools
Netcat
Nmap
Erica's Ported Utils
Erica's Utilities
...

Pero veamos que podemos encontrar si profundizamos un poco en ellas y que utilidades nos pueden ser utiles y cuales no:


wget

creo que hay poco que decir sobre wget. Digamos que es un gestor de descargas desde servidores web, desde contenido HTTP(s) como FTP. Su uso es simple:

wget www.google.com -> Descarga la página de google "index.html
wget www.theliel.com/ipod.zip -> descarga el archivo .zip especificado

Como podemos ver podemos, es una herramienta muy util, sobre todo usada por terminal.


ip-print

Muestra nuestra ip (publica) actual, util en redes en las q necesitamos saber de forma rápida cual es la ip pública


plutil

plutil es el editor de archivos de preferencias de apple. La mayoría de todos los archivos de configuración del iPod/iPhone están en este formato. Normalmente tienen extensión plist, aunque hay muchos otros archivos que tienen el mismo formato que no tienen extensión o tienen otras extensiones. Son archivos con formato xml estructurados, muy fáciles de entender. El problema es que los archivos de preferencias de este tipo pueden estar en xml o en binario. Es decir, si estan en xml serían facilmente leídos para nosotros. Por el contrario si estan en binario tendremos que convertirlos para poder modificarlos. Aquí es donde entra plutil. El iPod/iPhone en realidad es capaz perfectamente de leer tanto uno como el otro, pero en formato binario el archivo ocupa mucho menos espacio y es más eficiente a la hora de interpretarlo, luego si se desea editar cualquier arcihvo se debería primero pasar a xml y despues pasar de nuevo a binario:

plutil -c xml1 info.plist -> Convierte el archivo binario info.plist a xml, así podremos intepretarlo.
plutil -c binary1 info.plist -> Realiza la conversion contraria. De un archivo xml lo pasa a binario

Esto repito puede ser treméndamente util si se desea modificar archivos de configuración, es imprescindible si no disponemos en el PC un plutil compilado para windows. Luego la conversion la realizamos en el mismi dispositivo.


restart

fuerza el reinicio del springboard


sendFilebyMail

Otra de esas utilidades que puede ser muy usada. Nos permite enviar cualquier archivo por mail. tan solo debemos de proporcionar el archivo a adjuntar:

sendFilebyMail /private/var/root/13.jpg


snap / snaptoalbum

snap captura la pantalla en ese momento de nuestro iPod/iPhone, y toma de entrada el nombre que deseamos que tenga el archivo. La imagen se guardará en la carpeta de trabajo dnd estemos y será png. Por el contrario, snaptoalbum no toma ningun nombre de entrada, realiza lo mismo, y manda la imagen a la carpeta de fotos de la cámara. En caso de ser un iPod touch, mandará la imagen a la carpeta var/mobile/Media/DCIM/100APPLE


reboot

reinicia el iPod/iPhone


nvram

se usa para modificar los parámetros de arranque de nuestro iPod/iphone:

nvram boot-args="-v" -> utilizaría el modo verbose para el inicio del dispositivo.


netcat


Una de las herramientas que conoce cualquier administrador de redes y muchos otros también. Sirve para todo casi literalmente (en redes). Desde usarlo como cliente telnet, troyano, FTP, para lograr shells... es una de esas utilidades que no se sabe cuando la podrás usar, y que siempre te arrepientes de no tenerla a mano cuando la necesitas


ping

una de las utilidades más antiguas seguramente. Simplemente realiza un ping a una dirección dada


router

Permite modificar la tabla de enrutado. No voy a entrar detalles en estas utilidades, ya que la mayoría de ellas tan solo serán útiles para quienes saben usarlas.


netstat

nos sacará en pantalla las conexiónes activas en el momento de ejecutarlo. Información muy util muchas veces para saber si alguna aplicación está conectada a inet o a que puerto y que IP.


ifconfig

Es la utilidad de configuración de redes en unix/linux


tftp / telnet

pues nada más y nada menos que eso. clientes telnet y tftp


nmap

El scaner de puertos más importante seguramente en el mundo. Explicarlo en unas pocas lineas sería imposible. Quien sepa lo que es lo usará, quien no lo sepa no lo necesitará.


whois

Realiza una búsqueda en los servidores whois para saber a quien pertenece la web o el dominio... introducido.

whois www.google.es -> nos mostrará la informacion del registro de ese dominio


dig / host / nslookup

Utilidades imprescindibles para consultas de DNS. Seguramente dig es la más potente, aunque cada una se especializa en su campo. Animo a todos aquellos que le gusten las redes a aprender a manejar dichas utilidades, pueden ser muy usadas. Explicarlas una auna y con todos los parámetros sería inviable aquí.

dig www.hotmail.com. MX -> nos devolverá por ejemplo los servidores de correo de hotmail.


traceroute

Nos mostrará cada salto realizado por un paquete entre router y router hasta que este llega a su destino.


tcpdump

Un Sniffer.

tcpdump -A -s 0 -w file1.dmp -> snifará todo el tráfico y lo guardará en el archivo citado


arp

nos mostrará el caché ARP o nos permitirá modificarlo.

arp -a -> nos mostrará las entradas arp.

-------------------------

Existen multitud de otros comandos, aunque cada vez más con menos utilidad para las personas, he puesto tan solo aquellos que he creido que en un momento dado puedan ser útiles para algunos. Muchos de ellos seguramente no los usaremos nunca, otros sin duda pueden convertirse en herramientas imprescindibles... todo dependerá siempre del uso que le estemos dando a nuestro dispositivo. Evidentemente si es tan solo para escuchar música o ver video, no lo usaremos demasiado.

Un saludo.

Artículo: Herramientas y comandos útiles (Parte II | Comandos básicos)

Ya hemos dejado más o menos claro la utilidad de acceder por SSH. El iPod/iPhone cmo hemos dicho en otra ocasión corren bajo una versión de MAC OS, y esta deriva de Darwin que a su vez deriva de Unix. Muchas de las herramientas/utilidades que a día de hoy encontramos en linux/unix las encontraremos igualmente en el juegete, sobre todo después de instalar la aplicación BSD Subsystem. BSD Subsystem lo único que hace es por decirlo completar ese unix/linux que ya de por sí tenemos, añadiendo utilidades y herramientas en modo de comandos por supuesto.

Muchas personas tan solo están acostumbradas a ver una interfaz gráfica dnd todo es mucho más intuitivo, y para muchos es completamente un dolor de cabeza imaginar como funciona una shell. Así que intentaré explicar como funciona más o menos ese ente abstracto de archivos, carpetas... Así que apartir de ahora vamos a imaginarnos tan solo que lo que vamos a tener delante en todo momento es un Árbol. Así que la primera vez que accedamos por SSH o Terminal evitaremos ver una pantalla negra vacía, sino que veremos un árbol. Un Árbol tiene un tronco, que sería la parte principal que lo sujeta al suelo. Pero a su vez, este tronco (raiz) tiene tanto hojas como ramas unidas a él. Pero estas nuevas ramas tb pueden o no tener más hojas y más ramas... imaginemos por tanto que las hojas son los archivos y las ramas las carpetas. De este modo tenemos raiz (el tronco, el inicio, de dnd nace todo lo demás) el cual tiene o puede tener archivos, y carpetas q ha su vez pueden o no tener más archivos y mas carpetas que...

Cuando accedemos por SSH (o terminal) simplemente lo que hacemos es colocarnos en algún lugar del árbol que a priori no sabemos cual es. Da igual que veamos todo en negro, nosotros sabemos que estamos en algún lugar del árbol. dnd? lo veremos más adelante, pero por ahora no es importante. Evidentemente si queremos efectuar cualquier acción sobre cualquier archivo (hoja) tendremos que o estár en la rama dnd se encuentra dicho archivo o especificar exactamente que archivo de que rama de la rama de la rama... no podemos podar una rama si no sabemos dnd está. Por eso lo primero que se debe de aprender es a desplazarse por el árbol, de rama en rama, así como los comandos para listar que ramas más pequeñas u hojas tenemos en la rama actual. Visto esta pequeña analogía, vamos a dejar de hablar de ramas, hojas o raíz, y llamaremos a cada cosa como se debe.

Como no podemos suponer que todos nacen sabiendo, antes de entrar en cosas un poco más específico se debe de conocer lo más basico. Desde como movernos entre carpetas a como listarlas.


pwd

La shell nos devolverá a la salida le directorio de trabajo en el que estamos. Esto puede ser muy util si no sabemos en que lugar del "árbol" estamos. Con teclear este comando la salida será la ruta en la que estamos.


cd


Heredado desde los tiempos de MS-DOS. Se usa para acceder a un directorio hijo especificando la nueva ruta. Cada directorio (carpeta) hija se especificará con la barra invertida '/'. Así por ejemplo si quisiésemos acceder a la carpeta mobile, que se encuentra dentro de la carpeta var, q a su vez se encuentra dentro de la carpeta private, deberíamos de escribir:

cd /Private/Var/Mobile

Al acabar de escribirlo (y presionar intro), estaríamos posicionado en la carpeta citada. Del ejemplo citado, si se desease moverse a raiz, tan solo deberíamos de escribir:

cd /


ls

lista las carpetas y/o archivos contenidos en la carpeta de trabajo en la q estemos en ese dicho momento. Acepta una gran cantidad de argumentos q no discutiremos todos, tan solo pondremos algunos ejemplos:

"ls -l" listará archivos y carpetas, especificando tb los permisos, el propietario, el grupo, el tipo de archivo o carpeta...
"ls -a" listará todos los archivos y carpetas, incluso los ocultos.
"ls -R" listara archivos y carpetas, y tb se incluirán los archivos y carpetas anidados dentro de las carpetas.
"ls -laR" se pueden incluir más de un parámetro tb.


cat

En realidad es un concatenador, es decir, se usa para unir dos o más archivos en uno solo. En la práctica se suele usar mucho más como el Type de MS-DOS, es decir, para mostrar el contenido de un archivo.

cat /Applications/MobileFinder.app/info.plist mostrará en pantalla el contenido del archivo info.plist


cp / mv

Copiar / mover archivos. En ambos casos se especificará el origen y el destino:

cp archivo_origen carpeta_destino
mv archivo_origen archivo_destino

cp admite algunos parámetros extras q no voy a comentar.
mv se suele usar además de para mover para cambiar el nombre de un archivo cuando el origen y el destino se encuentran en la misma carpeta:

mv info.plis info2.plist renombraría el primer archivo al segundo
mv info.plist /private/var/info.plist mueve el archivo info.plist de la carpeta dnd nos encontramos en el momento de teclear el comando a la carpeta /private/var


mkdir / rmdir / rm

mkdir se usa para crear una carpeta, así como rmdir ó rm se usa para eliminarla. La diferencia entre rmdir y rm, es que rmdir tan solo elimina carpetas que estén vacías, mientras que rm hay q usarlo con cuidado.

rm acepta 3 parámetros: -r para afectar tb las subcarpetas, -f para forzar todo a que si en caso de encontrar alguna advertencia y -i para que nos pida confirmación de cada archivo. El problema con rm es q si no se tiene cuidado se puede eliminar todo el sistema de archivos. Así si entramos con permisos de root por SSH y tecleásemos: "rm -rf /" el resultado sería que se eliminarían absolutamente todos los archivos del iPod/iPhone.

Con estos dos comandos se debería de ser capaz de moverse completamente uno entre las diferentes carpetas y archivos.

Hay q tener en cuenta q rm cuando se encuentra con algún enlace simbólico (que se verá mas abajo) no hace un seguimiento al enlace y borra el contenido de él, sino que sólamente elimina el enlace en sí, no el contenido al que apunta el enlace.


ln

Permite la creación de enlaces. Dependiendo del parámetro que se use será un enlace simbólico (-s) o un enlace duro (sin modificadores). Tambieén existe el modificador -f, que fuerza a crear el enlace aun cuando existe una carpeta o archivo con el mismo nombre. La diferencia entre uno y otro es que un enlace simbólico se rompe si el archivo al que se referencia se mueve o se elimina. Un enlace duro seguirá apuntando al archivo incluso si este se ha movido. En ambos casos la sintaxis es la misma, primero se especifica el archivo físico y despues el archivo o carpeta que será el enlace en sí.

ln -sf /Private/var/Fonts /System/Library/Fonts crearía un enlace simbólico (-s) llamado Fonts en la carpeta /System/Library que siempre que se llamase por cualquier aplicación o programa apuntaría a la carpeta /Private/var/Fonts. Dicho de otro modo, sería un acceso directo a otra carpeta. Como se especificó la opción -f, si antes de crear el enlace en /System/Library/Fonts ya existiese esa carpeta, la carpeta se eliminaría y dejaría tan solo el enlace simbólico.


df

Nos mostrará a la salida el espacio libre, ocupado de cada partición. Normalmente se usa con el parámetro -k para que los valores nos los de en bloques de 1024 bytes, en vez de 512.

df -k nos mostrará la cantidad de espacio libre que tenemos en cada una de las dos particiones principales, en la particion de datos y en la partición del OS.


cmp

no es tan usado como los demás, pero puede llegar a ser útil. Simplemente compara dos archivos. Si son iguales devolverá '0', si son distintos devolverá '1'. Se pueden usar parámetros adicionales como -b, q nso mostrará ademas aquellos bytes que son diferentes.


chmod / chown

Seguramente será mucho más usado chmod que chown. La función de chmod será la de modificar permisos, mientras que la función de chown es la de modificar el propietario y/o grupo.

Cualquier sistema de archivo de hoy en día posee descriptores de seguridad que permiten o deniegan el acceso a determinados recursos. Aparece la necesidad así de diferentes usuarios y el usuario root o administrador, el cual debe de tener acceso ilimitado al sistema.

chmod por tanto se encarca de establecer esos permisos, esos criterios. Dichos permisos a su vez se pueden establecer a un determinado usuario (others) , a un determinado grupo (group) o a su propietario (user) . Así podemos diferenciar 3 permisos principales:

Permisos de Ejecución -> Permite ejecutar el archivo en cuestión. Se representa mediante -x
Permisos de Lectura -> Permite copiar el archivo o leerlo. Se representa mediante -r
Permisos de modificación -> Permite mover un archivo o eliminarlo.se representa mediante -w

A grandes rasgos claro. Evidentemente el propietario del archivo, el que supuestamente es su creador, tendrá por defecto acceso completo, mientras que los usuarios tendrán por defecto acceso de lectura. Por otro lado el grupo hace referencia a los usuarios que existen en el mismo grupo del propietario, de ahí que haya permisos de grupos. Cada archivo por tanto guarda 9 permisos diferentes, 3 permisos diferentes para cada una de las opciones: Propietario, usuarios, grupo.

Mediante chmod es posible modificar cualquier permisos de cualquier archivo, ahroa veremos algunos ejemplos:

chmod +r info.plist -> otorga permisos de lectura a todos.
chmod -w info.plist -> elimina los permisos de ejecución a todos.
chmod u=rwx info.plist -> otorga permisos de lectura, escritura y ejecución tan solo al propietario.
chmod u=rwx, g= , o=r -> Otorga permisos completos al propietario, elimina todos los permisos al grupo y otorga permisos de lectura al resto de propietarios.

es posible usar el formato octal para evitar escribir permiso a permiso. Así por ejemplo escribir:

chmod 777 info.plist equivaldría a establecer todos los permisos a todos los usuarios, pero bueno, esto es algo que no explicaré aquí.

Existe un permiso especial llamado setuid (+s) que lo que realiza es marcar un archivo para que siempre se ejecute (lo ejecute quien lo ejecute) con permisos de root. Se usa para dar acceso a él a cualquier usuario.

Visto esto, se comprende entonces el significado del comando chown. Los permisos se establecen principalmente para un propietario, luego tiene que ser posible modificar el propietario de un archivo. Es posible que el usuario root no tenga acceso incluso a un archivo si él no es el propietario y los permisos tan solo son de acceso para propietarios, pero el root podrá modificar el propietario del archivo a sí mismo si asi lo desea, para poder tener a posteriori acceso a dicho archivo. Mediante el comando chown es posible modificar la propietarierdad de un archivo, así como el grupo al que pertenece:

si el usuario mobile creó el archivo info.plist, el propietario de dicho archivo será mobile con sus permisos determinados. Si deseamos apropiarnos de ese archivo por lo que seá deberíamos de realizar:

chown root:wheel info.plist

y de este modo el archivo pasaría a ser de "propiedad" del usuario root (administrador) perteneciente al grupo wheel.

Tanto para chown como para chmod existe el parámetro -R, que aplicará los permisos o el cambio de propietariedad a todos los arcihvos y carpetas contenidos en la carpeta o archivos:

chmod 775 +R /Applications establererá permisos 755 a toda la carpeta Applications y a todos sus subcarpetas.


top

El comando top es tambien uno de esos comandos útiles. Nos saca en pantalla la lista de procesos en ejecución. Lo que en windows sería el administrador de tareas. Es más util normalmente acompañarlo del parámetro de usuario. Si no se especifica nos listaría todos los procesos abiertos, si se especifica un usuario nos listará los proceos que se estan ejecutando con permisos de ese usuario, para ello se especifica el parámetro -U seguido del usuario:

top -U root -> Muestra los procesos ejecutados como root
top -U mobile -> Muestra los procesos ejecutados como mobile
top -> muestra todos los procesos

Además de mostranos el uso de CPU, memoria etc.. nos muestra tb el ID del hilo que se ejecuta, lo cual es muy util si se desea detener un proceso. (lo veremos a continuación en kill)

Hay q tener en cuenta que una vez lanzado top este no se detendrá. Para detener la ejecución de top lo más sencillo es presionar las teclas Ctr+C, que lo que realiza siempre es detener el proceso actual.


kill

Detiene un proceso especificando su ID, que previamente podemos obtener con top.

kill 721 detendrá el proceso 721


find

con este comando podemos buscar y encontar cualquier archivo que deseemos, ya sea por extensión, por tamaño, por nombre... lo busca todo. Incluso es posible realizar búsquedas concretas y realizar una acción determinada una vez encontrado dicho o dichos archivos.

Su sintaxis es simple, en su versión más sencilla:

find [ruta] [parametros] [archivo]

los parámetros más usuales que podemos usar serán:

-name ó -iname: buscará por nombre de archivo, el primero respetará mayusculas y minusculas y el segunfo le dará igual
-cmin -ctime -amin -atime -mmin -mtime: buscara por fecha de: c-> estado a->acceso m-> modificación. Siendo min minutos y time horas
-size: Busca archivos de hasta ese tamaño. hay q tener en cuenta que unix usa por defecto 512 como unidad, es decir medio KB. Para evitar esto es mejro añadirle la unidad. Así si queremos buscar archivos de hasta 1Mb, podremos poner: -size -1024k

Hay muchas otras opciones, es posible anidar dos find o realizar OR o AND en la misma... os pongo mejor algunos ejemplos:

find / -iname "*.plist" Buscará en todo el sistema todos los archivos que tengan de extensión plist
find /private/var -size +5M -size -10M -iname "*pepito*" buscara todos los archivos de entre 5 megas y 10 megas que contenga el nombre pepito, y solo lo hará en /private/var (y subdirectorios)

find / -iname "*tmp*" -exec rm -f '{}' buscará y eliminará cualquier archivo que contenga en el nombre tmp.

----------


Creo que no me dejo ningún comando básico de unix que pueda ser útil para el iPod, pero si me he dejado alguno podeis comentarlo. En la siguiente parte seguiremos extendiendo la lista, pero serán comandos ya más específicos, aunq puedan ser algunos incluso más útiles.

Un saludo.

miércoles, 20 de febrero de 2008

Artículo: Herramientas y comandos útiles (Parte I | Putty y WinsCP)

Dado que para uno necesito lo otro, y que una cosa no tiene exactamente que ver con lo otro, prefiero dividirlo en dos partes.

Aquí trataremos sobre las dos herramientas por excelencia que usaremos constantemente y en las que nos vamos a apoyar una y otra vez.

Sin querer entrar sobre la guerra entre aplicaciones GUI o aplicaciones CLI, lo cierto es que la versatilidad, la potencia y el control que se tienen sobre aplicaciones CLI no se tendrán jamás sobre aplicaciones GUI. Es simple, es imposible plasmar en una GUI la infinidad de opciones que pueda tener una CLI.

Hoy vamos a ver una serie utilidades/herramientas que nos pueden ser de mucha utilidad o de bien poca, según se mire. Así que lo primero será citar las herramientas básicas de trabajo.

Instalando OpenSSH en nuestro dispositivo a través del Installer en el iPod/iPhone, nos permitirá acceso mediante FTP seguros (SFTP) o mediante SSH, en ambos casos via WIFI. FTP es tan solo un protocolo orientado a la transferencia de archivos, lo cual nos será útil tan solo cuando necesitemos meter/sacar archivos o cambiar ciertos permisos de archivos. Por otro lado tendremos SSH, que por decirlo de un modo simple es un telnet remoto seguro. A través de SSH por tanto tendremos un control completo sobre nuestro dispositivo. Cualquier comando que lancemos en SSH o cualquier aplicación que ejecutemos a través de él, se ejecutará siempre en el mismo iPod/iPhone, y esto es treméndamente útil.

Para nosostros, OpenSSH hará la función de servidor, así que igualmente necesitaremos los respectivos clientes si deseamos conectarnos. Para Windows he usado Putty para SSH y WinSCP para SFTP. Existen multitud de otros clientes y se puede usar cualquier otro, pero estos dos son gratuitos completamente y no tienen nada que envidiar a ningún otro.

Putty -> http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
WinSCP -> http://winscp.net/download/winscp406setupintl.exe

Putty no requiere siquiera de instalación, es tan solo un archivo. WinSCP requiere de una instalación muy simple.

Configurar tanto uno como otro no requiere en realidad de nada en especial, pero sí tener algunos conceptos básicos sobre redes. Para configurar la conexión tan solo necesitamos saber la dirección IP del dispositivo a conectarnos, el puerto y/o servicio al que vamos a conectarnos y el nombre y la contraseña de acceso. La IP la podemos comprobar directamente en el iPod/iPhone si vamos a ajustes, WIFI y accedemos a nuestra conexión. El puerto y el servicio es simple, si deseamos conectarnos para SSH marcaremos en Putty SSH, si por el contrario deseamos conectarnos por SFTP marcaremos SFTP en WinsCP. Las credenciales si no se modifican son por defecto:

User: root
pass: alpine

estas credenciales no salen de la manga, aunq parezca un poco absurdo, la contraseña alpine la establece Apple.

Con esos datos podemos ahora sí sin ningún problema acceder a nuestro dispositivo a través de SSH o de SFTP. SSH es un CLI, WinSCP es un GUI. Dependiendo de la tarea q deseemos realizar nos será más comodo usar uno o usar otro.

domingo, 17 de febrero de 2008

Artículo: Firmware al descubierto -> 1.1.3

El iPod/iPhone como aparato electrónico se apoya en un software que lo controla, del mismo modo que un PC por sí solo no sirve para nada. Cuando nos solemos referir a un tipo de software incluido en un dispositivo electrónico como una memoria flash, EEPROM, ROM... generalmente se usa el término de firmware. Luego podemos decir que el firmware del iPod/iPhone no es más que todo el software que lo controla. Decír que es el "Sistema operativo" sería falso. Dentro del firmware podríamos encontrar en este caso un sistema operativo de apoyo, pero la firmware en sí no es un sistema operativo.

Aclarado este punto, ¿por qué de cuando en cuando Apple saca una actualización de Firmware? Bueno, como todo software esto es completamente necesario si se quiere añadir nuevas funciones, pulir fallos, mejorar el rendimiento... Por ello es siempre importante en la medida que se pueda mantenerlo siempre actualizado.

¿Pero que hay realmente dentro de la firmware de Apple? ¿que es lo que se descarga itunes? Bueno, es lo que vamos a aclarar.

Antes de explicar de que se compone esta firmware hay que tener unas nociones mínimas de Linux/Unix. Y esto se debe a que el OS (El sistema operativo) en el que se apoya nuestro jugete es MAC OS, o una versión de él, y MAC OS procede de Darwin, que está basado en UNIX. Es decir, que dentro de MAC OS veremos multitud de similitudes con Linux.

Dicho este pequeño paréntesis, seguimos. Podemos descargar manualmente la firmware desde los servidores de apple y empezar con el análisis:


iPod 1.1.3 -> http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/061-4060.20080115.9Iuh5/iPod1,1_1.1.3_4A93_Restore.ipsw

iPhone 1.1.3 -> http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4061.20080115.4Fvn7/iPhone1,1_1.1.3_4A93_Restore.ipsw

Aunque a priori nos pone que es un archivo ipsw no es más que un archivo zip q podremos descomprimir con cualquier programa. Los dos archivos son prácticamente iguales, así que tan solo haremos referencia a uno de ellos, en este caso al del iPod.

Si descomprimismo el archivo iPod1,1_1.1.3_4A93_Restore.ipsw nos encontramos con lo siguiente:

/...
022-3742-100.dmg
022-3745-250.dmg
022-3748-284.dmg
kernelcache.release.s5l8900xrb
Restore.plist -> Un archivo descriptivo sobre los archivos que tiene el paquete descargado

Firmware/all_flash/all_flash.n45ap.production
applelogo.img2
batterycharging.img2
batterylow0.img2
batterylow1.img2
DeviceTree.n45ap.img2
iBoot.n45ap.RELEASE.img2
iBoot.n45ap.RELEASE.img2
manifest
needservice.img2
recoverymode.img2

Firmware/dfu
iBEC.n45ap.RELEASE.dfu
iBSS.n45ap.RELEASE.dfu
WTF.s5l8900xall.RELEASE.dfu

---------

Eso es todo lo que encontramos. Ahora bien, podemos profundizar más en cada uno de los archivos por separado.


022-3742-100.dmg:

Es la Imagen del OS. Contiene todos los archivos del sistema operativo. Es una imagen DMG estandar encriptada. Para poder acceder a los datos en ella se debe de desencriptar anteriormente. Es como si fuera una imagen de disco ISO o BIN. Las imágenes de disco en MAC son DMG. Cada imagen de OS de cada versión de firmware ha estado encriptada con una key diferente en cada ocasión. En esta ocasión, la key es la misma para tanto el iphone como para el ipod touch, y dado q la key se ha publicado en muchos lugaras, no voy a copiarla aquí, además de no saber exactamente lo legal q pueda ser, pero os dejo el inicio y fin para quien quiera buscarla.

key: 1107..5816

Como hemos dicho, para desencriptarla es necesario usar algún programa para DMG encriptados, como por ejemplo vdecrypt, q se puede obtener en muchso lugares, por ejemplo de aquí:

http://iphoneelite.googlecode.com/files/vfdecrypt.zip

Su uso es simple:

vfdecrypt -i [imagen encriptada] -o [imagen desencriptada ] -k [key]

Una vez realizado todo el proceso se puede montar la imagen o convertir a cualquier otro formato q queramos con dmgtobin por ejemplo. Dentro de la imagen tendremos todo, desde las aplicaciones, archivos de configuración... todo el OS del ipod.


022-3745-250.dmg y 022-3748-284.dmg:

Son las dos imágenes de disco de la ramdisk. La primera pertenece a la RAMDisk de actualización, y la segunda a la RAMDisk de restauración.

Una RamDisk es como un disco virtual q se carga en RAM, con estructura de disco, para proporcionar un acceso rápido a los datos q se almacenan en ella. Al apagar el dispotivio la ram se vacía, como siempre.

Cuando restauramos el ipod o lo actualizamos, se monta la ramdisk correspondiente en la ram del ipod. Una vez montada se ejecuta. Es la Ramdisk la q realizará toda la instalación del sistema. En la Ramdisk por tanto se encuentran los archivos indispensables y más básicos para poder montar la imagen del OS en el ipod, actualizar el baseband del iphone y otras rutinas de preparación. Cuando se termina la actualización/restauración, la ramdisk cargada se vacía y desaparece del ipod. tener acceso a la Ramdisk es lo más jugoso de todo, ya q modificandola se podría crear todo tipo de soluciones para liberar los iphone o hacer jailbreak. Precísamente es este método el q usa zibri para atacar la versión 1.1.3 directamente (sin hacer soft upgrade)

Estas imágenes están encriptadas tb. Pero a diferencia de la del OS q tiene un cifrado más débil, la RAMdisk, asi como la mayoría de todos los demás archivos dentro del paquete, se les denomina archivos tipo 8900 en honor al FourCC de ellos. Son archivos encriptados con AES-128, cifrado q no se toma en broma. Pero por suerte la key tb fue obtenida y publicada en muchos sitios

key: 1884..3774

Para desencriptar cualquier archivo 8900 tan solo se debe de aplicar un algoritmo de desencriptación AES-128, por ejemplo el mismo OpenSSL lo hace de la siguiente forma:

openssl enc -d -in [imagen encriptada] -out [imagen desencriptada] -aes-128-cbc -K [key] -iv 0

Y con eso obtendríamos las RamDisk para poder montarlas o conbertirlas o extraerlas.

Como hemos dicho, entre otras cosas se encuentra dentro de estas las firmware del baseband del iphone. El BaseBand es la firmware del modem del teléfono, quien gestiona toda la comunicación movil.


kernelcache.release.s5l8900xrb

Poco q decir de este archivo, es el nuevo kernel


Archivos img2:

Archivos tb encriptados tipo 8900. Una vez desencriptados no he logrado dar con el formato de archivo correcto, pero me da la sensación q no son más q imágenes. Imágenes q pueden necesitarse durante la carga, actualizació o restauración del ipod, como por ejemplo el logo de apple de la manzana, el logo de conexión a itunes, el de batería... de todos modos en cuanto me ponga pienos terminar por abrirlos.


Archivos dfu:

El ipod actua en tres modos de operación diferentes:

Modo de uso, q es el normal para nosotros, lo encendemos y entra en el ipod.
Modo de Reparación/Restauración: Se entra en este modo cuando por un mal funcionamiento se debe de restaurar el ipod completamente. Un mal funcionamiento o a drede.
Modo DFU (Device Firmware Update): Modo de actualización de firmware. Se entra en este modo por ejemplo al actualizar el ipod a una version superior o inferior.

Los archivos DFU son introducidos en el ipod antes q cualquier otro. estos inducirán al ipod a un modo u a otro. Digamos q son los q se encargan de decirle al ipod q se cambie de modo de operación y se prepare para una actualización o una restauración.

Un saludo.

---------------------

Y en realidad no hay más. Como podemos ver a nivel de software es una gozada, puesto q es todo relativamente simple de comprender. No lo es tanto ya todo el proceso de actualización/restauración, pero a groso modo es muy simple de verlo.

Para quienes sean curiosos tan solo tienen q descargar el paquete y desencriptar las imágenes de disco o los archivos sueltos para aprender un poco más como funciona todo, puesto q esto tan solo es algo introductorio.

miércoles, 13 de febrero de 2008

Unlock y Jailbreak para todas las versiones de iPhone (Actualizado)

Hace un par de días nuestro amigo Zibri sacó un método muy sencillo y rápido para hacer JB y liberar cualquier iphone, sin necesidad siquiera de pasar de una en una versión. Todo lo q se necesita es tener una versión 1.1.3 restaurada y su software. Es muy simple:

1º. Se necesita descargar el programita, tanto para Windows como MAC OS:

http://downloadziphone.org/ZiPhone2.3.zip

2º. Como he dicho tener un iPhone 1.1.3 sin JB
3º. Abrir el programa ziphoneGUI y marcar las opciones q deseemos, lo normal será querer marcar todas, incluyendo el modo debug (verobose).
4º. Darle a START. Al cabo de unos minutos el iphone se reiniciará solo y todo debería de estar funcionando correctamente

No tengo ningún iPhone, así q esto es tan solo informativo.

Parece cer q funcionaría tb para los Ipod Touch, pero dado q despues de hablar con muchos usuarios y el método funcionar a algunos si algunos no... no recomiendo hacerlo por ahora. En el caso del iPod touch tan solo tendríamos q marcar la opcion JailBreak y el modo verbose. Si todo funcionase bien el ipod arrancaría perfectamente con el Installer. Si no es así en la pantalla del Ipod tendríamos una y otra vez el mismo error:

"BSD root: md0, major 2, minor 0"

Llegados a este punto, tendríamos q restaurar con iTunes como tantas veces.

Un saludo amigos.

martes, 12 de febrero de 2008

Soporte Flash

Esta mañana al despertarme leía una noticia sobre soporte flash para nuestros dispositivos. Esto no tendría mayor importancia dado la tantidad de falsos rumores q siempre inundan este mundo. Pero parece ser q las noticias se consolidan poco a poco.

Flash ha sido sin duda la función mas solicitada para nosotros desde q saliera al mercado. Muchos dijeron q no había sido posible dado a el gran consumo de batería q ello requeriría. Pese a esto ser cierto, la verdad es q no se había incluido por problemas de negociaciones de Apple con Adobe. Recordemos q flash pertenece ahora a Adobe, y si cualquier productor quiere usar flash tiene q pagar.

Bueno, pues parece ser q estamos a punto de ver salir a la luz el soporte para flash, y no hablo de meses, sino de días o semanas. La especulación dice q a la vez del SDK, pero cada cual puede hacer sus propias quinielas.

Os dejo el enlace a la noticia:

http://www.gearlive.com/news/article/q108-flash-on-iphone-is-just-around-the-corner/
 
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.