viernes, 27 de junio de 2008

SDK Beta 8

Bueno, personalmente esta creo que sí será la última revisión del SDK y por ende de la firmware 2.0 antes del lanzamiento oficial.

Esta vez la firmware lleva por compilación "5a345" y al parecer a la par de esta (a mi parecer última beta) se ha entregado tambien una version de itunes 7.7 beta. Es muy posible que a la par que escribo estas líneas, el AppStore esté abierto y funcionando, aunq evidentemente no para nosotros, tan solo para los desarrolladores.

De todos modos esto tampoco es que sea de extrañar, el lanzamiento oficial del iphone 3G será el 11 de Julio y para entonces todo tendrá que estar listo. Luego no es raro de ver que al poco tiempo del lanzamiento de la firmware 2.0 aparezca una revisión nueva oficial a modo de actualizacion 2.01 o a saber, pero todo eso ya se verá.

Como nota curiosa, al parecer el nuevo itunes estaría preparado para ciertas aplicaciones de control remoto para iphone e ipod touch, incluyendo alguna gratuita.

Ahora tan solo queda ir pensando en cuanto tiempo pasará en tener un nuevo JB ;), yo digo una semana, tal vez dos?

Evidentemente mi recomendación personal será la de siempre. No actualizar ni itunes ni a la version 2.0 hasta que no se sepa y se tenga mas informacion sobre posibles problemas, JB, limitaciones... no es oro todo lo que reluce y se tengo q elegir entre el actual JB o la 2.0, evidentemente y de lejos me quedo tal y como estoy ahora ;)

Un saludo

domingo, 22 de junio de 2008

Feliz cumpleaños a mí!!



Otro año más conmigo mismo, otro año más para vivir, respirar, reir y sobre todo... ser feliz

miércoles, 18 de junio de 2008

Artículo: GMDT: Mapas y rutas a la carta sin wifi II



Hace tiempo dijimos la gran utilidad que puede tener Maps Offline. Pero evidentemente sin un sistema para poder descargar mapas a la carta y poder incluirlos posteriormente a nuestro dispositivo es un poco inutil.

Hace tiempo dije que colgaría un video mostrando el proceso de creación de un mapa de una ciudad completa, pero por tiempo y por ganas pues no ha sido así. No obstante creo que es algo bastante util para la mayoría, así que aunque sea en plan manual lo voy a explicar paso a paso.

La utilidad es doble. Por un lado podremos como he dicho meter un mapa completo de una región, y por medio de maps offile poder verlo y acceder a él sin necesidad de tener conexión. La segunda gran utilidad que muchos van a encontrar de interés, es la posibilidad de cargar mapas que no están en el servidor de google, pero que sí lo están en otros servidores. Luego aquellos que se encuentren en regiones por ahora discriminadas por google podrán tener sus mapitas.

Esto se puede combinar perfectamente con rutas personalizadas como las que crea la aplicación maps, y de este modo podemos tener en nuestro dispositivo mapas propios con sus rutas y consultarlas cuando queramos, hacer zoom... todo como si estuviesemos online. En el caso del iPhone sería posible usar también el posicionamiento por GSM, aunque no por WIFI en el caso del iPod Touch, esto es de cajon.

Sobre la opción del GPS en el iphone este método serviría solo a medias. El siguiente paso lógico sería preguntar: Pues cuando el iPhone 3G salga y fuera posible el JB, con estas aplicaciones podríamos tener los mapas de las zonas que quisiésemos y tener activado el GPS para una localización perfecta sin necesidad de comprar TomTom o similar. Si y no. Un GPS los únicos datos que recive son coordenadas geográficas de los satélites. Son los mapas que tenemos dentro de nuestro dispositivos los que a su vez tendrían que estar diseccionados por así decirlo en sus propias coordeadas. Este tipo de datos se llaman GeoData. El problema en españa es que los GeoData de españa no son públicos, y tener acceso a ellos requiere pagar. En EEUU por ejemplo no es así, y puedes descargar gratuitamente y sin problema los GeoData de todo el país. Con los mapas y los GeoData tendríamos un sistema GPS perfecto.

Quizás sea posible obtener los GeoData de otro modo, peto como digo, creo que ahora mismo en españa esto no es posible, que no quita que para muchos otros paises si que estén disponibles!!

Bueno, ya hemos explicado un poco todo esto y como vamos a trabajar. Así que lo que necesitamos antes que nada es una aplicación que nos permita tener acceso a una gran colección de mapas. Y por un casual la tenemos!! Vamos a usar Global Map Downlad Tool. Es una magnífica utilidad para descargar mapas de varios servidores y además nos permitirá convertirlos posteriormente para el iPhone e iPod Touch.

Es una aplicación creada para .NET con lo que será necesario tener instalado .NET Framework para poder usarla correctamente, yo aconsejaría tener instalado todas las versiones de .NET pero supongo que con la 2.0 sería suficiente.

Existe un pequeño problema de compatibilidad con Vista. Vista usa por defecto .NET Framework 3.5 y la aplicación no está compilada para 3.5, luego es posible que podamos observar algunos problemas con la aplicación.

Para descargar .Net Framework ->

3.0

http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=es

2.0

http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5

1.1

http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&displaylang=es


Personalmente en una máquina XP SP3 instalaría todos. Hay que tener en cuenta que uno no sobreescribe otro, sino que son complementarios.


Una vez estemos seguros de que tenemos .net framework instalado podemos instalar la aplicación:

AQUI

La aplicación la descomprimiremos en cualquier carpeta de trabajo y listo.

Una vez descomprimida ejecutamos Global Map Download Tool y nos encontraremos con algo como lo que tenemos al inicio de esta entrada. (Pulsar en la entrada si se desea ampliar)

Pese a lo complicado de la interfaz, en realidad es relativamente simple esta aplicación y con unos muy pocos pasos tendremos todo preparado.

1º. Lo primero será siempre seleccionar la base de datos de origen. A la izquierda del todo podemos observar que tenemos varias posibilidades:

a) Google Map: Terrain, Satellite o Hybrid. Lo cual se entiende perfectamente.
b) Micro$oft VirtualEarth: Sí, ya sabemos todos que MS tan solo se dedica a copiar ideas (al menos desde mi opinión) y no investiga ni innova nada. Pero bueno, es uan vuena alternativa allí donde Google no llega aun o algunas partes en las que las fotos satélite de MS son mejores.
c) USGS: Pertenece al ministerio de interior de EEUU. Puede ser una buena alternativa, sobre todo para EEUU.
d) ...

Bueno, no voy a ir describiendo cada una, todos los podeis ver en el panel de la izquierda.
La elección de uno a otro es importante. Primero porque muchas veces un proveedor no tiene los mapas que necesitamos, otras veces porque un proveedor particular ofrece mucha más calidad para una zona en concreto. Otras veces podemos encontrar también limitaciones en cuanto a descargas (más tarde hablaremos de esto). Lo mejor es jugar cada cual un poco con el programa y ver que tal. Personalmente los mejores resultados son evidentemente con Google Map y acudir a otro para zonas no cubiertas. Por principios no uso los de M$, pero esto es tan solo a modo personal.


2º. Una vez seleccionada la base de datos a usar, la página inicial nos cambiará y pasaremos a una especie de explorador incrustado en la misma aplicación. Es la forma de funcionar del programa para poder localizar facilmente la región a sacar. En mi caso como he dicho he usado Google Map, luego en mi pantalla tengo algo muy muy similar a la interfaz que tendría si acudiera a maps.google.com. Lo único que tengo que hacer es realizar una búsqueda normal y corriente. En mi caso tecleo: "Sevilla Spain" y enter. Inmediatamente el explorador incrustado me lleva al punto exacto:




3º. Ya tendremos más o menos localiza la zona que deseamos extraer, pero quizás no sea exactamente esa. Usando el botón Preview 1x podremos ir viendo si la zona es exactamente la que deseamos. Si no es exactamente la que queramos, cerramos la preview y con el pan (la manita) centramos un poco mejor la zona. De nuevo le damos a preview a ver si ahora es la que deseamos. Muchas veces esto es un poco impreciso, ya que el preview no se ajusta exactamente a lo que tenemos en pantalla. La preview es la que tenemos que atender siempre. En mi caso tambien he seleccionado la opción Hibrid para que al extraer los mapas tambien me saque el callejero. Ojo que esta opción NO me permitirá conmutar una una vez en la aplicación map entre calles o solo satélite!! esto es posible hacerlo tambien (luego lo explicaré), pero para ahorrarme consumo en Megas, prefiero sacar tan solo un mapa con el callejero integrado. Yo he delimitado la zona para sevilla, de tal forma que tambien se incluyan algunos alrededores, y por supuesto mi localidad, DH. Recordar que en el mapa podemos hacer tambien zoom a una zona más concreta si así lo deseamos y el mapa será mucho menor en tamaño, mucho más rapido en descargarse etc... pero puestos a hacerlo, yo lo hago todo a lo grande, así que sacaré un buen mapa ;). Aunque no se encuentra aun en mi captura, es necesario establecer un directorio de trabajo donde se guardará nuestro mapa. Dicha opción está en medio prácticamente de la aplicacion. Tendremos que darle a "Set Dir" y seleccionar el directorio que deseemos.


4º. Llegado a este punto tendremos ya delimitada la zona perfectamente. Una vez estemos a gusto con la zona a extraer le daremos al botón superior derecho: "Download The Map". Al darle a dicho botón nos aparecerá una nueva ventana la mar de curiosa. En ella podremos seleccionar el nivel de Zoom (o profundidad) que deseemos. A lo mejor tan solo deseamos un Zoom X1 o X2 para tener un mapa genérico de la zona sin mucho detalle. O a lo mejor por el contrario deseamos una zona muy detallada y deseamos todos los niveles de profundidad.

Por otro lado también nos permite seleccionar el sector que deseemos. Ya sé que hemos delimitado la zona anteriormente, pero esto puede ser una zona muy grande. Marcando o desmarcando los sectores haremos que estén luego disponibles para nosotros. Es una forma muy eficiente de eliminar los sectores que no vamos a usar y así ahorrar muchísimos Megas de espacio. La Captura sacada en mi caso no se corresponde con los sectores que he extraido, en ella se encuentran todos marcados, en cambio mi mapa extraido hay muchos sectores que no están incluidos. A fin de cuentas hay "zonas muertas" en las que no tengo ningún interés en ellas o alguna población menor alejada que tampoco me interesa. Todo ello hace a lo mejor que mi mapa final sea la mitad de lo que sería originalmente:


Una vez terminemos de seleccionar o deselecionar los sectores deseados, tan solo nos quedará darle al botón superior en la ventana de los sectores: "Uncheck any tittles...." Nada más presionar el botón, comenzará la descarga del mapa. Esto puede ser un proceso largo, dependiendo de lo grande que sea nuestro mapa fabricado, del nivel de profundidad de cada sector, de los sectores...


5º. En quito lugar tenemos la descarga. En cuanto presionemos el botón citado comenzará el proceso de descarga. En teoría no tendremos que hacer nada más hasta que la descarga termine. Arriba a la derecha aparecerá el estado de descarga, el sector que se está descargando, los sectores totales, los sectores ya descargados. Aquí hay una pequeña limitación lógica, al menos para Google, y posiblemente para otros también. Google para evitar la saturación de sus servidores impone un máximo de ancho de banda por IP en un determinado tiempo. Con esta medida de proteccion Google evita precisamente que hagamos esto. No es que el límite sea muy escueto, para nada, es bastante amplio. Pero evidentemente estamos descargando de golpe zonas completas!! y es bastante posible (dependiendo del tamaño de la zona) que el servidor corte el grifo. Si esto ocurre el programa nos lanzará un error y la opción de darle a aceptar. Si le damos a aceptar intentará descargar el sector siguiente. El problema es que si nos aparece este error, sabremos que Google ha baneado temporalmente nusetra IP, y lo que nos queda son dos opciones:

a) Esperar que google la desbanee, supongo que esto sucedería en media hora quizás unas horas
b) Si tenemos una IP dinámica con desconectar y conectar de nuevo a nuestro ISP sería suficiente para tener una IP nueva, y con darle a aceptar al cartelito que nos lanzó el error es suficiente para continuar la descarga
c) Para quien tenga una IP estática la única posibilidad si no quiere esperar es usar servidores proxys. El problema es que estos suelen ser relativamente lentos. Pero también es verdad que tenemos cientos o miles de servidores, es cuestion de encontrar uno decente.

Hay q tener presente que este procedimiento es posible que tengamos que repetirlo más de una vez o no, como digo, depende del tamaño de la región que estemos creando.

En mi caso he tenido que hacer un cambio de IP unas 5 veces:


Si nos fiajos como he dicho arriba a la derecha veremos el porcentaje descargado. Al terminar de descargar todo el mapa, si ocurrió algun error en la descarga de algún sector nos preguntará si deseamos volver a descargar los trozos erroneos.


6º. Una vez descargado todo el mapa, tan solo nos quedará convertirlo para que nuestro dispositivo sea capaz de leerlo en el formato que usa. La misma aplicación nos deja hacerlo de manera automática, casi tan facil como presionar un botón.

Sabremos que la descarga a terminado además porque nos aparecerá un mensaje diciendo lo propio. Hay que tener en cuenta que en cuanto termine de descargar todo tardará un poco en reensamblarlo todo. Cuando aceptemos el cartelito de mapa descargado tendremos que darle al botón ->Iphone:


Lo normal es que nos aparezca en la primera linea el directorio de trabajo. Si lo dejásemos así, nos crearía en nuestro dispositivo el mapa en la sección de callejero. Como el mapa que yo he creado es híbrido lo pongo en híbrido. Tambien se debe de seleccionar la carpeta de destino donde se generará el resultado final.

Una vez acabado todo, le daremos para finalizar del todo a Process.

Hay que tener en cuenta que el proceso puede tardar un poco en la conversión. Es cuestión de esperar hasta que se termine toda la conversión. Cuando la conversión acabe completamente, se habrá generado un archivo que será el que subiremos a nuestro dispositivo para ser usado por MapsOffiline.

Recordar que en la versión más actual del MapsOffline, el archivo habría que introducirlo en:

/private/var/mobile/Library/MapsOffline/Cache

Al acabar tan solo tenemos que recuperar el archivo creado y listo. En mi caso el archivo final ha sido de 260MB y tengo incluido todo sevilla capital y unas 5 localidades.


Un saludo y hasta otra.

martes, 17 de junio de 2008

Artículos: Fuentes personalizadas

Como sabeis, hace tiempo pusimos la aplicación FontSwap para poder modificar la fuente (estilo de letra) a nusetro iPod. El problema que tiene esta aplicación es que si se utiliza de forma erronea puede llevar a darnos dolor de cabeza y algunos cuelges muy bonitos, por eso su creador la quitó de su repositorio (por eso lo añadí yo al mío). Una de las mejoras que su autor quiso implementar fue la posibilidad de añadir otras fuentes.

FontSwap nos permite alternar entre una fuente u otra, pero siempre dentro de las que está en el mismo dispositivo, y lo ideal claro está es añadir las fuentes que deseemos nosotros mismos.

El único problema del proceso es que si la fuente copiada no es renderizada en una máquina MAC nuestro dispositivo se va a colgar. Como podemos saber si la fuente que queremos añadir es soportada? no lo sabemos, prueba error. La mayoría usamos máquinas windows. O podemos buscar por google fuentes para mac, y así nos curamos en salud.

Aviso que no me hago responsable de ningún cuelge. Si queremos curarnos en salud, lo mejor será hacer antes una copia de seguridad de los archivos q vamos a modificar y si algo no funciona bien, podremos entrar aun así por SCP o SSH y restaurar los originales, así podremos "jugar" todo lo que queramos de forma segura.

El proceso será simple:

1º. Buscaremos por inet, PC la fuente que queramos añadir y si podemos asegurarnos de que la fuente es legible por MAC mejor que mejor. (Más que nada porque windows suele usar fuentes tipo OpenFont y MAC TrueType).

