sábado, 2 de diciembre de 2017

Frikada del día: SOCKS5->HTTP, navega por la deep web desde IOS/Edge/IE

¿Quien no ha querido nunca navegar por la deep web desde su navegador favorito Internet Explorer?
Tanto IOS, como Edge, como el obsoleto Internet Explorer tienen un problema con los proxys en común, y es que no traen soporte para el protocolo SOCKS5 que es el tipo de proxy que utiliza tor.

Ahora es posible hacerlo gracias a un programa en Java creado por mi, que en unas 160 lineas de código, se conecta a un proxy SOCKS5 (como puede ser tor) y devuelve un proxy HTTP al que nos podemos conectar desde los navegadores de Microsoft o nuestros dispositivos de Apple.

Problema con IOS: Por alguna razon en las ultimas versiones de IOS, cuando intentas acceder a un sitio .onion, en Safari, te muestra un mensaje de que no tienes conexión a internet y el navegador ni se molesta en conectarse a traves del proxy. Se puede navegar anonimamente por el resto de paginas en cualquier caso.
Este problema no ocurre en cambio con mi antiguo Iphone 4 con IOS7.

Actualización:
Tras perder el código fuente original en Java, el cual aun tenía algunos fallos por resolver, he re-escrito el programa en C++ (Más eficiente) con mi librería Jsocket. Podeis encontrar el código fuente y ejecutable para Windows en https://github.com/juanmv94/SOCKS2HTTP.

miércoles, 4 de octubre de 2017

Presentacion de diapositivas (PowerPoint) en 3D desde el navegador

Como de costumbre, vuelvo a sorprenderos con una nueva app. En este caso se trata de una aplicación web (funciona a través del navegador) en la que podréis mostrar vuestras presentaciones de diapositivas PowerPoint en un entorno 3D totalmente personalizable. Ademas, de diapositivas PowerPoint, también se pueden añadir otros elementos como fotos, vídeos, aplicaciones, paginas web,...



De momento no voy a hacer pública la app por ausencia total de interés por parte del publico. Podéis contarme vuestra opinión en los comentarios, y como sería vuestro entorno 3D favorito.

sábado, 30 de septiembre de 2017

Manejando la Raspberry Pi desde un ebook (tinta electronica)

