Ir al contenido principal

Google Music NO ofrece privacidad de Datos, lo cual puede ser util };-D

Hola!!

Como puse en un post anterior aqui merito mismo en mi blog, estaba revisando unas cosas sobre Google Music, por casualidad, causalidad o como lo quieran llamar encontre lo que a mi parecer son unos fallos de seguridad, yo como niño bueno, los reporte a Google, pero ellos me contestaron que naranjas dulces, que no es fallo de seguridad :(, por lo que si ellos dicen que no es nada malo, entonces puedo liberarlo y empezar a hacer herramientas para eso, pues es 100% legal y no es un fallo de seguridad :D (al final pongo lo que me contestaron :P)


El diagrama del fallo (segun yo) es el que pongo a continuación (no soy un experto en diagramas, digan que hice una imagen, generalmente lo explicaría con texto! xD)




Por pasos:
1.- es lo normal, user y pass para ingresar a gmail
2.- te setean cookies en el navegador para que puedas ingresar a tus servicios de google
3.- en music.google.com buscas la cancion que tu quieras

En este punto (4) esta lo interesante...

4.- se genera el streaming

Primero, en la base de datos de Google MUsic estan varias tablas, las cuales listo a continuación:

[table] ARTWORK
AlbumId
LocalLocation
[table] KEEPON
KeepOnId
ListId
AlbumId
ArtistId
DateAdded
[table] LISTITEMS
Id
ListId
MusicSourceAccount
MusicSourceId
ClientPosition
ServerPosition
SourceAccount
SourceId
[table] LISTITEM_TOMBSTONES
Mi tabla aqui esta vacia
[table] LISTS
Id   
Name   
SourceAccount   
SourceId   
_sync_version   
_sync_dirty   
MediaStoreId   
ListType   
ListArtworkLocation
[table] LIST_TOMBSTONES
Mi tabla aqui esta vacia
[table] MUSIC
Id   
SourceAccount   
SourceId   
SourcePath   
Size   
FileType   
FileDate   
LocalCopyPath   
LocalCopyType   
PlayCount   
LastPlayDate   
Title   
Album   
Artist   
AlbumArtist   
AlbumArtistOrigin   
Composer   
Genre   
Year   
Duration   
TrackCount   
TrackNumber   
DiscCount   
DiscNumber   
Compilation   
BitRate   
AlbumArtLocation   
SongId   
AlbumId   
AlbumArtistId   
GenreId   
CanonicalName   
CanonicalAlbum   
CanonicalAlbumArtist   
CanonicalGenre   
_sync_dirty   
_sync_version   
LocalCopySize   
TrackType   
LocalCopyBitrate   
ArtistOrigin   
ArtistId   
CanonicalArtist   
Rating   
StoreId   
StoreAlbumId
[table] RECENT
RecentId   
ItemDate   
RecentListId   
RecentAlbumId
[table] RINGTONES
Vacia
[table] SHOULDKEEPON
MusicId   
KeepOnId
[table] _sync_state
_id   
account_name   
account_type   
data
[table] _sync_state_metadata
version
[table] android_metadata
locale


La por ahorita nos interesa (no digo que las demás no tengan cosas buenas, por ejemplo la de _sync_state nos guarda los datos de logueo :P encriptados claro) es la de MUSIC

En esta tabla nos guarda la lista de todas las canciones (yo apenas tengo 11,482 :P) que tenemos dentro de nuestra cuenta de Google Music, el campos SourceId nos guarda un valor como este:

251c2c68-0340-37b0-9f1f-cf424f808f58

En realidad este es el principal campo que nos importa, los demas son solo para hacer mas "fancy" todo esto (despues verán por que :P)

Al ver los headers enviados/recibidos con HttpLiveHeaders (no, no me pagan publicidad), podremos ver algo como esto:

https://music.google.com/music/play?u=0&songid=2fafbe9b-db96-3624-97e6-7e52e3e3b463&pt=e     => de ahora en adelante UNO

GET /music/play?u=0&songid=2fafbe9b-db96-3624-97e6-7e52e3e3b463&pt=e HTTP/1.1

y de ahi obtenemos una respuesta de la siguiente forma:

http://t.doc-0-0-sj.sj.googleusercontent.com/stream/105?id=6a523ee5f96bad0e&itag=25&source=skyjam&o=07065478407166026385&ip=0.0.0.0&ipbits=0&expire=1328258623&sparams=id,itag,source,o,ip,ipbits,expire&signature=7A0C93172AB4B8E0657927ACF5D04E610E64D01C.3BDF980C824B97C35F3CB8238434E39ADFC83AE&key=sj2     => de ahora en adelante DOS

Si se dan cuenta el id principal de UNO no aparece ya en DOS, pero! ya tenemos un link valido para que podamos escuchar nuestra musiquita! :D

Hasta este momento llega el punto 6 del diagrama (espero hayan seguido mediante el relato el punto 5 y 6 xD)

Hace tiempo vi a DOS, y lo que hice, fue enviarselo a un amigo para que verificara si el podía escuchar la cancion que yo escuchaba en ese momento, como era de esperarse, nos regresa un error 403 (si es que ya entraron a DOS), por lo cual yo en ese momento dije: CLAP CLAP valida de forma genial nuestros datos y tenemos privacidad hasta en nuestra música!

Al analizar la base de datos vi una imagen que se podía abrir desde cualquier sitio, como lo explique en mi post anterior, por lo que segui tratando de escuchar ese link de música desde otro dispositivo.

Al abrirlo con Chrome la musica empezo a escucharse, por lo que probe de nuevo dando f5 y me dio un 403! Raro que pueda escucharlo un momento si y otro no, creo yo.

Haciendo mas pruebas, vi en el link que tiene un timestamp que recibe la variable de expires, el link caduca generalmente cada 30 segundos aproximadamente, osea, en otras palabras es visible para quien sea durante 30 segundos!!!!


"
Google lo que respondio fue esto:

Hey,

Thanks for your email! I've talked with the Music team and they've
confirmed this is expected behaviour. Since the link is only valid for a
short period of time, there isn't much potential for abuse.

Also, the URL is unguessable so an attacker can't obtain a valid link
without some other vulnerability. If you do find a way for an attacker to
generate or obtain a valid link without the victim knowing, then this
would be considered a vulnerability.

Cheers,
XXXXXXX
"

Me parece genial, igual y como lo mencionan ellos, puede que no sea un bug de seguridad, pero creo yo, que si subo un archivo personal a un servicio con contraseña, este tiene que ser visible solo para mi no? si no para que me logueo en mi cuenta de GMusic para escuchar musica, mejor solo hacer un servicio que ponga mi usuario y me de la lista de canciones que tengo disponibles!

Ah bueno, ahi es cuando llegaron mas ideas:

1.- Hacer un script para descargar MI música por lotes en caso de que la necesite

Si! es que google music una vez que la subes te fregaste y no puedes descargarla por lotes, a menos que sea desde android y des click en disponible sin coneccion, y te lo guarda como 1.mp3 2.mp3, etc, etc, no te da el nombre, ni titulo, ni disco, si estan en los metadatos pues ya fregaste y lo puedes visualizar asi en winamp o el reproductor de su eleccion (aunque sea por consola kof kof @hecky jeje :P).

Entonces aqui entra en nuestro auxilio las tablas de google nuevamente, dentro de MUSIC vamos a utilizar el campo Title, Album, Artist que son los que contienen la informacion de nuestro archivo musical.

Estoy en el desarrollo de esto, en cuanto quede les explicare paso a paso con naranjas y manzanas (por que hay muchos usuarios no experimentados que quieren hacer esto) para que lo puedan hacer :D

2.- Este punto creo yo es el peor para google y lo explico a continuación:

Cada cuenta de google music puede almacenar 20 mil canciones, ok, creo 10 cuentas, podre almacenar 200,000 canciones, wow eso suena genial! ahora, que tal si X persona puede descargar una de esas canciones con el ancho de banda de google? en descarga directa? por lotes? en por lotes me refiero a discos completos, canciones seleccionadas, incluso artistas completos (discografias) que esten en algunas de esas 10 cuentas de Google!?

A mi parecer sería genial!!!

No se meteria en problemas legales google? Megaupload, segun todos el culpable fue la compañia, siendo que realmente los culpables (creo yo, de manera muy personal claro) fuimos nosotros, piratebay y demas empresas donde hay alojamiento con Copyright no se han metido en problemas?

Obvio, esto es pensando que el servicio crecería muy rapido, pero, siendo un servicio tan eficaz yo creo que si lo haría, cuando hice musicindexof.com solo ponia links en descarga directa y en un mes alcanzo un PR de 4 (si, en un mes de cuando se registro, abrio y transcurrieron 30 dias), y en ese entonces NO existia (o yo no usaba al menos) twitter, asi que la difusion sería mas rapida creo yo.

La idea es esta:

Hacer un script, primero, tendra la base de datos de las 5 cuentas, esto con cualquier gestor de DB es lo de menos, tendra los datos importantes arriba mencionados, "osease" el ID y nombre, artista, album y cuenta de google (esto esta en el campo SourceAccount de la tabla MUSIC) con eso al principio es mas que suficiente, nuestro script se loguea a nuestra cuenta 1 de google, guarda las cookies y repite el mismo paso con la cuenta 2,3,4,etc, de ahi ya estamos autentificados, ahora el usuario hace una busqueda de la cancion juanito con el artista perez, si esta en la base de datos regresa un link valido por 30 segundos para descargar, escuchar online, etc, etc.

Creo que este es el post mas largo que he escrito, hay muchas mas ideas, pero por mientras termino el post aqui, por que creo que ya se cansaron de leer (si es que llegaron hasta aqui claro).

PD. Esperen el script para descargar por lotes de Google Music, lo tendre por estos dias :D
PD. Gracias por leer la nota completa si es que lo hiciste!
PD. Te gusto? retuitealo! :D
PD. Creo que ya no hay más
PD. Si se siguen preguntando como consegui los campos de Google Music, en su android rooteado vayan aqui: /data/data/com.google.android.music/databases/music.db copienla y usen un gestor de sqlite, si no saben como, esperen y vean los siguientes posts :D

Saludos malignos }:)) ... ah caray, no, no, ese es otro blog!