2º. Una vez encontrada la/s fuentes que deseemos las copiaremos por SCP al iPod Touch/iPhone en /System/Library/Fonts/Cache

3º. Modificaremos el archivo CGFontCache.plist que está en /System/Library/Fonts/Cache. Este archivo contiene el listado de fuentes definidas en nuestro dispositivo, con lo que tendremos que añadir nuesrtas fuentes a este archivo. Este archivo es crucial, si la fuente que estamos añadiendo no es soportada, al aplciarla con FontSwap (por comodidad) tendremos una "rueda de la muerte". Aun así podremos acceder por SCP o SSH y restaurar este archivo, con lo que es crucial mantener una copia original de este archivo.

Como vamos a modificar este archivo? muy simple. Este archivo se divide en dos partes. La primera simplemente nombra cada fuente, y la segunda la define:

.Helvetica LT MM
/System/Library/Fonts/Cache/HelveLTMM.ps
.Times LT MM
/System/Library/Fonts/Cache/TimesLTMM.ps

Como podemos ver en esta parte tan solo lista las fuentes. Aquí es donde tendremos que añadir nuestra fuente. Por ejemplo si quisieramos añadir una fuente llamada "rune.ttf" tendríamos que añadir las siguientes lineas EN ESTA PARTE, NO EN LA OTRA:

Runas
/System/Library/Fonts/Cache/rune.ttf

Y guardaríamso el archivo.

La otra parte del archivo son las definiciones de cada tipo de fuente, diciendo que clase de fuente es, si está en negrita, cursiva... esa parte no será necesaria de cambiarla, puesto que es la parte que se encargará de modificar FontSwap, así que no vamos a hacer las cosas por duplicado. Podríamos definirla en ese listado también y consegiríamos que cualquier aplicación , pero no nos sería nada util, ya que las aplicaciones de Apple aunque podrían perfectamente establecer esa fuente, evidentemente no se hacen pensando que algunos usuarios tienen más fuentes instaladas. Luego es un poco inutil declararlas. Las declaraciones estan en la otra parte del archivo y son de este tipo:


Bold
ArialBold
Bold-Italic
ArialBoldItalic
Italic
ArialItalic
Plain
Arial


Como hemos dicho, podríamos declarar la nuetra, pero no es necesario


4º. Una vez tengamos realizado la copia de las fuentes y la modificación del archivo, tan solo queda añadir la fuente en el FontSwap. FontSwap lo único que hace es editar el archivo que hemos editado con anterioridad, y cambia en la definición de las fuentes la fuente a usar. Por ejemplo:

Sabemos que la fuente Helvética es la que usa todo el sistema. Si en la declaración de al fuente helvética le decimos que la fuente a usar sea Runas, el sistema irá preparado para cargar helvética, pero premio!! como fontswap lo ha modificado, no cargará helvetica, cargará Runas.

Como hemos dicho tendremos que modificar dos archivos de la aplicación FontSwap. En realidad es hacer básicamente lo mismo que hemos realizado en el archivo antes editado. Los dos archivos a editar en FontSwap están en /Applications/FontSwap.app/files

traitMapNames.plist lo editaremos para añadir nuestra fuente exactamente igual que hicimos en el archivo "CGFontCache.plist", solo que no tendremos que poner ya la ruta de la fuente, puesto que esa tarea ya la realizamos. Este archivo es necesario editarlo porque será el q nos liste nuestra fuente en el FontSwap

traitMapDefs.plist lo editaremos para definir nuestra fuente. Es la parte que no cambiamos en el archivo CGFontCache.plist y que si modificaremos aquí. La sintaxis es muy simple, el nombre acompañado del tipo de fuente que es, en el caso de que tengamos por ejemplo: runebold.ttf runecorsive.ttf... sabremos por ejemplo que una es la usada para negrita y la otra para curvisa. De todos modos la mayoría de las fuentes no tienen diferentes tipos, luego lo más normal es que tan solo tengamos que añadirla en la parte de plain:

Ejemplo de fuente de varios tipos:

American Typewriter

Bold
AmericanTypewriterCondensedBold
Plain
AmericanTypewriter


Ejemplo de nuestra fuente añadida:

Runas

Plain
Runas


Y listo. Hemos acabado

Abriremos FontSwap y podremos seleccionar nuestra nueva fuente, hacemos un respring y si la fuente es soportada como hemos dicho desde un principio, tendremos la nueva fuente instalada y funcionando.

lunes, 16 de junio de 2008

Firmware 2.0: Como están las cosas II

Bueno, como dijimos hace unos días la beta 7 de la firmware 2.0 se había hecho pública. Poco se sabe de momento sobre posibles JB en el caso de ipod Touch y JB y unlock en el caso de iphone. Pero lo que sí es cierto es que al menos zibri no está de brazos cruzados, y hasta la fecha, la firmware 2.0 beta 7 ha sido correctamente desbloqueada y JB sin problemas.

Ya dijo Zibri que de todos modos no veríamos un ziphone nuevo hasta pasado cierto tiempo. Pero son buenas noticias.

Los chicos de Winpwn por otro lado, deberían de estar trabajando igualmente en su solución. Dado que el bootloader no cambia, el trabajo a realizar sería en teoria poco.

De todos modos esto en ningún caso es aplicable al iphone 3G. Aunq es muy posible que la firmware de serie del 3G sea la misma del iphone no 3G, el chip del teléfono en sí es diferente, y posiblemente el bootloader del teléfono sea diferente tb. Posiblemente la solución para el iphone 3G venga más adelante, despues de que podamos realizar JB a los ipod touch 2.0 y a los iphone no 3G

miércoles, 11 de junio de 2008

Customize 2.0 RC1.2: 5 Iconos en el Dock (Actualizado)



Iba a poner algunas imágenes del nuevo Customize 2 RC1 que añade una pequeña aplicación llamada Freeboard que sustituye al viejo summerboard y permite 5 iconos en el dock. Pero después de que mi hermano sacrificara su iPhone y despues de leer problemas y más problemas prefiero no poner nada aun hasta que no corrigan los fallos.

Entre otros problemas que podido encontrar, al habilitar o deshabilitar freeboard, no lo hace correctamente y daña el servicio SpringBoard, provocando un cuelge completo y haciendo necesario o restaurar algunos archivos por SSH si es que se tenía activo wifi o restaurando. Luego por ahora absteneros de instalarlo, actualizaré esta entrada con más información

Un saludo

Edito: Ademas del problema explicado, por lo visto tambien parece que al deshabilitar Summerboard para habilitarse a si mismo, Freeboard no corrige como Summerboard el límite de 80 aplicaciones que impone Apple.


Edito 2: Bueno, han sacado una actualización RC 1.2 que permite simultanear SummerBoard con FreeBoard, de este modo se puede tener más de 80 app instaladas y usar a la vez freeboard, eso si, me parece una opción un poco cutre por ahora, pero funciona, aunque a costa de más memoria. Pero aun está el problema de desactivarlo. Al desactivarlo hay que estar seguro que hemos revertido anteriormente al estado de 4 iconos, y por seguridad guardar una copia de seguridad del archivo /System/Library/LaunchDaemon/com.apple.springboard.plist


martes, 10 de junio de 2008

iPhone 3G: Precios? Contratos leoninos?

Esta vez desde Tuaw un lector enviaba los planes de precios que manejará Telefónica O2, en Inglaterra. Para aquellos que pensaron que entrarían en la tienda y se lo llevarían sin más por un precio de 150€? 200$?. Una imagen vale más que mil palabras:


Quien quiera puede visitar la página de O2 si lo desea:

http://www.o2.co.uk/iphone/paymonthly

O2 es de Telefónica, luego esto deja a relucir más o menos como serán las cosas aquí en españa. En otros paises será muy similar.

Y sí, lo habeis visto bien, en ciertas modalidades se ofrece el iphone "gratuito", y lo pongo entre comillas porque aunque no pages insitu por el, bien lo vas a pagar a 75 libras al mes ;) (segun precios de O2)