Tenemos una Raspberry Pi conectada por LAN a un router Wifi con un teclado inalambrico y un pendrive conectados al USB (y un altavoz conectado a la salida 3,5mm).
Gracias a shellinabox (https://github.com/shellinabox/shellinabox) podemos crear una terminal accesible desde el navegador integrado del ebook.

Para poder redirigir la entrada del teclado USB a la tty de shellinabox uso un programa de creación propia.

He aquí el resultado. Os muestro la ejecución del reproductor multimedia omxplayer a través de esta interfaz.


viernes, 1 de septiembre de 2017

Un videojuego 3D con tecnologia WebGL: Flappy Adventure 2

Descarga aplicación android aquí.
Windows, IOS, Mac y Linux acceded a versión online aquí.




Solo una semana es lo que he tardado en hacer el juego que tantos deseabais poder jugar. Flappy adventure 2 no solo es el primer videojuego 3D 100% hellinero, sino que es uno de los muy pocos implementados en tecnologia web (La mayoria de los juegos Indie 3D se crean en Unity) Esto significa que podeis jugarlo practicamente en cualquier sitio: PC, Mac, Iphone, Ipad, Android, Linux,...


Ademas dentro de la aplicación web tambien podeis jugar a la ya conocida Aventura de Flappy en su versión 2D la cual he mejorado en su versión 1.2, o jugar a la ya anticuada version GB o al Retro Stack Tower 2017 mediante su emulador de gameboy incluido.

Problemas relativos al lag:
-La velocidad de avance se ve reducida impidiendo pasar el primer nivel. Solucion: multiplicar velocidad x delta en control.js pasando delta como parametro a la funcion update.
-Al caer se puede atravesar el suelo si el lag es muy grande. Solución: RaycasterDown= Math.max(la distancia que flappy baja en el siguiente frame , 10).

Mejoras para touchscreen:

-La sensibilidad de los controles depende de la resolucion de la pantalla. Solución: usar ScreenHeight como referencia.
-Camara podría estar quieta al desplazar el dedo a una posicion (2º cuadrado). Solucion: actualizar posicion touchstart a la actual en cada update. (En Galaxy S8 funciona bien, vaya misterio)

Otros:

-Mirar si se puede arreglar spawn inicial.

Si experimentais problemas y teneis especial interes en una version 1.0.1 hacedmelo saber.


Actualización 1 aniversario de Flappy Adventure 2
Para celebrar el 1 aniversario de Flappy Adventure 2, aparte de solucionar la mayoría de los problemas apuntados anteriormente, he implementado la versión VR (Virtual Reality) del juego. Esta versión era mi principal intención cuando decidí hacer FA2, y que lamentablemente tuve que descartar por varios motivos:

  • No tenia gafas VR. Hace un año eran caras, la mayoría eran de cartón, y habría supuesto que mi juego no llegase a ningún publico.
  • Era novato usando WebGL y Three.js y solo me faltaba complicarme aun más la vida con FA2 (El cual quería tener hecho en menos de una semana)
  • No tenía de idea de como poder controlar a Flappy sin poder tocar la pantalla tactil.
Tras abrir el código por primera vez desde 1 año del lanzamiento, me quedé sorprendido de que no tuviera mas fallos. Era la primera vez que usaba Three.js y que desarrollaba un juego en 3D (Ademas con prisas). Arreglé los fallos que pude, e implementé la versión VR sin preocuparme demasiado en dejar el código bonito.

¿Como solucioné el problema del controlador?
Para controlar a Flappy finalmente se me ocurrió poder utilizar un dispositivo móvil auxiliar como controlador y que mediante Websockets se comunicaran con un servidor Java (también creado por mi).

Dudo mucho que nadie quiera probar Flappy Adventure 2 VR así que os adjunto el vídeo y vais sobraos.

sábado, 8 de julio de 2017

Mod-Emulación

No hace falta que busqueis la palabra en Google, lo mas probable es que no salga nada.
Se trata de un nuevo concepto que un día se me ocurrió y que consiste en lo siguiente:
¿Por que no modificar el código fuente de un emulador para que actúe de forma especial en ciertas rutinas de un videojuego? El objetivo de esto será mejorar la jugabilidad y apariencia anteriormente limitada por el hardware de la consola.



Podemos mostrar cuadros de dialogo, mostrar graficos mejorados, sonidos mejorados, interfaz touchscreen... Todo esto sin modificar el ROM del juego.
En el siguiente video podeis ver un ejemplo de mod-emulación que hice para el juego de "Pokemon Gold".

Aunque de momento casi todo es conceptual, pueden existir infinidad de tipos de mod-emulación:

-Mod-emulación grafica: Altera los graficos sin afectar a la jugabilidad.
-Mod-emulación sonido: Altera el sonido o música del juego sin afectar a la jugabilidad.
-Mod-emulación interfaz: Permite utilizar interfaces como touchscreens.
-Mod-emulación avanzada: Afecta a la jugabilidad (Ej: video).


Tambien se pueden diferenciar por la forma en la que se ejecutan los mods:

-CPU: Por ejemplo en una determinada llamada a procedimiento del ROM (Ej: video).
-RAM: Por ejemplo cuando la VRAM o un cierto byte de la RAM tenga un valor. (mas fáciles de implementar).

Como siempre me gustaría que comentaseis para dar vuestra opinión al respecto. ¿Creeis que la mod-emulación es una buena idea o estropea el concepto de retro-gaming?

domingo, 2 de julio de 2017

Frikada del verano: Tower Stack en Gameboy Color??


DESCARGA ROM -> AQUÍ

Terminan los examenes, comienza el verano y como viene siendo tradición me apetece hacer un nuevo juego retro para gameboy.
Esta vez, uno de los juegos de moda (seguido de flappy bird, 2048...) se llama Stack Tower, en el que vas haciendo caer de forma alineada plataformas en 3D que se van haciendo cada vez mas pequeñas.

¿¡Pero como voy a hacer un juego 3D en una consola cuyas capacidades graficas eran... Bueno...
Y es que la Gameboy y la Gameboy color son consolas con graficos basados en tiles con un único background sin escalado ni rotación, y que de forma resumida estan limitadas a un 2D bastante basico.
La cuestión es que como soy friki ingeniero informatico me pongo a diseñar un "motor grafico" para Gameboy que permita crear tiles de forma dinamica via software con los bloques 3D renderizados mediante unas rutinas software. Algo nunca visto. Estoy loco, sí.
Y sí... ¡funcionó! no me digais que no me ha quedado bonico.

No lo hice para Gameboy Original por dos motivos:
  • Aunque funciona, la potencia de la CPU en la Gameboy original se queda escasa.
  • En blanco y negro el juego queda bastante feo.
Como os habreis fijado, el contador de puntos tiene antialiasing, lo cual tampoco se habia visto hasta ahora en Gameboy.
Y este es el resultado :') ayy que lloro... Ahora solo me falta ponerle una imagen de portada bien fea.


Los bloques se imprimen por dos lados:

  • El bloque en movimiento, se dibuja en los sprites. Como sabreis (o no) hay un límite de 10 sprites por scanline, son solo 40 y pueden tener un tamaño de 8x8px o 8x16px. Para dibujar los bloques lo mas grandes posibles, alineo todos los sprites en modo 8x16 px en un único "objeto" de 10x4 sprites. ¡Apuro los límites tecnicos al maximo!
  • Los bloques ya colocados se dibujan en el background. Mi "motor grafico" se encarga de dibujar unos encima de otros y de actualizar el tilemap de forma dinamica.

sábado, 6 de mayo de 2017

J-Music: la aplicación de música para Android (Soporte finalizado)

¡Descarga APK haciendo clic aquí!

Ya esta disponible para Android la app que tantos me habíais pedido, y que tanto retraso ha tenido su lanzamiento: J-Music

Esta aplicación permite:
-Escuchar canciones de Youtube descargando solo el audio. ¡Ideal para ahorrar datos moviles!
-Descargar las canciones en formato MP3
-Explorar las canciones buscando ya sea el cantante o nombre de la canción

La aplicación esta desarrollada con PhoneGap, por lo que el codigo fuente se encuentra dentro del propio APK para los curiosos. Ademas, ¡no tiene publicidad!

La aplicación, a pesar de que los conversores Youtube-MP3 son legales de momento (siempre que sea únicamente para uso personal) no estaría aprobada para la Play Store (ya que es de Google) por lo que descargar el APK desde aquí es la única manera de instalarla. Recordad que podeis comentar aqui si tenéis alguna duda.

En caso de producirse un mínimo problema legal por parte de la aplicación, esta sera retirada de inmediato del blog.

Es posible que la aplicación no sea totalmente compatible en versiones antiguas de Android aunque siempre deje instalarla.


lunes, 1 de mayo de 2017

DInput key switcher. Personaliza el teclado en tus videojuegos.

Descarga el proyecto haciendo click aquí.
¿Quien no ha jugado nunca al Rayman 2 y no ha deseado poder cambiar los controles? Algunos videojuegos (sobre todo los que tienen ya tiempo) no permitían re-mapear las teclas de ningún modo, y no siempre era sencillo hackearlos para cambiar los controles. El videojuego anteriormente mencionado NUNCA vio una forma de cambiar los controles de teclado.

Esto se acabo... Gracias a mi como de costumbre.
Con mi nueva aplicación podréis generar un fichero DINPUT.DLL "hackeado" que al copiarse al directorio donde tenéis instalado vuestro juego cambiará vuestros controles de teclado a los que vosotros queráis.

De momento solo tiene versión de 64 bits, aunque si alguno por casualidad estuviese interesado en una versión de 32 bits, decidmelo, y me plantearía portarla a 32 bits.

Edición: Codigo fuente disponible a peticion de "Rayman Pirate Community"

Algunos juegos donde funciona dinput.dll:

-Rayman 2
-DosBox
-.....

Algunos juegos donde funciona dinput8.dll:

-Rayman 3
-Crazy Taxi
-.....

¡Sugerid mas juegos!

jueves, 20 de abril de 2017

(OBSOLETO) Vulnerabilidad de phishing en Chrome y Firefox

Demostración aquí.

¡Hola a todos!
Aunque tengo esto un poco abandonado por motivos académicos, quería escribiros un post sobre una vulnerabilidad presente en Google Chrome y Firefox (entre otros navegadores), y que hasta que se solucione, puede ser un gran problema a la hora de seguir cualquier enlace desde el PC. Estos enlaces por lo general se mostrarán como seguros a pesar de ser paginas totalmente diferentes.


Se trata de ataques phishing basadas en direcciones Unicode, y es que los navegadores implementan esta funcionalidad Unicode para que puedan haber direcciones web con caracteres chinos, por ejemplo.

El problema es que mediante estos caracteres podemos suplantar sitios web. Aunque se ha puesto de moda el ejemplo de apple.com (aquí) lo cierto es que tambien se pueden aplicar a paginas tipo Tumblr o Blogspot donde nuestro nombre pueda ir al principio de la URL, llegando a reemplazar incluso a "www" (Como en mi ejemplo de arriba)

Os animo a los usuarios de PC a que hagais click en el enlace que hay puesto al principio y me digais si podeis diferenciar la pagina de Tumblr real de la falsa.

sábado, 25 de febrero de 2017

Crear fotos con emojis

Seguro que mas de uno ya conocía alguna pagina web para convertir imagenes a caracteres ASCII.

Esto tuvo cierta popularidad hace tiempo.

Ahora en la epoca del Whatsapp donde lo que esta de moda son los emojis me pregunté... ¿Existe alguna pagina para convertir una imagen a emojis? Como vi que no, decidi crear una yo mismo.  La comparto con vosotros:
Enlace Versión nueva (2019)
Enlace versión antigua

Si teneis algun comentario o duda sobre su funcionamiento comentad abajo.

Si os gustan las chorradas con emojis, probad también Lovewords.


sábado, 18 de febrero de 2017

Descargar canciones de Youtube con la maxima calidad posible (audio nativo sin recodificar)

Como sabéis existen gran cantidad de paginas web que permiten descargar las canciones de los vídeos de Youtube en formato MP3.
Partiendo de que la calidad de audio de Youtube es bastante baja de por si, al recodificarlo a MP3 se pierde aun mas calidad*, por lo que no hace falta ser un audiofilo para darse cuenta incluso con unos auriculares básicos.
Muchas veces el MP3 llega a ocupar bastante y la velocidad de descarga en estos sitios suele ser baja.

¿Cual es la alternativa? Descargar el audio en formato nativo. Esto se puede hacer mediante youtube-dl.

Para los usuarios de Windows os adjunto un archivo *.zip que podeis extraer en una carpeta con los binarios y unos pequeños scripts *.bat que os simplificará el proceso:
Descarga aquí.

Solo hay que abrir los *.bat y pegar la URL del vídeo (ej: https://www.youtube.com/watch?v=uh6TKlo_BFM) o el ID del vídeo (uh6TKlo_BFM). ¡Veréis que la descarga va rapidísima!

Los vídeos de Youtube se pueden descargargar en distintos formatos de audio nativo cada uno: AAC, OGG Vorbis, y en la maxima calidad OPUS**

-Para reproducir en moviles android podeis usar OGG
-Para reproducir con Windows Media, y Itunes/IOS usad AAC
-Si vuestra intención es reproducirlo con VLC en el ordenador, usad el script de maxima calidad

Si han pasado meses desde que escribí este post, y veis que ya no funciona actualizad a la ultima version de youtube-dl con actualizar.bat.

No todos los videos tienen disponibles todos los formatos. Si por ejemplo un video no esta disponible en OGG probad la descarga en AAC.

* Os recomiendo mi post sobre como detectar MP3 recodificado
** Os recomiendo mi post comparativa de distintos formatos de audio

domingo, 8 de enero de 2017

Experimentos con la Raspberry Pi

¡¡Feliz año nuevo followers!!
En esta ocasión como no se me ocurre nada que publicar, os pongo dos experimentos recientes que hice recientemente con mi Raspberry Pi a ver si os inspiran.

El primero se trata de un ejemplo de Domotica muy simple, en el que creamos un portal web con PHP desde el cual podemos hacer cosas como abrir la puerta del garaje desde un ordenador o un telefono movil ¿Quien necesita llevar el mando encima?



El segundo se trata de la modificación del código fuente de un videojuego para que actue con los GPIO, pudiendo hacer cosas como añadir un segundo display, aunque se podría hacer que activasen motores, encendiesen bombillas, y mas cosas dependiendo de lo que ocurre en el videojuego. ¿Se os ocurren ideas? Bajad el volumen cuando pongais el video :')


sábado, 7 de enero de 2017

Bots: resolviendo los re-capchas: human-tunnel by Juanmv94

Antes cuando los captchas eran simples textos deformados con lineas pintadas por encima no era demasiado complicado mediante OCR obtener una determinada tasa de acierto resolviendo los catchas en los bots.

Ahora con la tecnología re-captcha de Google, implementada en muchísimos sitios esta tarea es casi imposible, ya que las técnicas de visión artificial aunque han avanzado mucho estos últimos años, siguen siendo insuficientes para la complejidad que este tipo de capchas presentan.

Nos podríamos calentar la cabeza haciendo unos algoritmos de visión artificial super avanzados... O podríamos resolver este problema de una forma sencilla, eficiente, y que nadie se esperaba. Como dijo Bill Gates: “Siempre escojeré a un vago para hacer un trabajo difícil… porque, encontrará una manera sencilla de hacerlo”


Pues bien: tenemos un servicio (pagina) web con usuarios que pueden registrarse, loguearse, interactuar,... Y aparte tenemos nuestro bot encargado de hacer alguna función repetitiva (buscar en Google, registrar cuentas, publicar comentarios,...) que puede estar o no relacionada con nuestra web.

Cuando a nuestro bot le aparezca un captcha, solo tendremos que enviar ese captcha a la primera persona de nuestra web que vaya a hacer algo, ya sea registrarse, loguearse, o cualquier otra actividad (esta decisión dependerá de la cantidad de actividad de nuestra web en proporcion con la del bot). ¡Esa persona lo resolverá por nosotros! Aparte le daremos mayor seguridad a nuestra web de una forma gratuita.

La forma de hacerlo sería algo así: 
-Nuestro servidor establece una conexion HTTPS con re-capcha y le mostramos al usuario ese mismo re-capcha desde nuestra web, (normalmente tambien desde HTTPS) creando una conexion parecida a un proxy en la que nuestro servidor hace un man-in-the-middle.
-Cuando el usuario resuelva correctamente el captcha (A veces puede darse el caso de que lo fallase) nuestro servidor que intercepta la comunicación lo sabrá, permitiendole acceso al usuario, y continuando la ejecución del bot.

De momento es solo un concepto, que no debería ser muy dificil de implementar.
Comentad cualquier duda que tengáis, comentario, o agradecimiento.