jajajajajajaajajajajajajaja

Saludos!

Komtec1 :D

Comentarios

Bucio ha dicho que…
Eso es todo :þ
KiKou ha dicho que…
AJJAAJAJJAAJAJ, muy bueno el saludo final a lo chema xDDDD
KiKou ha dicho que…
Este comentario ha sido eliminado por un administrador del blog.
Komtec1 ha dicho que…
jajajajaja, si, solo para entendidos xDDD
Unknown ha dicho que…
:O es uno de los post mas NERDOS que eh leido y lo mas raro es que le entendi :| jaja esperaremos el SCRIPT.! para descargar como locos ;)
hielasangre ha dicho que…
muy bueno bro, al fin hiciste el post :D

Felicitaciones :3

Entradas populares de este blog

Integrar API de Google Maps, archivos kml, kmz y otras fumarolas :D

Ya que andamos en eso de la posteada ahora les voy a dejar un pequeño manual sobre como integrar la API de maps (google) dentro de nuestro código, hay varia documentación en la página developers de google, pero realmente lo que uno busca cuando pone en google: "integrar api de maps" es ver un ejemplo claro y directo para que se pueda entender de mejor forma. Así que pues ya comentada la información de arriba les paso a dejar un ejemplo. Lo primero que tenemos que poner en nuestro código es la llamada a la API de maps: < script type = " text/javascript " src = " http://maps.googleapis.com/maps/api/js?sensor=false&language=es " > < / script > En este caso la variable sensor está en false, esto nos indica que no hay un dispositivo gps que pueda tomar la ubicación (se pone generalmente en true cuando es para aplicación movil, llámese celular o tableta) El lenguaje declaramos español, esto es para los menús que se van a most