El problema es que ahora si quieres un iphone vas a tener que firmar, aunque evidentemente va a suponer también un descenso en las ventas más que considerable. Si hay muchas personas que en un momento dado pueden permitirse pagar 300€ por un terminal, pero pocas van a permitirse pagar a lo mejor 50€ al més 600€ al año por un terminal, para que encima, cuando estés aun con el contrato atado saquen otro iphone mejor u otra historia.

Esta vez ha sido Apple quien se ha bajado los pantalones frente a las compañías telefefónicas ;), no se puede ganar siempre, chicos de cupertino.

Texas Hold'Em


Aunque mucho ha tardado en aparecer, ya está disponible la primera beta del primer juego de poker, y lo hace en su versión más común, el Texas Hold'em.

Tiene muy buena pinta, si bien es cierto que aun tiene algunos bugs de programación y aun tiene que evolucionar mucho, pero como primera aproximación no está nada mal.

No voy a poner las reglas ahora de Holdem, pero vamos, no es que tenga mucha ciencia, básicamente se juega con tus dos cartas y 5 en la mesa. Lo teneis disponible en el repo de ModMyiphone:

http://modmyifone.com/installer.xml

O quien lo prefiera puede descargarlo manualmente e instalarlo como siempre desde:

http://modmyrepo.com/zips/THTouch-0.28.zip




lunes, 9 de junio de 2008

SDK Beta 7

Muchos estábamos casi seguro que despues del Keynote de hoy la firmware 2.0 saldría... pero no ha sido así. Al menos de momento. Pero con la salida de una séptima beta del SDK está todo bastante mas claro.

Hace algun tiempo, con la Beta 6 ya dije que casi seguro no iba a estar para primeros de mes. Si el iPhone 3G estará disponible a la venta desde ya de todoso modos en EEUU, la version 2.0 debería de estar a lo largo de un dia o dos sin embargo.

Lo cierto es que el SDK tiene nueva beta. Lo que no se seguro es si este SDK tambien trae de la mano otra beta 7 del firmware 2.0

WWDC '08

Edito: el iphone 3G estará disponible en españa a partir del 11 de Julio, no solo en españa, será el lanzamiento oficial.
Edito 2: La firmware 2.0 parece que se demorará hasta primeros de Julio

Resumen:

En teoría salida inmediata de:

Snow Leopard
iPhone 3G: 199$ 8Gb, 299$ 16Gb. Negro, con GPS y mejor altavoz básicamente
Firmware 2.0: Gratuita iphone, de pago iPod touch a 9.95$:

Calculadora cientifica
Exchange
Funciones empresariales: VPN, EAP, Push...
Guardar imágenes desde safari
Safari abrirá powerpoint ademas, y los PDF (creo) que podrán paginarse
Reconocimiento de texto para japones/chino
AppStore, via wifi y muy similar al Installer.


AppStore: Aplicaciones gratuitas si los programadores así lo quieren, Apple les permite la opción. el 30% es para apple, si valen 0, apple se lleva... 0

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

Dentro de menos de una hora comenzará el esperado Keynote, protagonizado como es costumbre por su Presidente Steve Jobs. Dentro de no más de una hora estoy seguro que aparecerán en todos lados las primeras noticias oficiales sobre las novedades que tenga que decir Steve.

Por ahora lo único curioso es que desde hace un rato, el Apple Store está cerrado ;) en la medida que pueda iré haciendo un seguimiento de todo el keynote por si alguien está interesado, así que iré editando esta misma entrada a la par que voy conociendo algo nuevo. Todas las horas son respecto GMT+2 (hora española)

19.00 - Comienza el keynote, todos dentro, Steve como siempre, pantalones vaqueros, camisa negra

19.10 - Steve anuncia la nueva versión de MAC OS: Snow Leopard

19.12 - Ahora sobre las nuevas funciones de la firmware 2.0, que han dividido en tres partes: Funciones para empresas, para SDK y para el usuario final... y describiendo: Exchange, Cisco VPN...

19.22 - Siguen con la firmware 2.0 hablando sobre lo bien que han creado el SDK y esas cosas, nada en particular

19.30 - App para Ebay?

20.00 - Estan enseñando una tras otra muchas aplicaciones que aparecerán en el AppStore, lo que no se sabe es cuando.

20.07 - Funciones nuevas: Motor de búsqueda para los contactos, soporte para todos lso documentos de apple, y Word, exell, ypowerpoint

20.08 - Opciones para guardar imágenes directamente desde safari o el correo, control parental, borrar y eliminar desde el correo electrónico, calculadora cientifica y reconocimiento de texto escrito para caracteres chinos/japoneses

20.11. .- Las app se podrán distribuir libremente si los desarrolladores quieren

20.12 - La firmware será GRATUITA PARA IPHONE, $9.95 para iPod Touch

20.26 - Está explicando la cantidad de utilidades que puede tener el Push del calendario, es decir, sincronización remota de calendario, ¿quizás tb contactoS?. Si, para contactos, correos...

20.31 - iPhone 3G

20.33 - De momento parece que será en negro, camara igual, sin GPS.

20.34 - Será mas delgado, han corregido el jack para los auriculares (tan solo podian meterse los de apple, era un coñazo), y el audio es mucho mejor (el auricular externo)

20.38 - Se ha logrado un consumo de energía muy eficiente, aumentando en mucho las horas en espera y en conversacion cuando se está bajo 3G

20.40 - GPS

20.45 - 199$ el iPhone 8Gb, 299$ el de 16Gb

20.50 - Fin del Keynote

domingo, 8 de junio de 2008

Mañana comienza la WWDC: iPhone 3G? Firmware 2.0?

Mañana comienza como está previsto la WorldWide Developers Conference. Todas las malas lenguas (y las buenas tambien) presuponen que será la fecha elegida por Steve Jobs para hacer pública algunas noticias a destacar.

Estos días han aparecido rumores, fotos, especificaciones... de todo. Todo por supuesto del inminente iPhone 3G y la firmware para iPod Touch e iPhone 2.0.

Esta claro que hay una gran cantidad de incognitas que no han dejado de circular estos días, algunos rumores incluso contradicen otros, todo parece estar muy en el aire. Las preguntas que más voz tienen son, evidentemente obiando el si se hará mañana publica la salida del iphone 3G o la firmware 2.0:

1º. Tendrá el iphone 3G GPS? Se podrá grabar video? mejor camara tal vez?
2º. En caso de poder grabar video el iPhone 3G, será exclusivo de él? tendrá el iphone 3G una formware específica o usará la misma que la del iphone actual?
3º. Tal vez reproductor flash para safari? pero exclusivo o no del iphone 3g?
4º. Se abrirá con la salida de la firmware 2.0 el appstore? que precios?
5º. Cuanto tiempo tardaremos en ver el iphone 3G liberado y JB? o la version 2.0 en caso de no ser la misma?

Lo que parece estar completamente claro es que el procesador central del iphone 3G, así como el 90% de este es exactamente el mismo que el iphone actual, luego si le incorporasen reproductor flash u otras funciones esto no debería de ser exclusivo al iphone 3G.

Pero Apple funciona a veces de manera extraña, y si es bien que puede sorprender para bien a todos sin exepción, tambien es cierto que sabe hacer como desilusionar al publico con medidas absurdas.

De cumplirse las sospechas, lo más posible es que el mismo Steve sea el que de la noticia mañana, aunque la WWDC no es solo un día y se extenderá hasta el viernes. Así que supongo que mañana estaremos muchos con un oido aquí y otro en el complejo de Moscone, en San Francisco.

Un saludo.

sábado, 7 de junio de 2008

Traducción al ingles: Gracias!!

Bueno, desde aquí quiero aprovechar y darle las gracias a los amigos "...JoGo..." y a "El DeBilbao" que se han puesto manos a la obra para traducir el blog al inglés. Es mucho lo que escribo y creerme que no es un trabajo para nada agradable el pasarlo a otro idioma, y me están ayudando con la traducción. Quizás un día pueda tener el blog duplicado para nuestros amigos los hablantes ingleses :)

Aun así seguiré buscando más personas que quieran contribuir, cuantos más seamos más posible será acabar con el trabajo atrasado y poder tenerlo al día, así como menos trabajo para cada uno de ellos. Ni les pido mucho ni les pido poco, tan solo lo que ellos puedan en la medida que quieran y les apetezca, sin compromiso ninguno y con toda la gratitud del mundo.

