Sunday, 27 October 2013

Como mockear un servicio http en Android

Hace un tiempo encontré una librería que permite mockear servicios http en java y android, muy útil para cuando nuestro proyecto hace llamadas a consultas por WebServices y necesitamos mockearlos.
Se llama MockWebServer, y para utilizarla solamente debemos bajarla desde el sitio oficial y dejar el jar en la carpeta libs de nuestro proyecto.
ADT, por defecto, agrega todos los jars que estén en esa carpeta a nuestro buildpath.
En https://github.com/cristian04/mockwebserverdemo pueden encontrar un proyecto demo que prueba dos cosas: correr un test contra un servicio real y correr el mismo test contra un mock.
A continuación un pequeño detalle para ese proyecto:
El método sendRequest() se encarga de dos cosas. En primer lugar se conecta a una URL que es pasada por parámetro y obtiene la respuesta en formato JSON. En segundo lugar, realiza varias verificaciones con la respuesta: verifica el status code recibido y los datos de la respuesta.

Este es un test básico que hace uso de la función que nombré anteriormente y que funciona contra el servicio real (en este caso, un sitio de jsontest.com)
En este ultimo test, se pueden ver dos diferencias más: En primer lugar estamos creando una respuesta que el servidor nos tiene que devolver, dentro de MockResponse. Luego seteamos esa respuesta en el servidor y lo prendemos con server.play().
El método sendRequest() es quien hace la conexión al servidor web y quien realiza las verificaciones de la respuesta recibida.
Por ultimo, para verificar si nuestro request estuvo OK, le pedimos a nuestro mock que nos brinde los request que enviamos, mediante server.takeRequest(). Con esto podemos verificar si nuestro cliente http envió lo que realmente queríamos, verificar si el método http es correcto, si los headers están OK, si los parámetros están OK, etc.


Sunday, 20 October 2013

Hackeando un Smart TV Samsung (UN46EH5300G) Parte 3

Bueno, por ultimo voy a mostrarle algunas cosas interesantes que encontré con respecto al firmware del tv y algunos links.
Disclaimer:
  • Entrar o cambiar la configuración en el menú de servicio sin entender el funcionamiento puede causar daños permanentes en tu televisor. Accede a este menú sólo si estás calificado y capacitado para hacer trabajos de reparación de televisores.
La ultima version disponible para el SmartTV al dia de hoy es T-MST10PIBRC
Como pueden ver, el archivo es un .EXE que descomprime una carpeta, vamos a analizar que es lo que tenemos aqui:


Ahora vamos a enfocarnos en dos archivos .IMG. Para saber que es lo que tiene un archivo podemos ejecutar el comando file en linux:


TIP: Tambien podemos usar el comando binwalk que nos muestra mas info, analizando el archivo integramente
 Ahora que conocemos el sistema de archivo de cada imagen, podemos montarlo haciendo lo siguiente:

 Ahora, pueden darse una mirada por los archivos que estan en esas carpetas. Quizas encuentren algo interesante ;)

Les dejo dos links que me gustaron:

  1. http://www.samygo.tv/
  2. http://marcoramilli.blogspot.com.ar/2013/05/firmware-hacking-samsung-smart-tv-turn.html
Saludos!



Hackeando un Smart TV Samsung (UN46EH5300G) Parte 2

Continuamos con el hacking para el UN46EH5300G. Ahora vamos a entrar en algunos menues ocultos y, si tenemos suerte, habilitar una opcion para que el televisor pueda grabar videos en un dispositivo USB.

Basicamente, muchos dispositivios tienen la posibilidad de acceder a funciones de ingenieria o fabrica para realizara acciones mas complejas. Algunos controles remotos de televisores antiguos (+10 años) disponian de uno o varios botones escondidos en la circuito, de manera que para acceder a ellos habia que desarmar el control.

En nuestro modelo, disponemos de dos menues ocultos: Service Mode y Hotel Mode
Para entrar en Service Mode tenemos que apagar el TV y presionar las teclas MUTE 1 8 2 POWER
El televisor se va a prender y vamos a ver un menu con varias opciones. A recorrer cada una señores! ;)


El otro menu se puede acceder con el televisor prendido. Solamente necesitamos tocar MUTE 1 1 9 OK y ya estamos en Hospitality Mode!

En las primeras versiones del firmware del tv, el modo de Hospitality Mode nos permitia editar la configuración del televisor, y una de esas opciones era habilitar PVR (personal video recording)


Parte 3 http://www.cristianmarquez.com.ar/2013/10/hackeando-un-smart-tv-samsung_8226.html

Disclaimer:
  • Entrar o cambiar la configuración en el menú de servicio sin entender el funcionamiento puede causar daños permanentes en tu televisor. Accede a este menú sólo si estás calificado y capacitado para hacer trabajos de reparación de televisores.

Hackeando un Smart TV Samsung (UN46EH5300G)

Hola a todos:
Hoy les voy a mostrar algunas pruebas que estuve haciendo con un Smart TV de Samsung (que de SMART no tiene nada, tan solo es un thinclient)
Disclaimer:
  • Entrar o cambiar la configuración en el menú de servicio sin entender el funcionamiento puede causar daños permanentes en tu televisor. Accede a este menú sólo si estás calificado y capacitado para hacer trabajos de reparación de televisores.

Bueno, voy a comenzar por partes. Lo primero que hice al tener el tele fue conectarlo a internet y tirarle un nmap para ver que es lo que tenia por detras. Encontre esto:

80/tcp   open  http
443/tcp  open  https
4443/tcp open  pharos
6000/tcp open  X11
7676/tcp open  imqbrokerd
9090/tcp open  zeus-admin

De todos esos puertos, con los que pude jugar son el 80 y el 7676. Para el resto todavia estamos trabajando en encontrar que son y que tocar ;)

El televisor usa el protocolo uPNP, por lo que si utilizamos alguna tool de sniffing, podemos encontrar muchas cosas con las cuales interactuar en nuestro TV.

En linux tenemos uPNP Inspector (hecha en Python) y utilizando esta tool podemos obtener una lista de eventos y métodos que expone nuestro televisor, como así también enviar y recibir comandos:


Con eso, estamos seteando un nivel de volumen al televisor, sin usar nuestro control remoto y mediante nuestra computadora. De esta manera, tambien podemos hacer nuestro cliente mobile para manejar el televisor desde nuestro celular

Hasta aquí una primera parte