[Anotaciones] Importar DB MySQL con archivos frm/ibd

Primero, vamos a extraer las consultas para crear las tablas, lo podemos hacer con el siguiente comando> mysqlfrm --server=user:pass@localhost --port 3307 --diagnostic /ruta/de/los/archivos/data/nombredebase/*.frm Esto nos regresa todos los CREATE que tengamos para las tablas, guardar todo el resultado. Creamos la base de datos, con el mismo nombre que se tenía anteriormente. Ejecutamos la consulta que nos regresó el comando mysqlfrm, si nuestra versión de mysql es mayor a 5.6, es importante hacer este cambio:  ENGINE=InnoDB DEFAULT CHARSET=utf8; por  ENGINE=InnoDB ROW_FORMAT=compact CHARSET=utf8; Es decir, se remplaza DEFAULT por ROW_FORMAT=compact, realmente no se por qué, pero me llevó como una hora dar con el error, espero quien lea esto le sea más facil. Una vez que tengamos las tablas creadas, ejecutamos lo siguiente: ALTER TABLE nombredetabla1 DISCARD TABLESPACE; ALTER TABLE nombredetabla2 DISCARD TABLESPACE; ALTER TABLE nombredetabla3 DISCARD TABLESPAC

Solución [fix] a hamachi Logging in .. failed, busy

Hola! Aquí con una pequeña entrada, pero que a más de uno le será útil. Tengo hamachi instalado en varias máquinas, pero en una precisamente al reiniciar, algunas veces me da este problema: usuarioserver@server:~$ sudo hamachi login [sudo] password for usuarioserver: Logging in .. failed, busy Lo busqué en internet y la "solución" que dan, es reinstalar hamachi, y para los que han instalado hamachi en ubuntu, saben que no es una opción, pues se tendrían que hacer estos pasos:  sudo apt-get remove logmein-hamachi sudo dpkg -i logmein-hamachixxx.deb sudo apt-get install -f Para lo cual (siempre) es molesto hacer esos pasos, y algunas veces la configuración se llega a perder.  Para solucionar ese problema, basta con hacer un:  sudo /etc/init.d/logmein-hamachi force-reload Esto forzará el reinicio de hamachi, y así después hacen:  sudo hamachi login Y listo, el problema de failed busy desaparece y los deja loguear bien en la red de hama