Así que si cualquier otro quiere animarse que me escriba un correo y me lo haga saber, que como digo es muchísmo lo que está ya escrito.

La verdad es que el blog comenzó tan solo como algo curioso, y sin embargo lo miro ahora y digo: Vaya...

Me alegro con que alguno pueda aprender algunas cosillas y compartir lo más importante que se puede tener: El conocimiento.

Saludos.

viernes, 6 de junio de 2008

San Theliel!!

Feliz Feliz en tu día
Amigito que dios te vendiga
Que reine la paz en tu día
Y que seas muy feliz


jueves, 5 de junio de 2008

Artículo: La importancia de la seguridad III: Ejemplos reales. Paranoia o realidad?

Como datos curiosos antes de comenzar y lo que me llevó a escribir las dos partes anteriores son unos datos cuanto menos curiosos que he recogido en un día, así también para aquellos que crean que tan solo paranoias exajeradas de un hacker reprimido (a modo de experimento tan solo y jamás sin causar daño alguno) hice algunas pruebas en la red wifi de una escuela de ingenieros aquí en sevilla para comprobar la seguridad de estos iPod/iPhone. El proceso fue muy simple y los resultados increibles!! Tan solo decir además que TODO el proceso lo realicé además tan solo con mi mismo iPod Touch, ni siquiera un portatil de apoyo, para que podais comprobar el potencial de un aparatito como este y de como son las cosas.

Lo primero fue realizar un escaner dirigido a toda la red de la escuela sobre puertos concretos que sé de antemano que el iphone y el ipod tienen abiertos, de este modo no me hace falta siquiera un fingerprint (una huella) que me diga si el dispositivo es un iphone/ipod, además un escaner así requeriría mucho tiempo y sería más ruidoso para un firewall. Por el contrario si pregunto sobre puertos clave que sé que estarán abiertos, el existo es casi del 99%, además de realizar un escaner muy muy rapido y casi completamente silencioso, ya que tan solo pregunto por un puerto o dos, lo cual no llamaría la atención ni al mejor firewall del mundo:

nmap -sS -p62078,22 10.0.0.0/8

Ello realiza un escaner sencillo al puerto 22 (SSH) y al puerto 62078. Este ultimo extrañamente se usa para la sincronización con itunes. Lo que no se comprende es porqué este puerto está abierto al exterior siempre en vez de tan solo internamente. Lo cierto es que ese número mágico nos sirve para identificar cualquier ipod/iphone. Porque? porque el 99% de todos los dispositivos con ese puerto abierto, es un iphone/ipod. Es un puerto muerto que no se usa para nada a menos que se asigne manualmente para algo. Y sería mucha casualidad precusamente que un PC, portatil o demás en ese momento usara precisamente ese puerto. Y si se quiere una mayor confirmación basta con realizar otro escaner, esta vez a un puerto UDP:

nmap -sU -PN -p5353 10.0.0.0/8

El puerto 5353 UDP es conocido bastante sobre todo en MAC, es un puerto encargado de la autoconfiguración de red y resolución de DDNS (si, DDNS, no DNS) que usa apple y su servicio mDNSrespond.

El caso es que después de esos dos escaner la primera sorpresa que tuve fue lo extendido que es el iphone/iPod Touch. Realicé dos escaners, cada uno a horas diferentes. En total contabilizé 18 ipod/iphone diferentes, de los cuales:

15 tenían el puerto SSH abierto, luego era ipod/iphone JB
3 el puerto cerrado, es posible que JB realizado es posible que no.

Desde mi mismo ipod inicié una simple conexión SSH directamente a sus ipod/iphone:

ssh 10.x.x.x

los 15 permitieron el acceso por root. De los cuales 6 respondieron a la contraseña antigua 'dottie' y el resto a la nueva "alpine". Ya solo con eso me dice que versión de software. Y para verificar que todo era correcto, realicé una copia de un archivo sin información sensible, pero para poner en conocimiento de lo que estaba sucediendo:

scp root@10.x.x.x:/System/Library/CoreServices/SystemVersion.plist 1.txt

Bingo!! con la contraseña por defecto podía copiar archivos desde su terminal al mío, sin que nadie lo supiese. Que hubiese pasado si en vez de ese archivo sin importancia fuera una copia de su agenda? llamadas? calendario? fotos? videos? o mejor aun!! que hubiese pasado si entro por ssh a su terminal y escribo:

rm -rf /

el resultado sería que el iphone/ipod se le congelaría. Ese el efecto inmediato. El efecto real es que al ejecutar ese comando con permisos de root eliminaría todos los archivos no en uso en ese momento del dispositivo. digamos que es algo parecido a un format.

Evidentemente no quiere decir que exista siempre una persona detrás de cada puerta esperando... ni que a cualquier persona le pueda interesar lo que otro tenga ni... es un poco más complejo de la simple curiosidad. Colocar un Sniffer en una buena red puede ser muy facil, pero ello tan solo nos da acceso a datos transmitidos. En este caso hablaríamos de problemas críticos, ya que tendríamos acceso completo al sistema.

Pero el peligro es aun mayor. Tan solo he puesto de ejemplo como copiar un archivo o eliminar todo el sistema. Pero cualquier hacker o persona interesada sería más listo. Por ejemplo se me ocurre activar tcpdump como sniffer y capturar todo el tráfico de su dispositivo para pilalr contraseñas y usuarios, así como crearle una puerta trasera para poder conectarse despues aun si ha quitado SSH, sería muy simple hacerlo con netcat.

Las posibilidades son inmensas.

Muchas veces uno se ha quejado siemrpe de los virus, exploits, malware, spyware, troyanos, backdoor... pero para el 98% de todos los posibles ataques hay medidas igualmente de efectivas de prevenirlos, tan solo hay que tener prudencia.

Esto quiere decir que SSH es el enemigo? no, para nada, SSH es una herramienta potentísima para nosotros mismos, tan solo hay que usarla sabiendo lo que se hace. Si se aplican los sistemas de protección pertinentes la seguridad está garantizada al 99%, y digo 99% porque siempre habrá alguien más listo que tú que podrá comprometer tu sistema sin esfuerzos, eso es la primera ley de la vida, siempre hay alguien que sabe más que tu.

Un saludo a todos.

iPhone 3G: Patentes al descubierto? no GPS sí Flash?




Me he pasdo por el blog de Zibri y me he encontrado con una interesante entrada que no había visto. Sea cierto o no, si es verdad que Apple ha registrado un par de patentes referentes al iphone 3G y de ser ciertas no tendría GPS como se ha especulado, aunque si incluiría reproductor flash y WindowsMedia.

Siempre soy reticente a decir que hasta que no esté en la calle, nada es de fiar. Sobre la reprodución flash y windows media parece lógico pensar que estaría disponible para todos los iphone e ipod Touch, dado que en principio es una solución software. De ser todo cierto, por ahora lo único diferente en cuanto hardware seguiría siendo el chip 3G.

Otra posibilidad es que con la salida del iphone 3G se creen dos firmwares completmaente independiente, uan version 2.0 para iphones EDGE e ipod Touch y otra para los 3G, pero me extrañaría mucho.

Otra cuestion que quedaría por aclara es que por ahora en ninguna versión beta se ha incluido soporte para Flash, aunque sí se han visto imágenes para 3G. Tambien es verdad que apple podría tener el AS en la manga de guardar algunas características sorprendentes de la versión de software 2.0 que no ha querido distribuir con las betas para sorprender a todo el mundo.

Quien sabe...

Artículo: La importancia de la seguridad II: SSH y RSA/DSA

SSH y SFTP son los dos métodos para el acceso a los datos de nuestro dispositivo. SSH lo usamos para obtener una shell y SFTP para copiar datos desde un dispositivo a otro.

Estos dos servicios son implementados gracias a OpenSSH, un servicio-aplicación instalada casi obligatoriamente para un sin fin de usos. Para los menos dados normalmente tan solo usarán SFTP, para el usuario medio/avanzado usará igualmente SSH. Pero cualquiera de los dos métodos funciona "igual".

