Bueno, pues tonterías aparte, con mi reciente incremento de seguidos y seguidores en mi cuenta, me di cuenta al ejecutarlo, de que el instascript que hice tiene una gran limitación: Solo carga los primeros 200 seguidos/seguidores, ya que la pagina de texto plano de Instagram que carga los seguidos seguidores esta limitado a 200, dando un link a una pagina con los siguientes repetidamente hasta que ya no hay mas y no hay mas links. Bueno pues he actualizado el post y ahora si teneis mas de 200 seguidores/seguidos el script funcionará correctamente. Cualquier comentario o duda aquí.
Blog enfocado a la informatica y a la tecnología. Escrito de una forma amena y sencilla de forma que todos los que tengais cierto interes por la tecnología, podais entender.
martes, 16 de junio de 2015
Actualizacion Insta-script
Bueno, pues recientemente empecé a seguir nueva gente en Instagram, y viendo que muchos no me seguian de vuelta, decidí organizar un evento en el que dejaría de seguir a todos los que no me siguieran de vuelta en un mismo día, a la vez que celebrariamos una fiesta al mas puro estílo hardcore. Se tarta de #UnFollowProjectFest2015.
sábado, 13 de junio de 2015
Transmitir datos por la toma de auriculares: archivos de cualquier tipo
Bueno, pues en el anterior articulo os enseñé como transmitir imagenes sin compresion a traves de la toma de auriculares con los defectos que esta transmisión analogica suponia (Desincronización, alteracion de los valores,...) por lo que no pasé de las imagenes en blanco y negro sin compresion. No obstante, aprovechando que tenia un par de dias de descanso entre los examenes finales, analicé las limitaciones que esta transmisión analogica de audio me suponía, y decidí buscar una forma de transmitir datos digitales de forma fiable y a una velocidad aceptable.
Pues lo conseguí, despues de analizar el comportamiento de las señales de audio analogicas de la entrada de audio, conseguí crear un codificador y un decodificador de archivos que permiten transmitir cualquier tipo de archivo de forma fiable (y con sincronizacion) a una velocidad de hasta 48kbps (con una señal de audio a 48Khz con mis equipos).
Esta forma de transmitir los datos es haciendo variar la señal de audio de 1 a -1 en intervalos muy pequeños transmitiendo los datos de forma binaria. Esto es distinto a por ejemplo como se codificaban los datos en cassetes de ZX Expectrum o similares, los cuales al codificar en medios mas sensibles como son los cassetes, utilizaban tonos (a una velocidad de datos mucho menor). Os adjunto los programas con... Atencion... El codigo fuente (Es la primera vez en la historia de mi blog que adjunto un codigo fuente, sin contar scripts linux).
Podeis decargar todo aquí. Dentro del zip hay un fichero con instrucciones detalladas sobre el uso.
Por ultimo recomiendo transmitir los archivos siempre comprimidos (en zip por ejemplo) ya que los valores altos o bajos continuados hacen que la señal acabe cayendo (Como se puede apreciar en la imagen), lo cual puede arruinar la transmision.
Cualquier duda o comentario aqui me teneis ;)

Esta forma de transmitir los datos es haciendo variar la señal de audio de 1 a -1 en intervalos muy pequeños transmitiendo los datos de forma binaria. Esto es distinto a por ejemplo como se codificaban los datos en cassetes de ZX Expectrum o similares, los cuales al codificar en medios mas sensibles como son los cassetes, utilizaban tonos (a una velocidad de datos mucho menor). Os adjunto los programas con... Atencion... El codigo fuente (Es la primera vez en la historia de mi blog que adjunto un codigo fuente, sin contar scripts linux).

Por ultimo recomiendo transmitir los archivos siempre comprimidos (en zip por ejemplo) ya que los valores altos o bajos continuados hacen que la señal acabe cayendo (Como se puede apreciar en la imagen), lo cual puede arruinar la transmision.
Cualquier duda o comentario aqui me teneis ;)
sábado, 6 de junio de 2015
Transmitiendo datos (imagenes) por la toma de auriculares
Si leisteis el articulo en el que imprimí canciones en formato PCM en un folio, este se trata del experimento a la inversa. Lo que hago es transmitir una imagen a traves de la toma de auriculares, la cual como sabeis trabaja con audio analogico, por lo que usaremos imagenes sin comprimir (*.BMP)
-Procedimiento:
¿Como lo haremos? Lo primero es pasar la imagen a transmitir en formato jpg o png (o el que sea) a formato BMP, ya sea abriendolo con Paint, Gimp, o vuestro programa favorito, para pasarlo a BMP.


-Resultados:
El primer problema que vemos con este experimento es la desincronización, aunque la tasa de bits es igual en los dos equipos, hay una ligera diferencia, la cual al no haber ningun modo de sincronización no se puede evitar. Esto hace que sea imposible transmitir una imagen en RGB, ya que se distorsionan los colores como podeis ver en la imagen de ejemplo mas adelante.
El segundo problema es el contraste. Al no conservar en la grabacion y la emisión el mismo volumen de audio, los resultados son que hay distintos niveles de color/BN.
Aunque he realizado el experimento con varias imagenes os dejo las 2 mas relevantes:
La primera es de una imagen de ejemplo de Windows, a la cual bajé bastante la resolución y transmití a 16.000 Hz desde la Raspberry-Pi. Como veis, incluso a bajos rates de audio, es imposible evitar la desincronizacion y los colores salen alterados. Si queremos obtener resultados buenos debemos utilizar imagenes B/N.


viernes, 22 de mayo de 2015
(OBSOLETO) Como saber quien no te sigue de vuelta en Instagram
Bueno, pues en esta ocasión, he hecho este script por peticion de una amiga, ya que como sabréis en la mayoria de los casos mis articulos los hago buscando llamar vuestra atención, no porque me pidáis por ejemplo como hacer las descargas de internet mas rapido, sino porque yo me adelanto a vosotros (porque os interesa todo lo que publico ¿a que si?).
En este caso se trata de un shell script para linux que igual que el script para hackear vendecookies esta basando en wget y comandos linux de edicion de texto.
Este script lo que hace en primer lugar es obtener el ID de usuario (un numero) asociado al nombre de usuario. Para ello y para ahorrarnos un poco de trabajo, el script accede a una pagina web de un tercero "jelled.com" que a partir de un nombre de usuario nos obtiene el ID de usuario.
Para obtener la lista de seguidores y seguidos, el script manda una peticion web a instagram como si estuviesemos usando la version movil (recordemos que en modo escritorio Intagram no deja ver los seguidores).
Estas listas son almacenadas en el ordenador (ya de paso) y mas tarde son procesadas para obtener en primer lugar los usuarios que sigues y no te siguen, y los usuarios que te siguen y no sigues.
Por ultimo aclarar que no es necesario introducir la contraseña, y este script se puede utilizar con cualquier usuario que querais, no solo el vuestro.
Este script no funcionará si teneis el usuario privado
En esta ocasion dado que es un simple shell script, en vez de subirlo a Google drive os lo dejo aqui a continuación. Si no teneis Linux y quereis saber vuestros resultados me podeis escribir un comentario en el post y lo puedo ejecutar por vosotros.
echo Introduce usuario instagram:
read us
usid=`wget 'http://jelled.com/ajax/instagram?do=username&username='$us -q -O -| awk -F '"id":"' '{print $2}' | awk -F '"' '{print $1}'`
wget http://instagram.com/api/v1/friendships/$usid/followers/ -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' > seguidores.txt
maxid=`wget http://instagram.com/api/v1/friendships/$usid/followers/ -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
while [ ! -z $maxid ]
do
wget 'http://instagram.com/api/v1/friendships/'$usid'/followers/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' >> seguidores.txt
maxid=`wget 'http://instagram.com/api/v1/friendships/'$usid'/followers/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
done
wget http://instagram.com/api/v1/friendships/$usid/following/ -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' > seguidos.txt
maxid=`wget http://instagram.com/api/v1/friendships/$usid/following/ -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
while [ ! -z $maxid ]
do
wget 'http://instagram.com/api/v1/friendships/'$usid'/following/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' >> seguidos.txt
maxid=`wget 'http://instagram.com/api/v1/friendships/'$usid'/following/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
done
seguidos=`cat seguidos.txt | wc -l`
seguidores=`cat seguidores.txt | wc -l`
echo
echo USUARIOS QUE SIGUES Y NO TE SIGUEN
echo -----------------------------------
echo
for (( i=1 ; i <= $seguidos ; i++ ))
do
us=`sed -n "$i"p seguidos.txt`
if [ -z `grep "$us" seguidores.txt` ]
then
echo $us
fi
done
echo
echo USUARIOS QUE TE SIGUEN Y NO SIGUES
echo -----------------------------------
echo
for (( i=1 ; i <= $seguidores ; i++ ))
do
us=`sed -n "$i"p seguidores.txt`
if [ -z `grep "$us" seguidos.txt` ]
then
echo $us
fi
done
En este caso se trata de un shell script para linux que igual que el script para hackear vendecookies esta basando en wget y comandos linux de edicion de texto.