El mayor problema de OpenSSH es evidentemente la seguridad. Como cualquier método de acceso remoto, exponer abiertamente nuestro jugete al alcance de cualquier hacker de tres al cuartos puede ser algo peligroso, más si en nuestro dispositivo guardamos datos comprometidos o sensibles. Al tener habilitado OpenSSH implica que cualquier persona que esté en ese momento en nuestra misma red (o en WAN si hay tráfico dirigido) puede intentar acceder (con o sin exito) a nuestro iPod Touch/iPhone. Y a ello podemos sumar además la inseguridad en sí de una conexión wifi.

Aquí no vamos a explicar como securizar una conexión wifi, pero al menos como poner las cosas más complicadas para los demás y más facil para nosotros, a la hora de tener acceso a nuestro dispositivo.

Nos enfrentamos a algunos problemas graves de seguridad:


1º. Contraseñas y nombres de usuario por defecto

Por defecto hay dos cuentas principales de usuarios. La cuenta 'root' (administrador) y la cuenta 'mobile' (limitada). Pero para ambos la contraseña es 'alpine'. El primer problema es que el 90% de las personas no cambian la contraseña por defecto (añadir o cambiar los nombres de usuario es más sucio). Esto significa que cualquier persona conectado a la misma red en ese momento, desde otro iPod/iPhone, PC, PDA... podría conectarse sin problema a nuestro dispositivo con los credenciales por defecto!! Lo que quiere decir es que podrían desde copiarnos datos sensibles, información personal, eliminarnos archivos, agenda, calendario, llamadas...

Tan solo modificando la contraseña de LAS DOS CUENTAS estaremos interponiendo la primera barrera. Tener en cuenta que es muy facil para un hacker mediocre hacer un escaner rápido en una red y ver los iPod/iPhone conectados a ella. Imaginaros en la universidad por ejemplo, o en la empresa. La probabilidad de encontrar alguien con un dispositivo conectado y vulnerable son muy altas, y eso sin contar con otro tipo de técnicas.

Como he dicho es necesario modificar la contraseña de las dos cuentas. Aunque muchos incluso no lo saben, no solo podemos acceder co la cuenta de 'root'. Podemos acceder perfectamente también desde la cuenta 'mobile' aunque evidentemente tendremos ciertas restricciones.

Comenzando por este punto, para modificar la contraseña tan solo necesitamos tener instalado Cydia. Y digo Cydia porque no es posible hacerlo con BSD Subsystem. Las utilidades de BSD Subsystem estan llenas la mayoria de fallos, y en este caso lo está la herramienta 'passwd'. Si lo intentamos con BSD tendremos una bonita "rueda de la muerte". Así que presuponemos que tenemos Cydia. Lo único que tendremos que hacer será entrar por SSH con el usuario root. Una vez hayamos entrado, tan solo tenemos que teclear el comando: "passwd". Una vez tecleado el comando, el dispositivo nos pedirá por la nueva contraseña, la cual deberemos de introducir dos veces. Una vez realizado la contraseña se habrá cambiado con éxito.

Como he dicho sería necesario modificar igualmente la contraseña del usuario 'mobile'. Para ello tan solo tenemo que hacer lo mismo, entrar por SSH pero con el usuario mobile. Una vez dentro teclear de nuevo el mismo comando. En este caso sí nos pedirá antes de permitir cambiar la contraseña la contraseña antigua. Recordar que por defecto, tanto para mobile como para root la contraseña es 'alpine'. Cuando acabemos este simple proceso la contraseña será aquella que elegimos.


2º. WIFI y SSH innecesario las 24 horas

Evidentemente para evitar posibles ataques hay que no dar pie a que puedan entrar. Hay dos "barreras" lógicas. La primera es SSH y la segunda WIFI.

OpenSSH es un demonio que se carga al iniciar el dispositivo y permanece a la escucha sobre el puerto 22, que es el común para transmisiones SSH. Al detectar tráfico por ese puerto se activa. Contrariamente a lo que se cree, OpenSSH NO CONSUME batería por estar el servicio activado, al contrario que si pasaba con el anterior servidor SSH dropbear. Mientras esté tan solo escuchando, el consumo de energía por OpenSSH será de 0%... aunque evidentemente es un riesgo natural. WIFI podemos necesitarlo en cualquier momento, pero nunca sabemos quien pueda estar a la "escucha" en la red. Si el servicio SSH está levantado en nusetra máquina aceptará todas las conexiones entrantes. Luego OpenSSH tan solo debería de estar habilitado cuando realmente lo necesitemos. Para habilitarlo o deshabilitarlo basta con instalar NetServices por ejemplo, que con un simple deslizar se activa o se desactiva.

La segunda barrera es evidentemente WIFI. Tan solo activar WIFI cuando sea necesario, y WIFI si consume batería, al contrario que OpenSSH, luego en caso de WIFI la recomendación de tenerlo apagado es doble. Evidentemente si hay conexion es posible que alguien pueda colarse.

Uno puede pensar que tan solo desactivando wifi cuando no se necesite el problema se resuelve. NO. Si OpenSSH está activado, en cualquier momento que uno se conecte a una red wifi su dispositivo es vulnerable. Normalmente es más facil olvidar desactivar OpenSSH (por comodidad) que WIFI. Lo ideal? desactivar ambos cuando no se requiera. Aunque esto puede llegar a ser muy incómodo, sobre todo para personas que usan muy exaustivamente SSH y SFTP.


3º. Usar una autentificación basada en clave pública en vez de acceso por contraseña

Lo que la mayoría sabe a estas alturas es que SSH permite autorización por contraseña. Un nombre de usuario y una contraseña (que por defecto es alpine) es suficiente para tener acceso ilimitado. Si ademas conocemos de antemano también el nombre de las cuentas... Hemos aprendido a cambiar la contraseña, pero esto tiene algunos problemas, aunque evidentemente es muchisimo más seguro que dejarlo con el pass por defecto:

El primer problema es que si es una contraseña compleja, cada vez que queramos acceder tener que teclearla puede ser un martirio. Aunque esto tampoco llega a ser un problema, en casa se puede configurar Putty o WinSCP para automatizar todo el proceso

El segundo problema es que una contraseña se puede averiguar sin mucho problema (En la tercera parte pondre ejemplos reales). Y no solo averiguar, sino realizar ataques de diccionarios e incluso de fuerza bruta. Incluso con una contraseña compleja.

El tercer problema es que podría ser posible acceder al sistema en un descuido, copiar o sustitur el archivo de contraseñas "master.passwd" y obtener la contraseña.

SSH es en teoría un protocolo seguro y ya de por sí basado en clave pública. La primera vez que nos conectamos a una máquina SSH esta nos manda su clave pública. Todos hemos visto el cartel de confirmación de aceptar la clave pública la primera vez que nso conectamos. Al introducir la contraseña de acceso esta se encripta con la clave publica del servidor, y la manda codificada, de modo que el servidor que es el único que posee la clave privada pareja es capaz de abrir el mensaje, recivir la contraseña e introducirla en la máquina. Así se evitan posbles ataques por medio de sniffers, ya que la contraseña jamás será vista. Pero este proceso no evita ningun posible problema antes comentado.

Para asegurar esto un poco más lo que se hace es en vez de optar por una autentificación basada en contraseña, realizar una basada completamente en clave pública. Ya hemos dicho que el servidor tiene las suyas propias (en este caso el ipod/iphone), pero podemos hacer lo siguiente:

Generamos nosotros otro juego de claves, una privada y su pública
Entregamos nusetra llave pública al servidor y le decimos que puede usarla como cliente autorizado
En la próxima conexion que se realize, el servidor nos enviará un testigo cifrado con nuestra clave publica. Como nosotros tenemos la clave privada le contestamos correctamente. Igualmente el hace lo mismo cno su clave pública para asegurarnos nosotros a la vez que nos estamos conectando al servidor debido. Una vez realizado el proceso se concede el acceso, sin necesidad ya de introducir contraseñas y el problema de ellas.

Todo esto suena más complicado de como es en realidad. Para hacer todo esto tan solo debemos de usar herramientas que ya tenemos en el PC instaladas.

Lo primero como he dicho es genera un par de claves. Los sistemas basados en clave pública son los más robustos ahora mismo del mundo, a día de hoy impenetrables. Se basa en una premisa simple: Es imposible calcular predecir... si un número es primo y factorizarlo. Todo el mundo sabe que es un número primo: 1, 2, 3, 5, 7, 11, 13, 17... solo divisibles por 1 y por ellos mismos. Pero si yo preguntase si el número 123^123 es primo o no y cuales sus factores... la única forma de saberlo sería ir dividiendo ese número por 1, despues por 2, despues por 3... computacionalmente es imposible. Lo que se hace pues es generar dos claves, resumiendo mucho mucho digamos que una es el numero resultante de la multiplicación de otros dos primos, y la clave privada son los dos numeros primos que generan la clave publica (el primo). En resumidas cuentas, es imposible a día de hoy quebrantar este sistema, al menos el sistema en sí. La clave pubica se da libremente, a fin de cuentas nadie será capaz jamas, ni en 100 años de calcular la clave privada. Y la clave privada es lo que se guarda de manera celosa ;). Despues es tan facil como cifrar un mensaje con la clave pública por otros métodos que ahora no vienen al cuento, y la clave que descifra el mensaje no es la misma clave publica, sino tan solo la clave privada, es lo que se conoce como cifrado asimetrico. Normalmente estamos acostumbrados a cifrados simetricos, la misma contraseña con la que protegemos un archivo es la misma que usamos para desprotegerlo.

Bueno dicho esto tan solo queda ponerse manos a la obra:

Primero generaremos el par de caves, lo cual podemos hacer con una utilidad que tendremos ya instalada, si tenemos instalado WinSCP: PutyGen


Es muy simple. Yo he optado en la imagen de generar una clave de 2048 bits, más que suficiente, quien quiera puede usar claves más potentes, incluso de 4096. Y tambien se tiene la opcion de usar RSA como DSA. Los dos son algoritmos de clave públicas, muy similares. Existen los dos porque el algoritmo RSA estaba patentado y no se podía usar, y de ahí salio DSA. A efectos prácticos da igual, DSA funciona con el mismo principio y es casi casi igual que RSA, así que... diría usar DSA por la patente de RSA, pero la verdad es que a día de hoy la patente RSA caducó, y puede ser usada libremente.

Una vez le demos a generate saldrá una barra verde que podemos observar y se nos pedirá que movamos el ratón por la zona justo de debajo. Cuando lo hagamos la clave se irá generando. Por que esto? porque para asegurar la creación de una buena clave, el PC necesita generar datos aleatorios puros, y los algoritmos para generar números aleatorios son predecibles. Así que esto ayuda a generar valores aleatorios.

Una vez terminado el proceso tendremos algo parecido a lo siguiente:


Lo que vemos es la clave pública. Primero tenemos que guardar y poner a buen recaudo la clave privada, y si queremos para mayor seguridad se puede proteger tambien con una clave, de este modo la clave privada se encripta con una clave. Irónico verdad? ;) la guardamos por ejemplo en la misma carpeta de WinSCP y sin cifrado.

Y de paso, hacemos un copy paste de la clave pública. No le damos a save public key, ya que el formato que necesitamos es el de arriba, no el que se genra al darle al botón. En realidad es igual, solo modifica una cosilla. Copiamos ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQ... (en mi caso)
Tambien se puede poner una descripción, en mi caso prueba, podeis poner key ipod/iphone.

Una vez terminado esto creamos en el escritorio, por ejemplo, un archivo de texto y pegamos encima toda la clave pública. Si se hace bien tan solo se verá una sola linea gigante de letras y números (si la opción de Ajuste de Linea del bloc de notas está desactivada evidentemente). Guardamos ese archivo y lo renombramos a: "authorized_keys" sin extensión ninguna,

ese es el archivo que usara nuestro dispositivo para almacenar las claves públicas autorizadas. y será el único archivo que copiaremos al dispositivo. La clave privada en cambio es para nosotros tan solo.

Y ya tan solo queda configurar las dos partes: 1º el servidor y despues el cliente

Para configurar el servidor es muy simple. Quizás el más simple para vosotros sea acceder por WinSCP (aun por el método tradicional) y nos situamos en la carpeta /private/etc/ssh y localizamos el archivo "sshd_config". Lo editamos y tan solo tenemos que habilitar un par de líneas, y habilitar tan solo quiere decir eliminar el símbolo de #. bajamos hasta dnd aparece:

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

Y tan solo tenemos que eliminar las #:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Podemos si queremos deshabilitar tambíen de forma permanente el acceso por contraseña, de modo que tan solo sea posible acceder por este método. De esta forma, a menos que nusetro dispositivo tenga una copia de la clave pública especificada no se tendrá acceso al sistema. Si no se activan las siguientes opciones, lo primero se intentará el acceso por clave pública, pero si este falla se volverá al sistema antiguo, con lo que no se gana demasiado. OJO!!! ESTO SOLO SE DEBE DE MODIFICAR UNA VEZ HEMOS COMPROBADO QUE PODEMOS ACCEDER DESDE NUESTRO PC, SI NO ES ASI MODIFICAR ESTO PUEDE PROBOCAR NO PODER ACCEDER MAS POR SSH, anuq siempre podemos entrar por terminal de forma local o desinstalar SSH.

Luego estas modificaciones tan solo es aconsejable hacerlo despues de todo el proceso, pero dado que estamos con el archivo en cuestion lo pongo ahora, repito, solo cuando hayamos comprobado que el sistema funciona:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Si quitamos los # y lo configuramos de esa forma, deshabilitaremos el acceso por contraseña, por PAM y por challenge, luego tan solo nos quedará el acceso por clave pública.

Tambien puede ser muy interesante modificar el puerto por defecto: "22" a otro. El puerto 22 es extensamente barrido en cualquier escaner de puerto, y llama mucho la atención. Es aconsejable moverlo a otro puerto, y para asegurarnos que no usamos alguno del sistema podemos eleguir de manera segura casi cualquier puerto desde el 10000-65000. Hay que recordar el puerto, puesto que a la hora de configurar el cliente deberemos modificar el puerto 22 al seleccionado:

#Port 22

lo modificamos a por ejemplo:

Port 15021

Una vez acabado el archivo editado, lo guardamos y listo.
Tan solo queda copiar el archivo de claves "authorized_keys" que tenemos en el escritorio. Tan solo debemos de copiarlo en :

/private/var/root/.ssh/

Una vez copiado nos aseguramos que los permisos de las siguientes carpetas quedan así: (NO ACTIVAR RECURSIVIDAD)

/private/var/root -> 0644
/private/var/root/.ssh -> 0700
/private/var/root/.ssh/authorized_keys -> 0755


Una vez copiado el archivo tan solo queda comprobar que la conexión funciona perfectamente. Ahora tan solo tenemos que abrir WinSCP por ejemplo. La configuración es igual, exceptuando:

Si hemos modificado el puerto, lo modificamos también.
Ya no hace falta contraseña, así que el campo de password lo eliminamos
Hace falta añadir la clave privada guardada anteriormente, así que en el campo private key file colocamos la clave privada que dijimos la guardábamos en la misma carpeta que WinSCP. Listo:



Como sabemos si funciona? le damos a conectar. Si conecta sin pedirnos contraseña éxito. Nota que el nombre de usuario deberemos de introducirlo de todos modos.

La configuración de putty es exactamente igual, salvo que la clave privada se mete en otro sitio:



En mi caso como podeis ver en las imágenes el proceso es completamente automatizado. ni contraseña ni usuario. Aunque esto se puede tambien automatizar sin necesidad de clave pública. Una vez que el sistema funciona, podemos modificar las opciones citadas anteriormente y así estaremos ante una fortaleza a la que nadie, sin nuestro permiso, podrá entrar. Si deseamos añadir un cliente más, tan solo tendrá que generar su par de claves y copiar la clave publica del cliente en nuestro archivo ya creado "authorized_keys", a continuación ahora sí, de la anterior.