Para obtener la lista de seguidores y seguidos, el script manda una peticion web a instagram como si estuviesemos usando la version movil (recordemos que en modo escritorio Intagram no deja ver los seguidores).
Estas listas son almacenadas en el ordenador (ya de paso) y mas tarde son procesadas para obtener en primer lugar los usuarios que sigues y no te siguen, y los usuarios que te siguen y no sigues.
Por ultimo aclarar que no es necesario introducir la contraseña, y este script se puede utilizar con cualquier usuario que querais, no solo el vuestro.
Este script no funcionará si teneis el usuario privado
En esta ocasion dado que es un simple shell script, en vez de subirlo a Google drive os lo dejo aqui a continuación. Si no teneis Linux y quereis saber vuestros resultados me podeis escribir un comentario en el post y lo puedo ejecutar por vosotros.
echo Introduce usuario instagram:
read us
usid=`wget 'http://jelled.com/ajax/instagram?do=username&username='$us -q -O -| awk -F '"id":"' '{print $2}' | awk -F '"' '{print $1}'`
wget http://instagram.com/api/v1/friendships/$usid/followers/ -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' > seguidores.txt
maxid=`wget http://instagram.com/api/v1/friendships/$usid/followers/ -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
while [ ! -z $maxid ]
do
wget 'http://instagram.com/api/v1/friendships/'$usid'/followers/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' >> seguidores.txt
maxid=`wget 'http://instagram.com/api/v1/friendships/'$usid'/followers/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
done
wget http://instagram.com/api/v1/friendships/$usid/following/ -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' > seguidos.txt
maxid=`wget http://instagram.com/api/v1/friendships/$usid/following/ -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
while [ ! -z $maxid ]
do
wget 'http://instagram.com/api/v1/friendships/'$usid'/following/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'username":"' '{ i=2; do {print $i; i ++} while ( $i > 0) }' | awk -F '"' '{print $1}' >> seguidos.txt
maxid=`wget 'http://instagram.com/api/v1/friendships/'$usid'/following/?ig_sig_key_version=5&max_id='$maxid -q -O - | awk -F 'next_max_id":' '{print $2}' | awk -F '"' '{print $2}'`
done
seguidos=`cat seguidos.txt | wc -l`
seguidores=`cat seguidores.txt | wc -l`
echo
echo USUARIOS QUE SIGUES Y NO TE SIGUEN
echo -----------------------------------
echo
for (( i=1 ; i <= $seguidos ; i++ ))
do
us=`sed -n "$i"p seguidos.txt`
if [ -z `grep "$us" seguidores.txt` ]
then
echo $us
fi
done
echo
echo USUARIOS QUE TE SIGUEN Y NO SIGUES
echo -----------------------------------
echo
for (( i=1 ; i <= $seguidores ; i++ ))
do
us=`sed -n "$i"p seguidores.txt`
if [ -z `grep "$us" seguidos.txt` ]
then
echo $us
fi
done
martes, 28 de abril de 2015
Acelerar las descargas con "axel"
No se si recordareis un post que hice ya bastante tiempo donde os enseñé como programar un router wifi para descargar archivos de internet con el objetivo de evitar tener el ordenador encendido 3 horas para descargar un archivo grande. Por entonces años atras quien tenia internet solia contratar 3 Mbps (megabits por segundo) o a lo mejor hasta 6 (Como yo por entonces).
Ahora las cosas han cambiado, y ahora lo normal es tener mas de 10 Mbps. No obstante si intentais descargar archivos, notareis que muchas veces nunca se llega a esta velocidad, lo que ha hecho pensar a muchos que la compañia les ha puesto velocidad de menos. Si es vuestro caso, hay muchas paginas de test de velocidad de internet que podeis usar.
Volviendo al tema, los problemas por los que nunca se llega a la maxima velocidad son:
-Velocidad de subida del servidor limitada por descarga
-Servidores saturados (Un dia va mas rapido que otro)
-Uso de la red LAN en otras cosas
¿Que podemos hacer para sacar partido de la velocidad que tenemos?
Hay un programa de descargas no muy conocido llamado "axel" el cual es conocido sobre todo por usuarios de Linux (Aunque ahora tambien tiene version de windows) que funciona en la terminal y que lo que hace es realizar varias peticiones de descarga a un mismo servidor para intentar "forzar" un aumento de velocidad.
Tambien nos aporta otra ventaja, y es que en el caso de que un mismo archivo esté alojado en varias URLs, puedes utilizarlas simultaneamente para aumentar aun mas la velocidad.
Con esto podemos plantearnos por ejemplo descargar una pelicula en la mitad de tiempo que si la descargamos normalmente, o incluso menos si utilizamos varias URLs.
Os dejo el link del proyecto para Windows, y en el caso de que useis linux: sudo apt-get install axel.
Ahora os comento: muchos pensaran, si esto permite acelerar las descargas... ¿Porque no se implementa esto en los navegadores o programas como JDownloader?
Si todo el mundo usase axel para sus descargas, los servidores estarían mas saturados, y todos acabariamos teniendo velocidades de descarga inferiores a las actuales sin axel.
Por esto, axel es, y debe seguir siendo un programa poco conocido.
No obstante aviso que hay algunos servidores mas estrictos que no permiten mas de un hilo de descargas por IP. Esto consigue que no se puedan acelerar descargas con Axel, con el inconveniente de que solo se puede hacer una descarga simultanea en una red LAN, lo cual es un gran problema si por ejemplo en un aula de ordenadores varios usuarios deben descargar un mismo programa.
No quiero enrollarme mas asi que para cualquier duda podeis comentar aqui, como siempre.
Ahora las cosas han cambiado, y ahora lo normal es tener mas de 10 Mbps. No obstante si intentais descargar archivos, notareis que muchas veces nunca se llega a esta velocidad, lo que ha hecho pensar a muchos que la compañia les ha puesto velocidad de menos. Si es vuestro caso, hay muchas paginas de test de velocidad de internet que podeis usar.
Volviendo al tema, los problemas por los que nunca se llega a la maxima velocidad son:
-Velocidad de subida del servidor limitada por descarga
-Servidores saturados (Un dia va mas rapido que otro)
-Uso de la red LAN en otras cosas
¿Que podemos hacer para sacar partido de la velocidad que tenemos?
Hay un programa de descargas no muy conocido llamado "axel" el cual es conocido sobre todo por usuarios de Linux (Aunque ahora tambien tiene version de windows) que funciona en la terminal y que lo que hace es realizar varias peticiones de descarga a un mismo servidor para intentar "forzar" un aumento de velocidad.
Tambien nos aporta otra ventaja, y es que en el caso de que un mismo archivo esté alojado en varias URLs, puedes utilizarlas simultaneamente para aumentar aun mas la velocidad.
Con esto podemos plantearnos por ejemplo descargar una pelicula en la mitad de tiempo que si la descargamos normalmente, o incluso menos si utilizamos varias URLs.
Os dejo el link del proyecto para Windows, y en el caso de que useis linux: sudo apt-get install axel.
Ahora os comento: muchos pensaran, si esto permite acelerar las descargas... ¿Porque no se implementa esto en los navegadores o programas como JDownloader?
Si todo el mundo usase axel para sus descargas, los servidores estarían mas saturados, y todos acabariamos teniendo velocidades de descarga inferiores a las actuales sin axel.
Por esto, axel es, y debe seguir siendo un programa poco conocido.
No obstante aviso que hay algunos servidores mas estrictos que no permiten mas de un hilo de descargas por IP. Esto consigue que no se puedan acelerar descargas con Axel, con el inconveniente de que solo se puede hacer una descarga simultanea en una red LAN, lo cual es un gran problema si por ejemplo en un aula de ordenadores varios usuarios deben descargar un mismo programa.
No quiero enrollarme mas asi que para cualquier duda podeis comentar aqui, como siempre.
lunes, 13 de abril de 2015
Almacenando música en un folio: metodo final 1:41 de audio
Si leisteis mi anterior post sobre el tema http://tragicomedy-hellin.blogspot.com/2015/03/almacenando-datos-en-un-folio-audio-en.html visteis que el ruido que se genera al imprimir y al escanear una hoja hace casi implanteable almacenar datos en formato barcode, a menos que sea para almacenar una cantidad inferior a 10 KB y escaneando la hoja varias veces.
Bueno, pues queriendo ir mas allá (por aburrimiento como no) quise dar un paso atras, para poder dar dos adelante, como dice el dicho. Con esto me refiero a olvidarme del audio comprimido, el cual al fallar un bit se carga grandes fragmentos de audio, y pasar a audio sin comprimir el cual tiene una tolerancia grandísima a fallos. Ademas, cambiaría el formato barcode blanco y negro por escala de grises codificando en UNSIGNED 8BIT PCM (En el audio sin comprimir, aunque todas las muestras fallen, con valores similares al original, se puede recuperar). Esta gran tolerancia me permite utilizar resoluciones muy grandes, sin preocuparme demasiado (sin llegar a los limites tecnicos de la impresora y escaner, claro).
Esto me permitió, que mientras que con el barcode conseguí codificar 0:07 en baja calidad, asi he conseguido meter en una cara de un folio... ¡1:41 de audio! para conseguir tanta cantidad de audio, he tenido que utilizar un muestreo de tan solo 6000 Hz, suficiente para que se entiendan y reconozcan las voces.
Para esto, cada pixel tiene una muestra (8 bits = 1 byte). En total he imprimido a 1152x531 px, lo que es equivalente a unas 597 Kb. El motivo por el que la resolución horizontal es mayor que la vertical (el triple concretamente) es que las interferencias entre muestras consecutivas no son relevantes, mientras que las interferencias entre muestras alejadas, crean un "efecto eco", el cual es mas dificil de evitar cada vez que se aumenta la resolución. ¿Podria haber almacenado mas audio? Si, pero no mucho mas. Horizontalmente, la impresora llega a sus limites tecnicos, y no se puede aumentar mas, mientras que verticalmente si se puede pero nos arriesgamos a aumentar el "efecto eco".
Sin enrollarme mas, os adjunto ademas de las fotos que podeis ver aqui, el audio que se obtiene al escanear la hoja codificado y reescalado a 48000 Hz en *.opus a 16kbps para que podais comparar con el post anterior. En concreto en esta prueba he codificado la cancion de Alex Sintek y Ana Torroja. Escucha aquí el audio escaneado.
¿Comentarios? ¿Dudas? pos oc.


Para esto, cada pixel tiene una muestra (8 bits = 1 byte). En total he imprimido a 1152x531 px, lo que es equivalente a unas 597 Kb. El motivo por el que la resolución horizontal es mayor que la vertical (el triple concretamente) es que las interferencias entre muestras consecutivas no son relevantes, mientras que las interferencias entre muestras alejadas, crean un "efecto eco", el cual es mas dificil de evitar cada vez que se aumenta la resolución. ¿Podria haber almacenado mas audio? Si, pero no mucho mas. Horizontalmente, la impresora llega a sus limites tecnicos, y no se puede aumentar mas, mientras que verticalmente si se puede pero nos arriesgamos a aumentar el "efecto eco".
Sin enrollarme mas, os adjunto ademas de las fotos que podeis ver aqui, el audio que se obtiene al escanear la hoja codificado y reescalado a 48000 Hz en *.opus a 16kbps para que podais comparar con el post anterior. En concreto en esta prueba he codificado la cancion de Alex Sintek y Ana Torroja. Escucha aquí el audio escaneado.
¿Comentarios? ¿Dudas? pos oc.
sábado, 4 de abril de 2015
Como copiar DVDs al ordenador: Tutorial facil
Bueno pues hoy en este tutorial, os enseñaré como pasar un DVD (o bluray, el metodo es el mismo) a formato MP4 o simplemente copiarlo en formato nativo (*.VOB) al ordenador, para almacenarlo ahi, copiarlo a un disco, o compartirlo. Como sabreis, en MP4 la pelicula ocupará mucho menos espacio.
Esto os permitirácopiar peliculas con restriccion anticopia hacer copias de seguridad de películas sin copyright.
Todo esto lo haremos con el reproductor multimedia VLC:
Lo primero que debemos hacer es Introducir el disco en el ordenador y abrir VLC.
En VLC, accedemos a la pestaña medio y pulsamos emitir.
Ahora en el recuadro que nos aparece debemos acceder a la pestaña disco y marcar la casilla Sin menus (Para emitir unicamente la película). Si experimentais problemas porque el reproductor no sabe donde esta la pelicula, poned en marcha la pelicula desde el menu de DVD antes de emitir.
Ahora nos saldra un asistente, donde debemos seleccionar salida a archivo. Este archivo se nos guardará a formato *.ts, pero podremos renombrarlo mas tarde a formato *.mp4 o *.vob. Es importante darle al boton añadir (depende de la version de VLC que tengais) para poder especificar donde se guardará el archivo.
En el siguiente paso, es cuando tenemos que decidir si pasamos la pelicula a MP4 o la guardamos en formato nativo (*.VOB si se trata de un DVD). Os comento que en el caso de pasarla a MP4 el proceso tardará un poquito más, pero merece la pena por el espacio que os podeis ahorrar, sobre todo si teneis pensado compartirla, o simplemente porque preferis que os ocupe 700 MB en vez de 8 GB.
Para pasar la pelicula a MP4 marcamos la casilla de transcodificar, y seleccionamos el perfil de MP4 (En la imagen), en caso contrario, desmarcamos la casilla.
Os recomiendo si vais a transcodificar, que accedais a las opciones (El icono de las herramientas) para modificar por ejemplo el bitrate de video (512 kbps de video es suficiente para que la pelicula os quepa en un CD-R, o incluso mas si la pelicula no es muy larga) y el bitrate de audio (Os recomiendo a partir de 128 kbps).
En el ultimo paso del asistente os pregunta si quereis emitir todas las "transmisiones elementales". Esto se refiere a por ejemplo los distintos idiomas del DVD. Recomiendo a menos que la vayais a compartir con gente del extranjero, desmarcar esta casilla, ya que si no el archivo os crecerá mucho inutilmente.
Finalizamos el asistente, y el reproductor empezará a emitir al archivo. No debeis utilizar el reproductor hasta que termine, o si no el proceso se quedará a medio. Lo que si podeis hacer es abrir otra ventana de VLC para hacer otra cosa con el reproductor mientras tanto.
Esto os permitirá
Lo primero que debemos hacer es Introducir el disco en el ordenador y abrir VLC.
En VLC, accedemos a la pestaña medio y pulsamos emitir.
Ahora en el recuadro que nos aparece debemos acceder a la pestaña disco y marcar la casilla Sin menus (Para emitir unicamente la película). Si experimentais problemas porque el reproductor no sabe donde esta la pelicula, poned en marcha la pelicula desde el menu de DVD antes de emitir.
Ahora nos saldra un asistente, donde debemos seleccionar salida a archivo. Este archivo se nos guardará a formato *.ts, pero podremos renombrarlo mas tarde a formato *.mp4 o *.vob. Es importante darle al boton añadir (depende de la version de VLC que tengais) para poder especificar donde se guardará el archivo.

Para pasar la pelicula a MP4 marcamos la casilla de transcodificar, y seleccionamos el perfil de MP4 (En la imagen), en caso contrario, desmarcamos la casilla.
Os recomiendo si vais a transcodificar, que accedais a las opciones (El icono de las herramientas) para modificar por ejemplo el bitrate de video (512 kbps de video es suficiente para que la pelicula os quepa en un CD-R, o incluso mas si la pelicula no es muy larga) y el bitrate de audio (Os recomiendo a partir de 128 kbps).
En el ultimo paso del asistente os pregunta si quereis emitir todas las "transmisiones elementales". Esto se refiere a por ejemplo los distintos idiomas del DVD. Recomiendo a menos que la vayais a compartir con gente del extranjero, desmarcar esta casilla, ya que si no el archivo os crecerá mucho inutilmente.
Finalizamos el asistente, y el reproductor empezará a emitir al archivo. No debeis utilizar el reproductor hasta que termine, o si no el proceso se quedará a medio. Lo que si podeis hacer es abrir otra ventana de VLC para hacer otra cosa con el reproductor mientras tanto.
sábado, 28 de marzo de 2015
The Pirate Bay: Saltando las restricciones geograficas en España mediante DNS y proxy
Bueno chic@s. Hoy es un dia bastante especial y quizas triste para los usuarios de internet españoles, ya que se ha bloqueado el acceso a la famosa web "The pirate bay".
¡Que gran suerte que me teneis a mi! Como siempre para enseñaros mis "trucos de hacker" para saltaros estas restricciones tan tontas. Os hare una breve introducción al bloqueo y os enseñaré a evitarlo de dos maneras (Os recomiendo la segunda, la del proxy, si sois inexpertos):
Aqui en España el bloqueo de webs es algo muy poco común, ya que esto es mas frecuente en paises como china.
Y quizas que el bloqueo sea menos comun, es la causa de que la efectividad sea bastante mala, os explico:
De momento, a dia de hoy de Marzo de 2015, los servidores DNS españoles tienen bloqueada la pagina, no obstante, las IPs de los servidores NO. ¿Que significa esto? Un servidor DNS es el encargado de traducir una direccion web (Ej: www.blogger.com) en una ip (Ej: 192.168.1.1).
Lo que pasa en España es que el servidor de The Pirate Bay es accesible, pero no hay forma de "Encontrar el camino a ella".
¿Podemos entonces acceder a la pagina desde España? SI para ello haremos uso de un servidor DNS extranjero:
Buscando en Google me encuentro la siguiente pagina en la que tenemos servidores DNS muy interesantes. Ademas de ser de distintos paises permiten bloquear sitios de por ejemplo pornografía, lo cual es muy util en por ejemplo equipos que usan menores. De momento nos centraremos en buscar un servidor DNS extranjero que no restrinja el acceso a http://thepiratebay.se
En este caso me quedo con el servidor DNS Censurfridns.dk de IPs 89.233.43.71 y 89.104.194.142 ubicado en Dinamarca.
Para usar este servidor DNS en vez del que estemos utilizando, accedemos a las propiedades de nuestra conexion a internet, y en el apartado "Protocolo de Internet version 4" accedemos a las propiedades.
Aquí en el apartado de las direcciones DNS, desmarcamos la obtencion automatica de DNS e insertamos la direccion de nuestro servidor de Dinamarca. Deberíais marcar tambien la casilla de "Validar configuración al salir" para que los cambios se hagan efectivos de forma inmediata. Aceptamos, y ahora accedemos a http://thepiratebay.se ... ¡Magia!
En fin, ahora supongamos... ¿Y si nos hubiesen censurado tambien el servidor? ¡Pues tampoco pasa nada!
Existe una cosa llamada servidor proxy. No es algo que se usa habitualmente, pero existe. Explicado de forma que se entienda: consiste en un servidor a la que le enviamos una peticion web. este servidor la consulta en internet, y nos la devuelve. Es como acceder a la web desde un ordenador en cualquier otra punta del planeta (Y con diferente IP, claro)
Si buscamos en Google "Servidor proxy online" nos encontramos con muchas opciones con las que ni siquiera tenemos que tocar la configuracion de red. El primer resultado es https://hide.me/en/proxy
Si accedemos a esta web y en el recuadro introducimos la dirección de Pirate Bay, tambien podremos acceder a la pagina de forma virtual sin problemas ;)
En fin, si teneis alguna duda, sugerencia, o incluso agradecimiento, no dudeis en comentar. Recordad que esto es un blog pequeño y agradezco vuestros comentarios ;)
¡Que gran suerte que me teneis a mi! Como siempre para enseñaros mis "trucos de hacker" para saltaros estas restricciones tan tontas. Os hare una breve introducción al bloqueo y os enseñaré a evitarlo de dos maneras (Os recomiendo la segunda, la del proxy, si sois inexpertos):
Aqui en España el bloqueo de webs es algo muy poco común, ya que esto es mas frecuente en paises como china.
Y quizas que el bloqueo sea menos comun, es la causa de que la efectividad sea bastante mala, os explico:

Lo que pasa en España es que el servidor de The Pirate Bay es accesible, pero no hay forma de "Encontrar el camino a ella".
¿Podemos entonces acceder a la pagina desde España? SI para ello haremos uso de un servidor DNS extranjero:

En este caso me quedo con el servidor DNS Censurfridns.dk de IPs 89.233.43.71 y 89.104.194.142 ubicado en Dinamarca.
Para usar este servidor DNS en vez del que estemos utilizando, accedemos a las propiedades de nuestra conexion a internet, y en el apartado "Protocolo de Internet version 4" accedemos a las propiedades.
Aquí en el apartado de las direcciones DNS, desmarcamos la obtencion automatica de DNS e insertamos la direccion de nuestro servidor de Dinamarca. Deberíais marcar tambien la casilla de "Validar configuración al salir" para que los cambios se hagan efectivos de forma inmediata. Aceptamos, y ahora accedemos a http://thepiratebay.se ... ¡Magia!
En fin, ahora supongamos... ¿Y si nos hubiesen censurado tambien el servidor? ¡Pues tampoco pasa nada!
Existe una cosa llamada servidor proxy. No es algo que se usa habitualmente, pero existe. Explicado de forma que se entienda: consiste en un servidor a la que le enviamos una peticion web. este servidor la consulta en internet, y nos la devuelve. Es como acceder a la web desde un ordenador en cualquier otra punta del planeta (Y con diferente IP, claro)
Si buscamos en Google "Servidor proxy online" nos encontramos con muchas opciones con las que ni siquiera tenemos que tocar la configuracion de red. El primer resultado es https://hide.me/en/proxy
Si accedemos a esta web y en el recuadro introducimos la dirección de Pirate Bay, tambien podremos acceder a la pagina de forma virtual sin problemas ;)
En fin, si teneis alguna duda, sugerencia, o incluso agradecimiento, no dudeis en comentar. Recordad que esto es un blog pequeño y agradezco vuestros comentarios ;)
martes, 17 de marzo de 2015
Almacenando datos en un folio: audio en un codigo de barras 2D
Hace ya tiempo surgio la moda de los BIDIs o codigos QR, unos codigos de barras 2D que podias escanear con la camara del movil y acceder a contenido multimedia.
Hay muchas paginas para crear estos BIDIs o codigos QR, yo he usado http://www.codigos-qr.com/
Usando una resolucion de cuadrado de 2x2 (Respecto a la resolucion de mi impresora) conseguí hacer un barcode de hasta 352x500, o lo que es lo mismo, 176.000 bits que son unas 21,4 KB.
Estos BIDIs, no obstante, tienen una capacidad muy limitada, y en la inmensa mayoria de los casos contienen enlaces a paginas web, aunque tambien son capaces de almacenar numeros de telefono, pass de wifi, o texto, como en el ejemplo que pongo a continuación.

La cuestion es que yo me propuse algo mas grande, almacenar en un simple codigo de barras en papel algo mas que un texto o un enlace.
Para ello hice uso de la impresora y el escaner.
Lo primero que pensé era en almacenar una imagen jpg, pero vi que era un ejemplo bastante aburrido, ya que aunque se pueda representar una imagen en color de poca resolucion en un barcode B/N, cualquiera puede imprimir una imagen en una hoja.
Luego pense en un ROM o .exe, pero suponiendo las limitaciones de espacio de un barcode descarté la idea.
Finalmente me acordé de el codec OPUS que os comenté en una entrada anterior, el cual puede comprimir el sonido mas incluso que MP3 y permite mas flexibilidad en cuanto a bitrates que OGG. Asi que hice calculos, y podriamos decir que hice tres intentos:
1.

Aprovechando este tamaño, codifiqué en OPUS un fragmento de una cancion a 16 kbps, una calidad de sonido aceptable para el caso. Asi pude codificar 15 segundos de música en el barcode.
Cuando lo escanee y vi el resultado... ¡fracaso! aunque la impresión se hizo bien y la canción esta correctamente en la hoja, a la hora de escanear, el ruido de la imagen escaneada alteró gran cantidad de bits, haciendo que ni la cabecera del fichero quedase correctamente, por lo que no conseguí ningún resultado.
2.
Esta vez, asumiendo que iba a usar el escaner, aumenté el tamaño de pixel del barcode a 4x4 un tamaño de pixel ridiculamente grande, asi, aun sin utilizar el folio del todo (No necesito gastar demasiada tinta en una "demo") hice un barcode de 160x244, o sea 39.040 b
its que son unas 4,75 KB.
its que son unas 4,75 KB.
Para este ejemplo, codifico solo 4 segundos de audio a 12 kbps, una calidad ligeramente inferior.
imprimo, escaneo y... ¡casi! La cabecera del fichero es correcta, VLC me detecta el archivo, pero lamentablemente al haber algunos bits corruptos, el formato OPUS no reproduce los fragmentos de archivo que no cumplen su correspondiente checksum, en este caso hay 3 fragmentos (que se pueden distinguir a simple vista en la imagen) y ninguno cumple el checksum. Me pareció increible que hubisen fallos incluso con este tamaño de pixel.
Tras comparar el archivo escaneado y el original, vi que solo habian 3 bits corruptos, los cuales (que casualidad) estaban cada uno en un fragmento distinto. Estos fallos solo corresponden: 3/39040*100= 0,008% y arruinan los resultados.
3.
Simplemente, como habia tenido mala suerte, volví a escanear este segundo folio... 3 veces. Tras escanear y abrir el archivo por 3ª vez... Consigo oir la música! Conseguí reproducir 2 segundos de música almacenados en el barcode del folio. ¿Por que solo 2? Porque como dije, habia 3 fragmentos de sonido. El fragmento del final tenia un bit corrupto y no se reproducia, pero al estar la cabecera y los dos primeros fragmentos correctos, se reproducian estos y en total 2 segundos de audio de los 4 iniciales.
Aunque iba a finalizar aquí, se me ocurrió combinar los 3 primeros escaneos fallidos que hice (Sin contar este ultimo) a ver que pasaba. Los escaneos los tenia en escala de grises en GIMP, asi que los combiné en 3 capas superpuestas (cada uno con una transparencia de 33%) para pasarlos entonces a monocromo y probar con los resultados. Finalmente conseguí oir el audio original completo: Combinando los 3 escaneos conseguí recuperar el archivo desde la hoja sin fallos.
Aunque iba a finalizar aquí, se me ocurrió combinar los 3 primeros escaneos fallidos que hice (Sin contar este ultimo) a ver que pasaba. Los escaneos los tenia en escala de grises en GIMP, asi que los combiné en 3 capas superpuestas (cada uno con una transparencia de 33%) para pasarlos entonces a monocromo y probar con los resultados. Finalmente conseguí oir el audio original completo: Combinando los 3 escaneos conseguí recuperar el archivo desde la hoja sin fallos.
Anexo: ¿Como imprimir los archivos?
Para imprimir los archivos en un folio cree un archivo BMP monocromo con la resolucion requerida y lo dejé en blanco.
Con un editor hexadecimal remplacé el contenido de este BMP en blanco con los datos del archivo de sonido. Ahora solo hay que abrir el BMP e imprimirlo.
¿Como escanear los archivos?
Tras escanear la hoja en formato BMP (Para evitar las perdidas de JPG), abro el archivo con Gimp y extiendo el barcode a las 4 esquinas del area de dibujo.
Cambio la resolución de la imagen escaneada a la resolucion del barcode y guardo en monocromo.
Ahora con un editor hexadecimal extraigo el archivo desde el BMP obtenido.
Conclusiones:
Es interesante saber que es posible almacenar un archivo de audio de esta manera, no obstante, el ruido a la hora de escanear hace que se aun metodo bastante poco recomendado XD
Cuando escaneas un BIDI ademas de que es mas pequeño y hay menos probabilidades de fallo, se esta comprobando su checksum en cada fps de la camara, es por eso por lo que a veces hay que tenerlo con la camara un tiempo, pero siempre acierta.
En este caso, al ser los barcodes de un tamaño enorme, a pesar de que un escaner tiene una calidad mucho mayor que una camara para este objetivo, al obtener una unica imagen, las probabilidades de que hayan fallos son altas.
Conclusiones:
Es interesante saber que es posible almacenar un archivo de audio de esta manera, no obstante, el ruido a la hora de escanear hace que se aun metodo bastante poco recomendado XD
Cuando escaneas un BIDI ademas de que es mas pequeño y hay menos probabilidades de fallo, se esta comprobando su checksum en cada fps de la camara, es por eso por lo que a veces hay que tenerlo con la camara un tiempo, pero siempre acierta.
En este caso, al ser los barcodes de un tamaño enorme, a pesar de que un escaner tiene una calidad mucho mayor que una camara para este objetivo, al obtener una unica imagen, las probabilidades de que hayan fallos son altas.
martes, 20 de enero de 2015
Ejemplo de game-hack en ensamblador (x86)
Bueno chicos, como no recibo ninguna sugerencia, os enseño un ejemplo de las modificaciones o hacks que se pueden hacer fácilmente en ensamblador/hexadecimal.
En esta ocasión quería centrarme en algún juego para Windows, que es lo que se lleva hoy en día (Aunque modificar ROMs es mas sencillo, este formato ya no se lleva)
Me centraré en lo que viene siendo modificación de código, si quisierais modificar gráficos o música, es tan sencillo como acceder a la carpeta donde esta instalada la aplicación o juego, y buscar el archivo que queréis cambiar. El código por el contrario se suele encontrar en el *.exe
Concretamente en este ejemplo os enseñaré un hack que hice para el juego "Midtown Madness 2",
un juego que tiene ya unos años, no es un juego legendario, pero me basta para haceros un ejemplo de lo que se puede hacer de forma muy sencilla en ensamblador.
Concretamente, en este juego de coches, el hack consiste en que al activar el claxon del coche, el coche se eleva por los aires, permitiendo acceder a escenarios que no se puede acceder normalmente en el juego y pasar encima de los edificios.
Para ello, necesitamos encontrar el codigo que se ejecuta cuando activamos el claxon.
Gracias al programa "Cheat Engine" pude encontrar este codigo con facilidad. (Recordemos que Cheat Engine ademas de ser un conocido programa para modificar variables in-game, tambien tiene un desensamblador muy bueno)
Cuando encendemos el claxon se ejecuta un procedimiento en la dirección 0x000d17dc y cuando se apaga, otro procedimiento en la dirección 0x000d181c.
Si vamos a estas direcciónes encontramos:
...................
000D17DC - mov [esi],00000001
000D17E2 - pop esi
000D17E3 - ret
000D17E4 - nop
000D17E5 - nop
000D17E6 - nop
000D17E7 - nop
000D17E8 - nop
000D17E9 - nop
000D17EA - nop
000D17EB - nop
000D17EC - nop
000D17ED - nop
000D17EE - nop
000D17EF - nop
000D17F0 - push esi
...................
...................
000D181C - mov [esi],00000000
000D1822 - pop esi
000D1823 - ret
000D1824 - nop
000D1825 - nop
000D1826 - nop
000D1827 - nop
000D1828 - nop
000D1829 - nop
000D182A - nop
000D182B - nop
000D182C - nop
000D182D - nop
000D182E - nop
000D182F - nop
000D1830 - push ebp
...................
...................
000D17DC - mov [esi],00000001
000D17E2 - mov esi,[005DFD20]
000D17E8 - add esi,00002450
000D17EE - jmp 000D1824
000D17F0 - push esi
...................
...................
000D181C - mov [esi],00000000
000D1822 - pop esi
000D1823 - ret
000D1824 - mov [esi],41F00000
000D182A - pop esi
000D182B - ret
000D182C - nop
000D182D - nop
000D182E - nop
000D182F - nop
000D1830 - push ebp
En esta ocasión quería centrarme en algún juego para Windows, que es lo que se lleva hoy en día (Aunque modificar ROMs es mas sencillo, este formato ya no se lleva)
Me centraré en lo que viene siendo modificación de código, si quisierais modificar gráficos o música, es tan sencillo como acceder a la carpeta donde esta instalada la aplicación o juego, y buscar el archivo que queréis cambiar. El código por el contrario se suele encontrar en el *.exe
Concretamente en este ejemplo os enseñaré un hack que hice para el juego "Midtown Madness 2",
un juego que tiene ya unos años, no es un juego legendario, pero me basta para haceros un ejemplo de lo que se puede hacer de forma muy sencilla en ensamblador.
Para ello, necesitamos encontrar el codigo que se ejecuta cuando activamos el claxon.
Gracias al programa "Cheat Engine" pude encontrar este codigo con facilidad. (Recordemos que Cheat Engine ademas de ser un conocido programa para modificar variables in-game, tambien tiene un desensamblador muy bueno)
Cuando encendemos el claxon se ejecuta un procedimiento en la dirección 0x000d17dc y cuando se apaga, otro procedimiento en la dirección 0x000d181c.
Si vamos a estas direcciónes encontramos:
...................
000D17DC - mov [esi],00000001
000D17E2 - pop esi
000D17E3 - ret
000D17E4 - nop
000D17E5 - nop
000D17E6 - nop
000D17E7 - nop
000D17E8 - nop
000D17E9 - nop
000D17EA - nop
000D17EB - nop
000D17EC - nop
000D17ED - nop
000D17EE - nop
000D17EF - nop
000D17F0 - push esi
...................
...................
000D181C - mov [esi],00000000
000D1822 - pop esi
000D1823 - ret
000D1824 - nop
000D1825 - nop
000D1826 - nop
000D1827 - nop
000D1828 - nop
000D1829 - nop
000D182A - nop
000D182B - nop
000D182C - nop
000D182D - nop
000D182E - nop
000D182F - nop
000D1830 - push ebp
...................
Como veis, el registro esi en estos dos casos contiene la dirección de memoria de un entero que se pone a 1 cuando el claxon esta encendido y a 0 cuando esta apagado. Esta variable ha sido la que me ha ayudado a encontrar el código. Y ademas vemos una buena noticia, y es que hay muchos bytes sin utilizar hasta el siguiente fragmento de código, lo cual nos ayuda a implementar el mod.
Ahora para hacer que el coche vuele, lo que tendremos que hacer es meter un código en este hueco que ponga el valor de la velocidad vertical del coche a un valor alto.
Este valor es un float que se debe encontrar con un puntero (situado en la dirección 0x005dfd20 al que hay que añadir a su valor 2450 en hexadecimal).
Yo personalmente le he puesto 30.0 de valor al float (41f00000), aunque se le puede dar cualquier otro, mayor o menor. Podemos aprovechar el registro esi que como vemos es reemplazado inmediatamente después cargando desde stack. El código queda así:
000D17DC - mov [esi],00000001
000D17E2 - mov esi,[005DFD20]
000D17E8 - add esi,00002450
000D17EE - jmp 000D1824
000D17F0 - push esi
...................
...................
000D181C - mov [esi],00000000
000D1822 - pop esi
000D1823 - ret
000D1824 - mov [esi],41F00000
000D182A - pop esi
000D182B - ret
000D182C - nop
000D182D - nop
000D182E - nop
000D182F - nop
000D1830 - push ebp
...................
Como veis, he aprovechado parte de los bytes sin utilizar tras el procedimiento de apagar el claxon, ya que con el hueco del procedimiento al encender el claxon me quedaba corto de espacio.
¡Y con esto ya esta implementado!
Si lo vemos con un editor hexadecimal vemos que los bytes que hemos cambiado son muy pocos.
Y sorprendentemente estos pocos bytes nos han permitido hacer un mod de vuelo totalmente funcional.
Ya sabeis, cualquier comentario o sugerencia (con otros juego si queréis) que queráis hacer... No es necesario registrarse para comentar. Aunque creo que ya lo sabeis :')
martes, 13 de enero de 2015
¿Cual es el mejor formato de audio? ¿MP3? ¿OGG?
Compara tu mismo os formatos aqui ;)
Bueno chicos, todos hemos usado siempre el formato MP3 de toda la vida para almacenar y compartir música, al menos la inmensa mayoría. MP3 como todos sabemos en un formato de compresión de audio con perdidas que ahorra mucho espacio respecto al audio sin comprimir PCM (Como en los CDs de audio).
Pero MP3 no es el único, de hecho, es yo creo, el formato mas antiguo que se usa actualmente en la actualidad, en cuanto formatos de audio buenos con perdida.
Otros formatos que salieron mas tarde son:
*.WMA, *.AAC y *.OGG.
Recientemente el equipo xiph.org creador de OGG Vorbis ha desarrollado otro formato de audio del cual hablaré tambien brevemente: *.OPUS
MP3 fue desarrollado por la fundación MPEG en 1994, y el mayor problema que presentaba era que este formato tenia una patente por la que se debia pagar a MPEG por su uso (o algo de eso). Esto fue el motivo de que por ejemplo mas tarde la fundacion Xiph.org creara el formato de audio abierto OGG Vorbis (Como podeis ver en la Wikipedia)
Hoy en día, el problema de MP3 ya no es la patente (Hoy en día la gente usa MP3 con total libertad) sino que al ser el formato de audio mas antiguo de los que hay en la comparativa, es el que en general tiene menor eficacia.
La eficacia de un formato o de otro tambien depende del bitrate entre otros. Por ejemplo. El formato AAC que utiliza itunes a 192 kbps es el mejor formato de compresión a este bitrate, por encima de MP3 y OGG, pero solo a partir de este bitrate.
En general, y en mi opinión, a 128 kbps que es la tasa de bits mas utilizada y para abajo, el mejor formato es OGG.
la ventaja de AAC (Ademas de su eficacia a partir de 192 kbps) por lo que lo utiliza itunes, es la posibilidad de incluir proteccion de datos de derechos de autor (anticopia).
No obstante, a bajos bitrates puede ser incluso peor que MP3.
MP3 y WMA, son en general y para mi gusto los peores. WMA, que parece ser un poco mejor que MP3, fue el segundo formato de audio mas usado en la anterior decada (2000-2009). Muchos discmans y reproductores de MP3 fueron compatibles con WMA, hoy en dia este formato casi ni se usa, se podria decir que ha sido reemplazado por AAC (Gracias a la popularidad de Itunes).
OGG Vorbis, a pesar de su muy baja popularidad entre la gente, es un muy buen formato de compresión, y lo mejor de todo, es abierto.
Su alta calidad de compresión y su formato abierto, hace que sea uno de los formatos favoritos en los desarrolladores de videojuegos, por ejemplo: OGG es el formato elegido para la música de la saga de videojuegos GTA, incluido GTA San Andreas.
OGG tambien es el formato de audio utilizado en Spotify.
OPUS es el nuevo formato de audio desarrollado por Xiph.org como un formato pensado para audio en streaming. Es un formato de audio que combina los codec SILK (de skype) para el audio hablado y CELT para la música (CELT era el codec de audio que estaba desarrollando Xiph.org como sucesor de Vorbis). Este formato apenas tiene un par de años, y a pesar de que tiene una gran eficacia, esta totalmente enfocado en el streaming y la baja latencia. Una gran desventaja de este formato pese a su eficacia, es que la tasa de muestras esta fija a 48000 Hz, haciendo que si por ejemplo queremos convertir un archivo de audio a 44100 hz (Como en un CD de audio y la mayoria de MP3s) a esta nueva tasa de frecuencia, se tendria que reescalar.
Se que es muy dificil distinguir la calidad en canciones a 128 kbps, asi que como prueba para que compareis la eficacia de los distintos formatos, os adjunto la cancion de Bon Jovi - Living on a prayer a 64 kbps en formatos MP3, AAC, OGG y OPUS. Todos ocupan casi lo mismo, unos 1,80 Mb.
Para ello convertire un fichero original en MP3 a 160 kbps tambien adjunto, por lo que la calidad final si convirtieramos directamente desde CD seria un poco mejor tal vez.
Vosotros mismos podeis ver la comparación. En mi opinion los mejores formatos a este bitrate son en orden: OPUS, OGG, MP3, AAC. Descarga arriba del todo.
¿Os esperabais esta calidad de sonido de OGG y OPUS en un archivo de solo 1,80 mb? Comentad ;)
Bueno chicos, todos hemos usado siempre el formato MP3 de toda la vida para almacenar y compartir música, al menos la inmensa mayoría. MP3 como todos sabemos en un formato de compresión de audio con perdidas que ahorra mucho espacio respecto al audio sin comprimir PCM (Como en los CDs de audio).
Pero MP3 no es el único, de hecho, es yo creo, el formato mas antiguo que se usa actualmente en la actualidad, en cuanto formatos de audio buenos con perdida.
Otros formatos que salieron mas tarde son:
*.WMA, *.AAC y *.OGG.
Recientemente el equipo xiph.org creador de OGG Vorbis ha desarrollado otro formato de audio del cual hablaré tambien brevemente: *.OPUS
MP3 fue desarrollado por la fundación MPEG en 1994, y el mayor problema que presentaba era que este formato tenia una patente por la que se debia pagar a MPEG por su uso (o algo de eso). Esto fue el motivo de que por ejemplo mas tarde la fundacion Xiph.org creara el formato de audio abierto OGG Vorbis (Como podeis ver en la Wikipedia)
Hoy en día, el problema de MP3 ya no es la patente (Hoy en día la gente usa MP3 con total libertad) sino que al ser el formato de audio mas antiguo de los que hay en la comparativa, es el que en general tiene menor eficacia.
La eficacia de un formato o de otro tambien depende del bitrate entre otros. Por ejemplo. El formato AAC que utiliza itunes a 192 kbps es el mejor formato de compresión a este bitrate, por encima de MP3 y OGG, pero solo a partir de este bitrate.
En general, y en mi opinión, a 128 kbps que es la tasa de bits mas utilizada y para abajo, el mejor formato es OGG.
la ventaja de AAC (Ademas de su eficacia a partir de 192 kbps) por lo que lo utiliza itunes, es la posibilidad de incluir proteccion de datos de derechos de autor (anticopia).
No obstante, a bajos bitrates puede ser incluso peor que MP3.
MP3 y WMA, son en general y para mi gusto los peores. WMA, que parece ser un poco mejor que MP3, fue el segundo formato de audio mas usado en la anterior decada (2000-2009). Muchos discmans y reproductores de MP3 fueron compatibles con WMA, hoy en dia este formato casi ni se usa, se podria decir que ha sido reemplazado por AAC (Gracias a la popularidad de Itunes).
OGG Vorbis, a pesar de su muy baja popularidad entre la gente, es un muy buen formato de compresión, y lo mejor de todo, es abierto.
Su alta calidad de compresión y su formato abierto, hace que sea uno de los formatos favoritos en los desarrolladores de videojuegos, por ejemplo: OGG es el formato elegido para la música de la saga de videojuegos GTA, incluido GTA San Andreas.
OGG tambien es el formato de audio utilizado en Spotify.
OPUS es el nuevo formato de audio desarrollado por Xiph.org como un formato pensado para audio en streaming. Es un formato de audio que combina los codec SILK (de skype) para el audio hablado y CELT para la música (CELT era el codec de audio que estaba desarrollando Xiph.org como sucesor de Vorbis). Este formato apenas tiene un par de años, y a pesar de que tiene una gran eficacia, esta totalmente enfocado en el streaming y la baja latencia. Una gran desventaja de este formato pese a su eficacia, es que la tasa de muestras esta fija a 48000 Hz, haciendo que si por ejemplo queremos convertir un archivo de audio a 44100 hz (Como en un CD de audio y la mayoria de MP3s) a esta nueva tasa de frecuencia, se tendria que reescalar.
Se que es muy dificil distinguir la calidad en canciones a 128 kbps, asi que como prueba para que compareis la eficacia de los distintos formatos, os adjunto la cancion de Bon Jovi - Living on a prayer a 64 kbps en formatos MP3, AAC, OGG y OPUS. Todos ocupan casi lo mismo, unos 1,80 Mb.
Para ello convertire un fichero original en MP3 a 160 kbps tambien adjunto, por lo que la calidad final si convirtieramos directamente desde CD seria un poco mejor tal vez.
Vosotros mismos podeis ver la comparación. En mi opinion los mejores formatos a este bitrate son en orden: OPUS, OGG, MP3, AAC. Descarga arriba del todo.
¿Os esperabais esta calidad de sonido de OGG y OPUS en un archivo de solo 1,80 mb? Comentad ;)
miércoles, 7 de enero de 2015
WinRar -vs- 7zip
Nota: tal vez os interese este articulo reciente sobre mi propio formato de compresion que combina 7z y rar para obtener la mejor compresión hasta el momento.
Seguramente todos nosotros hayamos usado alguna vez WinRar. Cuando apareció WinRar y el formato RAR, muchos aptamos por utilizar este formato para comprimir nuestros archivos, ya que este era (y sigue siendo) mucho mejor que zip.
Hablando brevemente de los programas correspondiestes a los dos formatos, tanto los compresores WinRAR como 7zip dan soporte para descomprimir ambos archivos. 7zip ademas tiene soporte para muchos mas formatos de compresión que WinRar.
Seguramente todos nosotros hayamos usado alguna vez WinRar. Cuando apareció WinRar y el formato RAR, muchos aptamos por utilizar este formato para comprimir nuestros archivos, ya que este era (y sigue siendo) mucho mejor que zip.
Este formato no es malo, y por ello no me extraña que se use tanto, no obstante me sorprende que no se use el formato .7z tanto como se usa .RAR.
Para los que no hayais oido hablar de 7z, os lo comento brevemente:
Al contrario que RAR, el formato 7z es abierto, y a pesar de ser bastante menos popular, tiene tasas de compresión mayores.
Mas info sobre RAR: http://es.wikipedia.org/wiki/RAR
Mas info sobre 7z: http://es.wikipedia.org/wiki/7z
-Los programas:
WinRAR por otra parte tiene una interfaz grafica mejor que la de 7zip, la cual imagino que es simple para poder ser portado a varias plataformas sin dificultades.
-La compresión:
7zip tiene tasas de compresión mayores que RAR casi siempre. De momento el unico tipo de archivo que he comprobado que RAR comprime un poco mejor que 7z son los archivos de audio WAVE sin comprimir, los cuales no se usan frecuentemente. En el resto de los casos 7zip gana con diferencia.
7zip tarda aproximadamente entre un 125-150% de tiempo en comprimir en comparación con RAR en mi ordenador con procesador dual core. No lo he probado en otras plataformas, pero 7zip puede usar controlar varios nucleos. sobre esto no tengo información de WinRAR. Asi que no sabria deciros la comparacion de tiempo de los dos formatos en un ordenador quad-core actual, pero seguramente sean similares.
-Comparativa:
A continuación hare la compresión de varios archivos cotidianos en formato ZIP, RAR, y 7Z con el maximo nivel de compresión para que veais los resultados.
Los archivos a complimir seran un ROM de Nintendo 64 (SM64) otro de MegaDrive (Sonic 2) y Pokemon Hellín.
A continuación una carpeta con modelos 3D de SketchUp.
Un PDF aleatorio, y por ultimo un archivo de audio WAVE en formato CD (S16_LE a 44,1 kHz)
SM64
Tamaño original: 8,00 Mb
ZIP: 6,01 Mb
RAR: 5,59 Mb
7z: 5,43 Mb
Sonic 2
Tamaño original: 1,00 Mb
ZIP: 740 Kb
RAR: 735 Kb
7z: 712 Kb
Pokemon Hellín
Tamaño original: 1,00 Mb
ZIP: 485 Kb
RAR: 467 Kb
7z: 439 Kb
Carpeta modelos SketchUp
Tamaño original: 25 Mb
ZIP: 13,3 Mb
RAR: 10,9 Mb
7z: 9,65 Mb
Documento PDF
Tamaño original: 7,09 Mb
ZIP: 6,51 Mb
RAR: 6,45 Mb
7z: 6.19 Mb
Musica WAVE sin comprimir
Tamaño original: 36,3 Mb
ZIP: 34,2 Mb
RAR: 26,8 Mb
7z: 33,0 Mb
La comparativa habla por si sola, exceptuando los archvos de audio WAVE que no se suelen usar habitualmente, 7zip obtiene los mejores resultados. Logicamente si comprimimos archivos ya comprimidos como pueden ser JPG o MP3, obtendremos siempre una compresion muy mala y casos en los que por ejemplo el archivo comprimido ocupa mas que el original, o que la mejor compresion es la ZIP o/y la 7Z es la peor con diferencias muy bajas, es por esto que no se suelen comprimir estos tipos de archivos.
domingo, 28 de diciembre de 2014
Como hacer un puntero tactil casero
Bueno, viendo la popularidad que va teniendo mi blog ultimamente, voy a ver si con un post de estos gano seguidores :')
Os voy a decir como crearos un puntero tactil casero, para poder utilizar en las pantallas tactiles capacitivas usadas hoy en día.
Como sabreis, las pantallas capacitivas responden a los materiales electroconductivos, como pueden ser la piel, o los metales.
No obstante si por ejemplo tocais la pantalla con una llave vereis que no pasa nada, ya que para que las pantallas tactiles capacitivas detecten el objeto, este debe tener una determinada superficie tocando la pantalla.
Para hacer este puntero utilizaremos un material electroconductivo flexible capaz de hacer la funcion del dedo y que todos tenemos en nuestras casas: el papel de aluminio.
Necesitareis:
-Un piazo cartulina
-Un piazo papel de aluminio
-Un piazo papel celo
-Un lapiz o un palo cogio der campo (Para acoplarle el puntero)
Pasos
-Recortamos el piazo cartulina en una tira de unos 2 cm de ancho y la doblamos por la mitad haciendo que tenga un ancho de 1 cm. (Si la hacemos demasiado fina no funcionará bien)
-La recubrimos de papel de aluminio
-La recubrimos con una unica capa de papel celo (Para evitar rayar la pantalla)
-Unimos las dos puntas
-La pegamos con papel celo al palo
-Lloramos :'')
Os recuerdo, es muy importante no saltarse el último paso.
Os voy a decir como crearos un puntero tactil casero, para poder utilizar en las pantallas tactiles capacitivas usadas hoy en día.
Como sabreis, las pantallas capacitivas responden a los materiales electroconductivos, como pueden ser la piel, o los metales.
No obstante si por ejemplo tocais la pantalla con una llave vereis que no pasa nada, ya que para que las pantallas tactiles capacitivas detecten el objeto, este debe tener una determinada superficie tocando la pantalla.
Para hacer este puntero utilizaremos un material electroconductivo flexible capaz de hacer la funcion del dedo y que todos tenemos en nuestras casas: el papel de aluminio.
Necesitareis:
-Un piazo cartulina
-Un piazo papel de aluminio
-Un piazo papel celo
-Un lapiz o un palo cogio der campo (Para acoplarle el puntero)
Pasos
-Recortamos el piazo cartulina en una tira de unos 2 cm de ancho y la doblamos por la mitad haciendo que tenga un ancho de 1 cm. (Si la hacemos demasiado fina no funcionará bien)
-La recubrimos de papel de aluminio
-La recubrimos con una unica capa de papel celo (Para evitar rayar la pantalla)
-Unimos las dos puntas
-La pegamos con papel celo al palo
-Lloramos :'')
Os recuerdo, es muy importante no saltarse el último paso.
viernes, 5 de diciembre de 2014
Sugerencias de hacks de ROMS y aplicaciones
Bueno chicos, parece ser que mi ROM hack de "Pokemon Hellin" no ha tenido mucho exito. Es cierto que gran cantidad de gente que visita mi blog es internacional, y no conozco sus gustos, y aunque noto que visitan el blog con frecuencia, casi nunca dejan comentarios. No me importa que comenteis en otros idiomas pero ya sabeis que vuestra opinion es muy valiosa para el blog.
Me gustaria que ya que no os gustó el ROM hack de pokemon, me dieseis alguna sugerencia para un ROM hack o hack de aplicación para Windows. En este caso si lo hago os enseñaría como hacerlo.
Para cualquier tipo de hack siempre es util usar un editor hexadecimal, ya sea para editar texto, tiles, o parametros. Si quereis buscar por ejemplo donde estan los datos de por ejemplo niveles de algun archivo, tambien pueden ser utiles herramientas como Erosionv3, programa encargado de reemplazar determinados bytes en unas direcciones fijadas, aunque no es una herramienta muy destacada para el hacking, ya que en la mayoria de los casos solo provocará fallos en la aplicación/ROM.
Y la herramienta fundamental para estos hacks, es como no el debugger.
Para Windows el debugger mas conocido y en mi opinion mas facil de usar es Cheat Engine, que aunque la mayoria solo lo usan para las tipicas trampas de reemplazar valores numericos en los juegos, contiene un debbuger muy bueno capaz de hacer modificaciones en ensamblador tanto en la RAM perteneciente a la aplicación (aplicacion en ejecucion) como en el mismo ejecutable *.exe (Haciendo cambios permanentes). Para los juegos Gameboy utilizo BGB, un emulador que aunque para mi gusto prefiero el VBA, este incluye un debugger bastante bueno.
Resumiendo, necesito sugerencias. Mediante modificaciones en ensamblador no siempre es posible hacer todo lo que se quiera, o siemplemente puede ser muy complicado, pero en la mayoria de los casos seguramente vuestras ideas son faciles de implementar.
En hacks de windows por ejemplo es facil hacer que el juego Buscaminas tenga el contador que empiece a partir de 500 y en vez de contar el tiempo utilizado haga una cuenta atras desde este valor.
Tambien es facil hacer modificaciones simples en muchos videojuegos actuales (No siempre).
No obstante en el ROM hacking, a pesar de ser demasiado "retro", tienes las ventajas de que las instrucciones z80 son mas sencillas que las intel, y es mas facil aprovechar el espacio no usado para implementar nuevas cosas (las ROMs tienen tamaño 2^n).
Un ejemplo de un hack muy sencillo que os podria haber enseñado a hacer fue "Time Super Mario Land" en el que en vez de tener un limite de tiempo de 400 para cada nivel, se empieza con 100 pero cada vez que recoges un coin, este tiempo aumenta en 5, dandole mas emocion.
Me gustaria que ya que no os gustó el ROM hack de pokemon, me dieseis alguna sugerencia para un ROM hack o hack de aplicación para Windows. En este caso si lo hago os enseñaría como hacerlo.
Para cualquier tipo de hack siempre es util usar un editor hexadecimal, ya sea para editar texto, tiles, o parametros. Si quereis buscar por ejemplo donde estan los datos de por ejemplo niveles de algun archivo, tambien pueden ser utiles herramientas como Erosionv3, programa encargado de reemplazar determinados bytes en unas direcciones fijadas, aunque no es una herramienta muy destacada para el hacking, ya que en la mayoria de los casos solo provocará fallos en la aplicación/ROM.
Y la herramienta fundamental para estos hacks, es como no el debugger.
Para Windows el debugger mas conocido y en mi opinion mas facil de usar es Cheat Engine, que aunque la mayoria solo lo usan para las tipicas trampas de reemplazar valores numericos en los juegos, contiene un debbuger muy bueno capaz de hacer modificaciones en ensamblador tanto en la RAM perteneciente a la aplicación (aplicacion en ejecucion) como en el mismo ejecutable *.exe (Haciendo cambios permanentes). Para los juegos Gameboy utilizo BGB, un emulador que aunque para mi gusto prefiero el VBA, este incluye un debugger bastante bueno.
Resumiendo, necesito sugerencias. Mediante modificaciones en ensamblador no siempre es posible hacer todo lo que se quiera, o siemplemente puede ser muy complicado, pero en la mayoria de los casos seguramente vuestras ideas son faciles de implementar.
En hacks de windows por ejemplo es facil hacer que el juego Buscaminas tenga el contador que empiece a partir de 500 y en vez de contar el tiempo utilizado haga una cuenta atras desde este valor.
Tambien es facil hacer modificaciones simples en muchos videojuegos actuales (No siempre).
No obstante en el ROM hacking, a pesar de ser demasiado "retro", tienes las ventajas de que las instrucciones z80 son mas sencillas que las intel, y es mas facil aprovechar el espacio no usado para implementar nuevas cosas (las ROMs tienen tamaño 2^n).
Un ejemplo de un hack muy sencillo que os podria haber enseñado a hacer fue "Time Super Mario Land" en el que en vez de tener un limite de tiempo de 400 para cada nivel, se empieza con 100 pero cada vez que recoges un coin, este tiempo aumenta en 5, dandole mas emocion.
miércoles, 3 de diciembre de 2014
¿Me puedes sacar la contraseña de ... ?
Es una de las preguntas mas frecuentes que les hacen a los que saben de informatica. ¿La respuesta? Obviamente no. No existe ningun metodo magico para sacarle la contraseña a alguien, pero de lo que queria hablar en este articulo es no de sacar la contraseña a alguien, ¡sino de los riesgos que pueden hacer que te saquen la contraseña a ti!
Iré enumerando los riesgos mas populares hoy en dia con vuestras contraseñas para que los tengais en cuenta:
-El asistente de recuperación de contraseñas:
De esta manera mucha gente incluso famosa han perdido el control de sus cuentas. Hoy en día la recuperación de contraseñas se ha hecho mas segura gracias a la utilización del número de telefono u otras direcciones de e-mail seguras. Anteriormente se usaba una "pregunta de seguridad" la cual era el motivo de muchas cuentas "hackeadas" incluso por gente que no sabe de informatica, solo conociendo en profundidad a esa persona y adivinando sus respuestas.
En su momento lo que hacian algunas personas (entre ellas yo) para evitar ese riesgo, era en la respuesta a la pregunta de seguridad, en vez de poner una palabra representando la respuesta, poner otra contraseña.
Aunque los que hayan creado sus cuentas recientemente seguramente las tengan verificadas con su movil, siguen habiendo muchas cuentas de hotmail o yahoo mail antiguas (ejemplos) que dependen de esta pregunta de seguridad, y que estan vinculadas a cuentas de Facebook, Tuenti,... Poniendolas en peligro, aunque el desuso de redes como messenger hacen que la gente ya no sepa estos e-mails evitando parte del riesgo.
-Wireshark:
Aunque la inmensa mayoria de paginas y cuentas utilizan cifrado SSL en la conexión para evitar que capturen mediante estos programas usuario y contraseña, siguen habiendo paginas como Ask.fm o Vendecookies.com que siguen sin usarlo poniendo en riesgo estas cuentas cada vez que nos conectamos a una red wifi desconocida.
Tuenti aunque esta ya en desuso es un caso raro en el uso de SSL, ya que solo lo usa en el login, pero deja de usarse en el uso de la pagina. Asi cualquier usuario con Wireshark puede leer conversaciones, ver la actividad, e incluso puede que acceder temporalmente a nuestro Tuenti usando la cookie. (No lo he comprobado)
-El famoso glitch de Google Chrome:
Y siguen haciendo actualizaciones ¡y siguen sin solucionarlo!
Accediendo a un ordenador con contraseñas guardadas y el campo de la contraseña completo, cambiando o eliminando el tipo de campo en el debbuger se puede visualizar la contraseña introducida.
Y si a la cuenta se accede automaticamente, basta con iniciar sesion en modo incognito para poder acceder a la pagina de inicio de la pagina que sea para poder ver el campo con la contraseña.
-Cuidado cuando metes la contraseña
Tambien hay otro riesgo a tener en cuenta: ¿Han visto como escribes la contraseña? Es seguro el ordenador que estas usando (Hay ordenadores publicos con keyloggers). A veces hay que evitar poner las cuentas en riegos, y siempre utilizar varias contraseñas distintas.
-Virus
Desde mi punto de vista cada vez menos frecuentes. No obstante tener un antivirus es obligatorio en cualquier ordenador.
Mucha gente confunde Virus con widgets y aplicaciones de Twitter y Facebook, ya que estos publican sin consentimiento del usuario e incluso mandan mensajes. Estos los autoriza la gente porque es para ver por ejemplo un video raro que comparte un amigo de facebook (Publicación que hace la aplicación, no él), o porque en twitter dice alguien de confianza que te metas a un enlace bit.ly para probar una cosa chulisima. Esto son aplicaciones de las redes sociales, no del ordenador/movil. Y se pueden desactivar desde la opcion aplicaciones de Twitter o desde las aplicaciones con permisos de Facebook.
Iré enumerando los riesgos mas populares hoy en dia con vuestras contraseñas para que los tengais en cuenta:
-El asistente de recuperación de contraseñas:
De esta manera mucha gente incluso famosa han perdido el control de sus cuentas. Hoy en día la recuperación de contraseñas se ha hecho mas segura gracias a la utilización del número de telefono u otras direcciones de e-mail seguras. Anteriormente se usaba una "pregunta de seguridad" la cual era el motivo de muchas cuentas "hackeadas" incluso por gente que no sabe de informatica, solo conociendo en profundidad a esa persona y adivinando sus respuestas.
En su momento lo que hacian algunas personas (entre ellas yo) para evitar ese riesgo, era en la respuesta a la pregunta de seguridad, en vez de poner una palabra representando la respuesta, poner otra contraseña.
Aunque los que hayan creado sus cuentas recientemente seguramente las tengan verificadas con su movil, siguen habiendo muchas cuentas de hotmail o yahoo mail antiguas (ejemplos) que dependen de esta pregunta de seguridad, y que estan vinculadas a cuentas de Facebook, Tuenti,... Poniendolas en peligro, aunque el desuso de redes como messenger hacen que la gente ya no sepa estos e-mails evitando parte del riesgo.
-Wireshark:
Aunque la inmensa mayoria de paginas y cuentas utilizan cifrado SSL en la conexión para evitar que capturen mediante estos programas usuario y contraseña, siguen habiendo paginas como Ask.fm o Vendecookies.com que siguen sin usarlo poniendo en riesgo estas cuentas cada vez que nos conectamos a una red wifi desconocida.
Tuenti aunque esta ya en desuso es un caso raro en el uso de SSL, ya que solo lo usa en el login, pero deja de usarse en el uso de la pagina. Asi cualquier usuario con Wireshark puede leer conversaciones, ver la actividad, e incluso puede que acceder temporalmente a nuestro Tuenti usando la cookie. (No lo he comprobado)
-El famoso glitch de Google Chrome:
Y siguen haciendo actualizaciones ¡y siguen sin solucionarlo!
Accediendo a un ordenador con contraseñas guardadas y el campo de la contraseña completo, cambiando o eliminando el tipo de campo en el debbuger se puede visualizar la contraseña introducida.
-Cuidado cuando metes la contraseña
Tambien hay otro riesgo a tener en cuenta: ¿Han visto como escribes la contraseña? Es seguro el ordenador que estas usando (Hay ordenadores publicos con keyloggers). A veces hay que evitar poner las cuentas en riegos, y siempre utilizar varias contraseñas distintas.
-Virus
Desde mi punto de vista cada vez menos frecuentes. No obstante tener un antivirus es obligatorio en cualquier ordenador.
Mucha gente confunde Virus con widgets y aplicaciones de Twitter y Facebook, ya que estos publican sin consentimiento del usuario e incluso mandan mensajes. Estos los autoriza la gente porque es para ver por ejemplo un video raro que comparte un amigo de facebook (Publicación que hace la aplicación, no él), o porque en twitter dice alguien de confianza que te metas a un enlace bit.ly para probar una cosa chulisima. Esto son aplicaciones de las redes sociales, no del ordenador/movil. Y se pueden desactivar desde la opcion aplicaciones de Twitter o desde las aplicaciones con permisos de Facebook.
ROM hack de pokemon: Hellin
Descarga aqui.
Como se que hay muchos viciados al jueguecito tan popular, he creado un rom hack en el que lo que quería mas que hacer un mod util (Que en realidad lo es), era demostrar todos los posibles mods que se le podían crear a un juego ya compilado.
Lo mas fácil obviamente y que podréis ver, son las ligeras modificaciones de las tiles, solo he modificado las pancartas de información y la cara del protagonista cuando esta parado. (Ademas de el letrero al inicio de "Pokemon Hellin"). Aunque este tipo de modificaciones son las mas populares al ser las mas sencillas, podría haber cambiado radicalmente la apariencia, pero no era eso en lo que quería centrarme.
Con una modificación de texto de dialogo, al crear una nueva partida leeréis una introducción a mi mod (No hay mas diálogos modificados).
En fin, que en lo que quería centrarme era en añadir código para el juego, añadir funciones, y mas aprovechando todo el espacio de memoria sin usar que tiene este juego.
Os debo recordar que la dificultad de crear código es mayor que cuando cree el juego de la aventura de Flappy, ya que esta vez no uso un compilador de C, sino que el código que le he añadido al juego lo he escrito en código ensamblador (Z80).
La forma de añadirle código es la siguiente:
-Busco una parte del código donde quiero cambiar el funcionamiento
-Creo una instrucción de salto incondicional a una dirección inicialmente en blanco (Están al final)
-Inserto la función que he reemplazado en esta dirección, antes en blanco
-Le inserto mas código aprovechando el espacio en blanco que tengo
-Una vez escrito todo mi código, con otro salto incondicional vuelvo a la dirección en la que me había quedado del código original.
Y de esta forma he podido implementar por ejemplo, un "ataque" que se diferencia totalmente a los demas. Este ataque que reemplaza a "placaje", llamado "sacrificio", hace que cuando lo usas, tu pokemon contrincante pierde de golpe toda la salud y muere, muriendo tambien el tuyo, aunque estes usando un pk nivel 3 contra uno nivel 45. Esto no funciona al reves, cuando te hacen el ataque a ti. Como yo soy el que escribe el codigo (Soy el que manda), lo he implementado de forma que cuando te lo hacen a ti se comporta como un simple placaje, evitando disgustos.
Y lo mas importante de mi implementación de codigo...
El juego ahora cuenta con un selector de dos hacks ingame que se pueden activar y desactivar a vuestro gusto desde el menú de opciones.
Estos dos hacks son: Hacer a vuestros pokemon inmortales (Aunque le quita un poco la gracia al juego, os ayuda a levear rapidamente enfrentándoos a pokemon fuertes), y el mas util y que mas agradecereis, hacer que no aparezcan pokemon salvajes en la hierba. Estos mods lo bueno que tienen es que no usan Gameshark ni nada de eso, y se pueden seleccionar y de-seleccionar cuando querais desde el mismo juego.
Nada mas chic@s, ya sabeis que para jugarlo podeis utilizar everdrive, emulador en pc, movil, etc. Recordad que no es necesario registrarse para hacer comentarios.
Como se que hay muchos viciados al jueguecito tan popular, he creado un rom hack en el que lo que quería mas que hacer un mod util (Que en realidad lo es), era demostrar todos los posibles mods que se le podían crear a un juego ya compilado.
Lo mas fácil obviamente y que podréis ver, son las ligeras modificaciones de las tiles, solo he modificado las pancartas de información y la cara del protagonista cuando esta parado. (Ademas de el letrero al inicio de "Pokemon Hellin"). Aunque este tipo de modificaciones son las mas populares al ser las mas sencillas, podría haber cambiado radicalmente la apariencia, pero no era eso en lo que quería centrarme.
Con una modificación de texto de dialogo, al crear una nueva partida leeréis una introducción a mi mod (No hay mas diálogos modificados).
En fin, que en lo que quería centrarme era en añadir código para el juego, añadir funciones, y mas aprovechando todo el espacio de memoria sin usar que tiene este juego.
Os debo recordar que la dificultad de crear código es mayor que cuando cree el juego de la aventura de Flappy, ya que esta vez no uso un compilador de C, sino que el código que le he añadido al juego lo he escrito en código ensamblador (Z80).
La forma de añadirle código es la siguiente:
-Busco una parte del código donde quiero cambiar el funcionamiento
-Creo una instrucción de salto incondicional a una dirección inicialmente en blanco (Están al final)
-Inserto la función que he reemplazado en esta dirección, antes en blanco
-Le inserto mas código aprovechando el espacio en blanco que tengo
-Una vez escrito todo mi código, con otro salto incondicional vuelvo a la dirección en la que me había quedado del código original.
Y de esta forma he podido implementar por ejemplo, un "ataque" que se diferencia totalmente a los demas. Este ataque que reemplaza a "placaje", llamado "sacrificio", hace que cuando lo usas, tu pokemon contrincante pierde de golpe toda la salud y muere, muriendo tambien el tuyo, aunque estes usando un pk nivel 3 contra uno nivel 45. Esto no funciona al reves, cuando te hacen el ataque a ti. Como yo soy el que escribe el codigo (Soy el que manda), lo he implementado de forma que cuando te lo hacen a ti se comporta como un simple placaje, evitando disgustos.
Y lo mas importante de mi implementación de codigo...
El juego ahora cuenta con un selector de dos hacks ingame que se pueden activar y desactivar a vuestro gusto desde el menú de opciones.
Estos dos hacks son: Hacer a vuestros pokemon inmortales (Aunque le quita un poco la gracia al juego, os ayuda a levear rapidamente enfrentándoos a pokemon fuertes), y el mas util y que mas agradecereis, hacer que no aparezcan pokemon salvajes en la hierba. Estos mods lo bueno que tienen es que no usan Gameshark ni nada de eso, y se pueden seleccionar y de-seleccionar cuando querais desde el mismo juego.
NOTAS:
-El mod "sin pk salv" estaba disponible como Gameshark unicamente en la version americana del juego, mientras que el mod de pokemon inmortales simplemente no tiene Gameshark.
-Aun activando la inmortalidad, a los pokemon les sigue afectando el veneno y similares.
-El checksum del ROM esta arreglado para poder usarlo, obviamente es distinto al original.
-El uso de "sacrificio" puede hacer transiciones poco coherentes como preguntarte si quieres cambiar de pokemon nada mas elegir uno nuevo (porque el anterior muere). No obstante no crea fallos a destacar en el juego.
-El ROM lo he probado y no hace bugs. Aunque si vieseis alguna anomalía ya sabéis que se puede comentar aquí.
Nada mas chic@s, ya sabeis que para jugarlo podeis utilizar everdrive, emulador en pc, movil, etc. Recordad que no es necesario registrarse para hacer comentarios.
martes, 11 de noviembre de 2014
La aventura de flappy: Ultimo ROM de GB (Version final)
Descarga aquí.
Optimización de Diciembre de 2014:
Se ha optimizado el uso de la CPU y de los scans de pantalla. Antes se usaba la CPU al 100% siempre usando esperas de bucle. Ahora esperando a que terminen los scans de pantalla, se ha reducido el uso de la CPU a un 5-10% de media, ademas de que ahora el juego va mucho mas fluido.
Bueno pues en esta versión final he solucionado el problema de los niveles creando un puntero directamente a la direccion 0x432 que cada vez que termina un nivel se incrementa en 196 (tamaño de los niveles) evitando el fallo de punteros de arrays del compilador GBDK, que aunque es una solución chapucera, al menos consigue que ahora funcione. Ahora por fin cuenta con 5 niveles.
Tambien he mejorado la jugabilidad y algunos bugs, pero poca cosa.
Bueno, pues como estos ultimos dias estoy pasando unos malos momentos, y por el clima tipico de Albacete no pude sacar la bici, decidí crear entre ayer y hoy durante mi tiempo libre el ultimo ROM que hare jamas para GB.
En este ROM convierto a Flappy Bird en un personaje de plataformas de controles novedosos, en los que Flappy puede volar en una dirección fijada impulsandose con el boton A. Esta direccion puede cambiarla pisando "suelo blando", aunque Flappy muere al pisar otro tipo de superficie o colisionar.
Digo que es el último ROM que hago porque este es el ROM mas complejo que he hecho hasta ahora (mas incluso que la demo 3D) ya que he usado por primera vez el background de la GB. En parte debido a la complejidad del ROM, el basto compilador GBDK me ha dado varios fallos, como por ejemplo errores a la hora de añadir niveles (Errores del compilador por arrays demasiado extensos)y a pesar de que diseñé 5 niveles, esta versión final solo cuenta con 2.
El argumento es que Flappy bird va en busca de su pareja (obvio), y para ello ademas puede recoger flores (Una de las caracteristicas del juego era que tenias que recoger todas las flores del nivel para poder pasar al siguiente, pero el compilador GBDK volvió a fallarme en este caso petando con el codigo de recoger las flores sin motivo ni solución alguna), esta caracteristica se ha quedado mas bien como visual en el primer nivel.
También comento que todo el código esta escrito de 0, el código de la cámara es mejorable aunque no merece mi tiempo mejorarlo, el codigo de el movimiento, las colisiones... todo esta hecho por mi, incluidos los sprites y mapas.
Una de las cacaracterísticas que tenia pensadas para el ROM era un editor de niveles, pero paso, total nadie se va a descargar el juego... XD.
Tambien tenia pensado colgar por primera vez el codigo fuente, pero hay muchas lineas que tendria que comentar, muchas cosas que no entendereis,... Ademas... ¡Que no teneis ni repajolera idea! XDD
Lo que si os voy a comentar es como crear vuestros propios niveles y jugarlos añadiendolos con un editor hexadecimal:
Los niveles aprovechan los 32x32 tiles de 8x8px del background de la GB para hacer niveles de 16x16 elementos de 16x16px.
De estos 16x16 elementos, la informacion de los niveles es de 14x14 elementos, ya que los bordes se crean automaticamente para evitar salir de la pantalla.
Lo primero, la direccion hexadecimal del spawn-point de los cinco niveles x1,y1,x2,y2,... es en 0x806.
En los mapas hay 7 elementos distintos, cada uno con un byte que lo distingue:
0.Casilla en blanco
1.Flor
2.Puerta de nivel
3.Suelo blando pisable
4.Suelo duro no pisable
5.Cuerpo tuberia
6.Extremo inferior tuberia
7.Extremo superior tuberia
El nivel 1 empieza en la direccion 0x432, el nivel 2 en la 0x4f6 inmediatamente despues, etc.
En fin,... ¿Dudas? Si teneis tiempo (la descarga puede durar muchas milesimas de segundo) me gustaria que lo probarais. Se que no lo hareis :') en fin...
Optimización de Diciembre de 2014:
Se ha optimizado el uso de la CPU y de los scans de pantalla. Antes se usaba la CPU al 100% siempre usando esperas de bucle. Ahora esperando a que terminen los scans de pantalla, se ha reducido el uso de la CPU a un 5-10% de media, ademas de que ahora el juego va mucho mas fluido.
Bueno pues en esta versión final he solucionado el problema de los niveles creando un puntero directamente a la direccion 0x432 que cada vez que termina un nivel se incrementa en 196 (tamaño de los niveles) evitando el fallo de punteros de arrays del compilador GBDK, que aunque es una solución chapucera, al menos consigue que ahora funcione. Ahora por fin cuenta con 5 niveles.
Tambien he mejorado la jugabilidad y algunos bugs, pero poca cosa.
Bueno, pues como estos ultimos dias estoy pasando unos malos momentos, y por el clima tipico de Albacete no pude sacar la bici, decidí crear entre ayer y hoy durante mi tiempo libre el ultimo ROM que hare jamas para GB.
En este ROM convierto a Flappy Bird en un personaje de plataformas de controles novedosos, en los que Flappy puede volar en una dirección fijada impulsandose con el boton A. Esta direccion puede cambiarla pisando "suelo blando", aunque Flappy muere al pisar otro tipo de superficie o colisionar.
Digo que es el último ROM que hago porque este es el ROM mas complejo que he hecho hasta ahora (mas incluso que la demo 3D) ya que he usado por primera vez el background de la GB. En parte debido a la complejidad del ROM, el basto compilador GBDK me ha dado varios fallos, como por ejemplo errores a la hora de añadir niveles (Errores del compilador por arrays demasiado extensos)
También comento que todo el código esta escrito de 0, el código de la cámara es mejorable aunque no merece mi tiempo mejorarlo, el codigo de el movimiento, las colisiones... todo esta hecho por mi, incluidos los sprites y mapas.
Una de las cacaracterísticas que tenia pensadas para el ROM era un editor de niveles, pero paso, total nadie se va a descargar el juego... XD.
Tambien tenia pensado colgar por primera vez el codigo fuente, pero hay muchas lineas que tendria que comentar, muchas cosas que no entendereis,... Ademas... ¡Que no teneis ni repajolera idea! XDD
Lo que si os voy a comentar es como crear vuestros propios niveles y jugarlos añadiendolos con un editor hexadecimal:
Los niveles aprovechan los 32x32 tiles de 8x8px del background de la GB para hacer niveles de 16x16 elementos de 16x16px.
De estos 16x16 elementos, la informacion de los niveles es de 14x14 elementos, ya que los bordes se crean automaticamente para evitar salir de la pantalla.
Lo primero, la direccion hexadecimal del spawn-point de los cinco niveles x1,y1,x2,y2,... es en 0x806.
En los mapas hay 7 elementos distintos, cada uno con un byte que lo distingue:
0.Casilla en blanco
1.Flor
2.Puerta de nivel
3.Suelo blando pisable
4.Suelo duro no pisable
5.Cuerpo tuberia
6.Extremo inferior tuberia
7.Extremo superior tuberia
El nivel 1 empieza en la direccion 0x432, el nivel 2 en la 0x4f6 inmediatamente despues, etc.
En fin,... ¿Dudas? Si teneis tiempo (la descarga puede durar muchas milesimas de segundo) me gustaria que lo probarais. Se que no lo hareis :') en fin...
domingo, 9 de noviembre de 2014
Futuro de mi blog
Bueno, como os comenté hace tiempo, antes de terminar el año tenia que decidir el destino de mi blog.
Viendo que la mayoría de las visitas vienen de referencias a Google y otros buscadores por mis articulos relacionados de la informatica, mi decisión final es de dedicarlo exclusivamente a articulos relacionados con la informatica.
En mi encuesta, la cual acabo de cerrar y podeis ver los resultados aqui, muestra claramente que los articulos de informatica eran los que mas os gustaban (Aunque la diferencia tampoco sea mucha).
En cuanto a mi vida personal ya sabeis que la llevo de pena (para que engañarnos) aunque contarla por aqui no sirve de nada.
Aun no tengo decidido que hacer con los artículos ya escritos, pero probablemente deje la mayoria ya escritos y borre solamente una minoria que considere de poco interes.
Recordad que podeis comentar cualquiera de mis publicaciones (incluida esta) en cualquier momento, y que podeis hacerlo o bien desde vuestra cuenta de Google o de forma anonima sin tener que hacer login en ningun sitio.
Viendo que la mayoría de las visitas vienen de referencias a Google y otros buscadores por mis articulos relacionados de la informatica, mi decisión final es de dedicarlo exclusivamente a articulos relacionados con la informatica.
En mi encuesta, la cual acabo de cerrar y podeis ver los resultados aqui, muestra claramente que los articulos de informatica eran los que mas os gustaban (Aunque la diferencia tampoco sea mucha).
En cuanto a mi vida personal ya sabeis que la llevo de pena (para que engañarnos) aunque contarla por aqui no sirve de nada.
Aun no tengo decidido que hacer con los artículos ya escritos, pero probablemente deje la mayoria ya escritos y borre solamente una minoria que considere de poco interes.
Recordad que podeis comentar cualquiera de mis publicaciones (incluida esta) en cualquier momento, y que podeis hacerlo o bien desde vuestra cuenta de Google o de forma anonima sin tener que hacer login en ningun sitio.
jueves, 6 de noviembre de 2014
Bug grave en "Crazy Taxi"
Bueno, pues escribiendo lo del glitch de facebook me acordé de un bug, esta vez bastante grave de un juego llamado Crazy Taxi.
Normalmente no suelo hablar del campo de los videojuegos, entre otras cosas porque ni tengo consola ni tengo tanto tiempo como para ponerme a jugar, pero creo que este bug es bastante importante.
Este bug lo descubrí hace muucho tiempo, cuando aun no tenia el blogger. El motivo por el que lo escribo es porque no hay ninguna referencia en internet a este bug, soy el primero en descubrirlo. Este juego fue bastante popular, estuvo tanto para consola como para maquinas recreativas, y este bug le quita totalmente la gracia al juego, de hecho, cuando lo descubrí deje de jugar para siempre.
Con este bug puedes conseguir puntuaciones grandisimas sin ningun esfuerzo, y obtener siempre la licencia "crazy" (La maxima) incluso en modo 3 minutos, cuando ni los mas viciados consiguen alcanzarla en el modo de 10 minutos.
Para ello se utiliza el glitch del drift, de la cual tampoco he encontrado referencias claras en internet, para hacerlo debes estar parado, pulsar D y R a la vez como si estuvieras en movimiento y quisieras hacer un drift (estando parado), y soltando D pero manteniendo pulsado R todo el tiempo, girar y acelerar, es decir, en la version pc se deberia de tener pulsadas a la vez las teclas R, derecha, y arriba. A los pocos segundos si estas en una superficie plana y no es cesped, empezaras a hacer un drift infinito.
El problema es, como no, el tiempo de cada cliente, por eso hay que hacerlo al lado del destino, ya que si permaneces a menos de 50 m del destino, puedes estar haciendo combos tiempo indefinido sin fallar.
Concretamente la forma mas eficiente de hacerlo, es nada mas comenzar dar media vuelta y coger al cliente de color naranja que hay a la derecha al final de la bifurcación, que va a la "fire station", lugar que tiene al lado del destino un lugar perfecto para hacer el glitch del drift. Otros sitios no son indicados para hacer el glitch, ya que hay obstaculos o coches que molestan.
En fin, dudas o comentarios? se que no :') <---- Mirad como lloro
Normalmente no suelo hablar del campo de los videojuegos, entre otras cosas porque ni tengo consola ni tengo tanto tiempo como para ponerme a jugar, pero creo que este bug es bastante importante.
Este bug lo descubrí hace muucho tiempo, cuando aun no tenia el blogger. El motivo por el que lo escribo es porque no hay ninguna referencia en internet a este bug, soy el primero en descubrirlo. Este juego fue bastante popular, estuvo tanto para consola como para maquinas recreativas, y este bug le quita totalmente la gracia al juego, de hecho, cuando lo descubrí deje de jugar para siempre.

Para ello se utiliza el glitch del drift, de la cual tampoco he encontrado referencias claras en internet, para hacerlo debes estar parado, pulsar D y R a la vez como si estuvieras en movimiento y quisieras hacer un drift (estando parado), y soltando D pero manteniendo pulsado R todo el tiempo, girar y acelerar, es decir, en la version pc se deberia de tener pulsadas a la vez las teclas R, derecha, y arriba. A los pocos segundos si estas en una superficie plana y no es cesped, empezaras a hacer un drift infinito.
El problema es, como no, el tiempo de cada cliente, por eso hay que hacerlo al lado del destino, ya que si permaneces a menos de 50 m del destino, puedes estar haciendo combos tiempo indefinido sin fallar.
Concretamente la forma mas eficiente de hacerlo, es nada mas comenzar dar media vuelta y coger al cliente de color naranja que hay a la derecha al final de la bifurcación, que va a la "fire station", lugar que tiene al lado del destino un lugar perfecto para hacer el glitch del drift. Otros sitios no son indicados para hacer el glitch, ya que hay obstaculos o coches que molestan.
Glitch del like parpadeante en Facebook
Bueno, pues hace poco descubrí un glitch en Facebook que hace que te parpadee rapidamente el cursor junto con un apartado que dice a quien le ha gustado una publicación.
El glitch ya lo he reportado al equipo de Facebook, e imagino que lo solucionaran en breve, no obstante hasta entonces, os digo como ocurre:
En la version web, el icono famoso de Facebook de "Thumbs up" para dar un me gusta, aparece en varios apartados. En un comentario que ha hecho alguien de una publicación en la pagina de inicio, tambien aparece, y es aquí donde ocurre el glitch.
Para mostrar los comentarios de una publicación si no os aparecen, debeis hacer clic en "comentar".
Para que ocurra el glitch, debeis situar el cursor en el texto que haya encima del icono de me gusta, y bajarlo con cuidado al borde superior del icono de me gusta, el cursor y el apartado que muestra a quien le gusta un comentario empezará a parpadear rapidamente.
Esto ocurre en varios navegadores, en unos mas rapidamente que en otros. ¿Habeis conseguido ver el glitch?
El glitch ya lo he reportado al equipo de Facebook, e imagino que lo solucionaran en breve, no obstante hasta entonces, os digo como ocurre:
En la version web, el icono famoso de Facebook de "Thumbs up" para dar un me gusta, aparece en varios apartados. En un comentario que ha hecho alguien de una publicación en la pagina de inicio, tambien aparece, y es aquí donde ocurre el glitch.
Para mostrar los comentarios de una publicación si no os aparecen, debeis hacer clic en "comentar".
Para que ocurra el glitch, debeis situar el cursor en el texto que haya encima del icono de me gusta, y bajarlo con cuidado al borde superior del icono de me gusta, el cursor y el apartado que muestra a quien le gusta un comentario empezará a parpadear rapidamente.
Esto ocurre en varios navegadores, en unos mas rapidamente que en otros. ¿Habeis conseguido ver el glitch?
Suscribirse a:
Entradas (Atom)