Eso es todo por hoy

lunes, 2 de junio de 2008

Artículo: La importancia de la seguridad I: PuzzleManiak

Durante años he tenido que oir eso de:

No eres demasiado estricto siempre con eso de la seguridad? Quizás un poco fanático? Realmente un usuario de a pie necesita ser "tan estricto" con sus cosas?

En un mundo ideal todo el tráfico por inet podría ser completamente abierto, las contraseñas no existirían, nadie sería curioso ni tendría la necesidad de robar o de entrar en las casas o... Evidentemente ese mundo no es el que nosotros vivimos y nunca podemos saber hasta que punto el que tenemos al lado de nosotros está dispuesto a respetar nuestra intimidad. Somos demasiados confiados o somos demasiado tontos? o quizás somos fanaticos?

Bueno, en la segunda entrada veremos como podemos hacer que nuestro dispositivo sea un poco más seguro. En esta vamos a enseñar y demostrar lo vulnerable que pueden ser los sistemas simplemente por confianza de que hay siempre buena voluntad y que nadie es malo, o que nadie se aprovecha de los defectos de un sistema o... Realmente "asaltar" un sistema, por sencillo que sea, tiene alguna utilidad? Normalmente o satisfacción personal o dinero. Imaginemos que estamos en nómina de una empresa para lograr la máxima información de un determinado individuo.

Nosotros no vamos a hacer nada de eso, además, me parece completamente amoral. Por el contrario vamos a verlo ilustrado en un simple ejemplo con el juegecito PuzzleManiak.

PuzzleManiak es un juego que trae dentro unos ¿29? juegecitos de puzzles diferentes. A mi gusto es una de las mejores aplicaciones para pasar el rato, algunos son muy buenos y otros son clásicos de siempre. El juego tiene un sistema de puntuación Online, esas cosillas que siempre le encanta a los ambiciosos o a los que buscan siempre un aliciente: Hay que ser el mejor!!. Cada juego tiene diferentes niveles de dificultad y/o tamaño, así como su propio ranking de puntuación local como en internet.

El Ranking local son puntuaciones almacenadas para seguir nuestros progresos, el Ranknig en internet nos vale para seguir un progreso en comparación con otras personas del mundo. El ranking en internet a su vez se divide en:

a) Ranking por Puzzle: Diario, Semanal, Mensual y Global de cada una de las dificultades y/o tamaños
b) Puzzle del día: Una vez al día se tiene acceso a un puzzle determinado normalmente de dificultad y/o tamaño grande. Todos los participantes hacen el mismo puzzle, y se envian los datos a inet. Este Ranking recoge la puntuación de los participantes en el Puzzle del día, y el ranking global generado por los 10 últimos días del puzzle del día
c) Hall de la fama: Cada puzzle tiene un campeon global recogido en el Hall de la fama
d) Ranking Global: Y para acabar un Ranking general en el que se tiene en cuenta cada punto obtenido en cualquier ranking por puzzle

Seguro que muchos de vosotros sabeis que juego es o lo habeis usado alguna que otra ocasión.

El caso es que quería demostrar la vulnerabilidad de algunos sistemas y he escogido esto de ejemplo. Lo relativamente simple que puede ser engañar, falsear, hackear un sistema de puntuaciones online. Lo que hace que sea relativamente simple es precisamente eso, la falta de seguridad por parte del creador de la aplicación por suponer que hay buena voluntad. Evidentemente en este caso es una tontería, y le tengo que mandar un correo a su creador para que lo corrija y de paso que elimine mi puntuación ;). Pero muestra precisamente lo que digo, la importancia siempre, aunque haya la mejor confianza, la mejor buena voluntad... de usar sistemas seguro. Ya no solo para protegernos nosotros mismos, sino para que los demás sepan que están protegidos.

Os dejo las capturas de las puntuaciones actuales, aunque quien quiera puede consultarlas online en http://www.puzzlemaniak.com/blog/





Estas dos pertenecen al ranking del puzzle del día y el global del ranking del puzzle del día por 10 días. Aquí no tengo aun la máxima puntuación porque aun no han pasado 10 días. Sí, ya se que casi 37 segundos es una barbaridad comparado a los próximso resultados, pero 37 segundos si comparais con el resto es algo ínfimo. Pero aun hay más:




Este es un ranking del puzzle Map en su categoría 20*24 y 50 regiones. Todas las demás categorías y de todos los puzzles tienen el mismo resultado, soy el número 1 con un tiempo siempre de 1 centésima de segundo. Sinceramente? Soy bueno en algunos puzzles, muy bueno en otros!! pero evidentemente jamás con ese tiempo. Al estar el puesto primeor en todos los puzzles en todas las categorías, el ranking global queda así:



Creo que no me ha quedado ni un solo record sin coger, luego tengo la máxima puntuación posible, soy el gran campeon de todos los tiempos!!

Pero bueno, ahora hay que desvelar el secreto. Como ha podido pasar esto?


Es simple. Los datos enviados desde el servidor de la aplicación como desde nuestra misma aplicación al servidor deberían de ir encriptados completamente o al menos usar un algoritmo hash para "encriptar" los datos de los puntos.

Es cierto que el servidor sí aplica algunas medidas de seguridad. Por ejemplo, cada vez que enviamos datos a su servidor les enviamos nuestro nombre de usuario claro está y también la MAC de nuestro dispositivo. Supongo que será para fines de validación, por ejemplo en "el puzzle del día", y así evitar poder hacer el "puzzle del día" más de una vez. También sirve de ID único, así en el ranking podríamos tener dos nombres de usuarios iguales, ya que su MAC es diferente. Claro que cambiar la MAC del dispositivo es tarea simple. Al menos han tenido la delicadeza de "cifrar" la MAC, le aplica un cálculo simple para no enviarla en plano, seguramente ni siquiera la almacenen en plano, lo cual es de agradecer.

Tambien usan un sistema de hash para verificar que los datos que se envian al servidor no se han alterado. Este sistema se basa simplemente en calcular un hash o firma dependiente de la puntuación obtenida en el puzzle en cuestión, el nombre del usuario y de la MAC de este. De esos tres datos se obtiene una "firma" que se envía conjunta a los datos al servidor. El servidor comprueba los puntos, la MAC y el usuario y calcula la firma. Si la firma que obtiene es la misma que la enviada por la aplicación se permiten los datos.

El sistema no es malo del todo, pero tiene muchos fallos de seguridad. Para empezar los puntos se guardan antes en disco, lo cual es posible editarlos, y este ficharo no está encriptado ni tiene ninguna comprobación CRC ni ningún otro sistema. Esto implica que con un poco de ingenio podemos alterarlos como queramos.

Por otro lado que exista un sistema de hash para cifrar algunos datos es positivo, pero es insuficiente como hemos podido ver. El tráfico debería de ser todo o casi todo encriptado. No me ha resultado nada complicado inyectar exitosamente los datos enviados al servidor y al dispositivo para poder "jugar" con los puntos como quiera.

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

Evidentemente esto no está haciendo un daño a nadie ni a ninguna instalaciones, y como digo informaré con pelos y señales al dueño para que tome medidas, pero es un ejemplo del problema de la seguridad. Por mucho que creamos que nuestro sistema es seguro, siempre hay alguien más listo que nosotros, y esto es una gran verdad

Tampoco creo que haya que ser alarmista ni un enfermo mental de la seguridad. Pero sí creo que cada tipo de datos se debe de tratar con su nivel de seguridad correcto. En los listados tan solo vemos puntos y nombres de usuarios, pero si fueran nombres y apellidos + números de teléfonos estaríamos ante un gravísimo incidente, aquí en españa penado con fuertes multas y muy vigilado por la Agencia Española de Protección de Datos.

Siempre que tengamos datos sensibles o privados hay que protegerlos de la forma adecuada, y muchas veces la seguridad nunca es excesiva.

Esta entrada no es directa a nuesto dispositivo, quitando un poco lo de PuzzleManiak, pero si que usaremos esta entrada de trampolín para la segunda parte: "La importancia de la Seguridad II: Securizando el iPhone/iPod" Que escribiré después

Un saludo.
 
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.