Code-Makers ha revivido. It's alive! Bienvenidos! Presentate aca!

Crackear Youtube Signature JS

Avatar de Usuario
JohnConnor
Nos vamos conociendo
Nos vamos conociendo
Mensajes: 89
Registrado: Mar Ene 05, 2016 12:59 am
Ubicación: Argentina
Contactar:

Crackear Youtube Signature JS

Mensajepor JohnConnor » Jue Mar 17, 2016 5:26 am

Hola, bueno seguro vieron el downloader que vengo haciendo, pero tiene un problema y yo también jaja. Primero no quiero usar clases ajenas, ni librerias, ni APIs. Ademas es Jason y va por ahi a los "machetazos" no puede andar pidiendo ayuda.

El problema es que algunos videos de youtube tienen la FIRMA encriptada, y bien escondida. Youtube tiene una funcion JS para desencriptarla y ponerla en su lugar.

Ejemplos:

Audio no bloqueado escribió:https://r14---sn-x1x7sn7y.googlevideo.com/videoplayback?upn=GBjmtmZ1ys0&source=youtube&pl=14&itag=171&ip=186.60.166.114&mt=1458191540&sparams=clen%2Cdur%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&mv=m&ms=au&mm=31&mn=sn-x1x7sn7y&id=o-AINve2oXQG9IXwRe7xk7AgjEqOdEaCYMkHxsB_YnpxjM&keepalive=yes&clen=4223185&requiressl=yes&initcwndbps=247500&nh=IgpwcjAyLmV6ZTAxKgkxMjcuMC4wLjE&mime=audio%2Fwebm&gir=yes&key=yt6&fexp=3300117%2C3300133%2C3300161%2C3312381%2C3312722%2C9405972%2C9410705%2C9416126%2C9418581%2C9419451%2C9420452%2C9422596%2C9423661%2C9423662%2C9424815%2C9425954%2C9427902%2C9428334%2C9428941%2C9429379%2C9429564%2C9429947%2C9430988%2C9432387&signature=926CEC1033DB3091DD1EE874A656312ED06F660F.855D6D86C0F62C6E2E28C8858BE19362209B1ABA&lmt=1397755969264320&ipbits=0&dur=236.926&sver=3&expire=1458213266


Como ven tiene el parametro SIGNATURE

Código: Seleccionar todo

signature=926CEC1033DB3091DD1EE874A656312ED06F660F.855D6D86C0F62C6E2E28C8858BE19362209B1ABA
intacto.

Pero cuando pones algun video mas popular por asi decirle (por no decirle careta) el parametro SIGNATURE desaparece de la url. y te ponene esto:
Url bloqueada escribió:https://r15---sn-x1x7snez.googlevideo.com/videoplayback?fexp=3300117%2C3300133%2C3300161%2C3312381%2C3312722%2C9405972%2C9410705%2C9416126%2C9418581%2C9419451%2C9420452%2C9422596%2C9423661%2C9423662%2C9424815%2C9425954%2C9427902%2C9428334%2C9428941%2C9429379%2C9429564%2C9429947%2C9430988%2C9432387&keepalive=yes&nh=IgpwcjAyLmV6ZTAxKgkxMjcuMC4wLjE&itag=249&pl=14&mime=audio%2Fwebm&gcr=ar&requiressl=yes&ms=au&mv=m&mt=1458191540&mn=sn-x1x7snez&mm=31&gir=yes&id=o-ADmPEDiysCJ7GkmBWGjQ_SHBtSzSbWTG6x6rq062vvsr&clen=1918941&initcwndbps=247500&source=youtube&expire=1458213249&dur=293.421&lmt=1449558859389773&ip=186.60.166.114&key=yt6&sver=3&upn=WKTZNK3H4EE&ipbits=0&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire


EL signature se va, creo que en los videos aparece al final despues de una coma.

Código: Seleccionar todo

,s=8748357934879758693443563463.43534634756876853
y en los audios aparece antes entre "/u0026"

Código: Seleccionar todo

\u0026s=55434433A746B6C04626BAEF5950FF905A4B9AD8ED52.81E0EBC7BCE7ED80A5AEC24A678B85615715991F91F\u0026


el tema es que creo que esta encriptada y youtube lo desencripta con estas funciones:

Código: Seleccionar todo

function zn(a)
{
a=a.split("");
a=a.slice(2);
a=a.reverse();
a=An(a,7);
a=An(a,21);
a=a.reverse();
return a.join("")
}

function An(a,b)
{
var c=a[0];
a[0]=a[b%a.length];
a[b]=c;
return a
}


Pero hasta ahí llegue, no se como y nunca escuche de "slice" ni como usarlo en C# , si puedo acceder a la función mediante el webbowser de mi app y descargar normalmente.

Por favor ayudenme! :cry: tienen idea de COMO, CUANDO DONDE Y PORQUE, pasa todo eso? como lo implemento? Cuantas preguntas :roll:

Por si no se entendió, esas funciones en el lenguaje que sea tienen que convertir algo como esto:

Código: Seleccionar todo

55434433A746B6C04626BAEF5950FF905A4B9AD8ED52.81E0EBC7BCE7ED80A5AEC24A678B85615715991F91F
en algo como esto:

Código: Seleccionar todo

926CEC1033DB3091DD1EE874A656312ED06F660F.855D6D86C0F62C6E2E28C8858BE19362209B1ABA


Saludos :lol:


Imagen

EL QUE NO DICE LA VERDAD, ES PORQUE ESTA MINTIENDO
Avatar de Usuario
ni0
Arquitecto
Mensajes: 121
Registrado: Mar Nov 17, 2015 4:07 pm

Re: Crackear Youtube Signature JS

Mensajepor ni0 » Jue Mar 17, 2016 2:19 pm

Hola,
split(""); convierte de una cadena (string) a una lista
slice(2); te devuelve la sublista arrancando desde el elemento de la posicion 2, recorda que arranca desde 0 (ej, si los elementos son ['a', 'b', 'c', 'd'], slice(2) te retorna ['c', 'd'])

En firefox y en chrome con el F12 abris la consola de debug (firefox quisas necesites el addon firebug)
anda a la pestaña "console" y ahi podes escribir codigo en JS y ver que hace, por ejemplo yo copie esas 2 funciones zn y An y las ejecute (asi las carga), luego ejecute

Código: Seleccionar todo

zn("55434433A746B6C04626BAEF5950FF905A4B9AD8ED52.81E0EBC7BCE7ED80A5AEC24A678B85615715991F91F")
//y me retorno:
// 434433A746B6C04626BAEF5950FF905A4B9AD8ED52.81E0EBC7BCE7ED80A5AEC54A678B8561571F991F912


Lo que retorno es muy diferente a lo que vos pusiste de ejemplo.

Tambien podes probar la funcion slice con la consola de debug del chrome o firefox.
Si el split("") creo que lo usan porque no pueden modificar el string literal "554344....", entonces lo convierten a una lista que si pueden modificar, en C# no se como es eso, quisas no te hace falta.

entonces,
tenes que sacarle los primeros 2 caracteres (44)
despues le das vuelta ("hola" se convertiria en "aloh")
despues ejecutas esa An() que parece que intercambia lo que hay en a[0] con lo que hay en a[b]. Podes copiar lo que hace (el % es la funcion "modulo", se queda con el resto de la division entre b y a.length)
le volves a dar vuelta todo
y listo, en JS lo convierten de nuevo a un string con el join(""), pero fijate si pasar de string a lista y luego de lista a string es algo que necesitas hacer en C# o no

Saludos.
ni0 escribió:como te habras dado cuenta para Stallman, Linus y todos los que los siguen se refieren al hacking a la accion de programar porque les (nos?) da orgasmos (cuak cuak)

ni0 [at] code-makers [dot] es
Avatar de Usuario
dreams_eater
Site Admin
Mensajes: 40
Registrado: Sab Feb 27, 2016 1:27 am
Ubicación: 1s y 0s del capacitor de RAM

Re: Crackear Youtube Signature JS

Mensajepor dreams_eater » Vie Mar 25, 2016 6:29 pm

@JohnConnor tenes a mano la pagina en la que te cuenta o te basaste como bajar lod videos?
hace como 3 años codie en c#, si se que se busca te podría dar una mano.
y de paso armo algo para mi (en c).
Esta vez, es la buena!!
Avatar de Usuario
JohnConnor
Nos vamos conociendo
Nos vamos conociendo
Mensajes: 89
Registrado: Mar Ene 05, 2016 12:59 am
Ubicación: Argentina
Contactar:

Re: Crackear Youtube Signature JS

Mensajepor JohnConnor » Vie Mar 25, 2016 8:40 pm

dreams_eater escribió:@JohnConnor tenes a mano la pagina en la que te cuenta o te basaste como bajar lod videos?
hace como 3 años codie en c#, si se que se busca te podría dar una mano.
y de paso armo algo para mi (en c).


la verdad es que ya sabia como obtener la url a puro split desde hace mucho y lo hacia con vbscript, no me costo mucho pasarlo a C#, y después lo del signature googlee un montón. igual me decidí a bajar el audio de una pagina tercera que convierte los videos a mp3 y Jason obteniendo el href de un enlace lo descarga. No me guarde las paginas donde anduve porque fueron muchisimas.

Saludos!
Imagen

EL QUE NO DICE LA VERDAD, ES PORQUE ESTA MINTIENDO
Avatar de Usuario
dreams_eater
Site Admin
Mensajes: 40
Registrado: Sab Feb 27, 2016 1:27 am
Ubicación: 1s y 0s del capacitor de RAM

Re: Crackear Youtube Signature JS

Mensajepor dreams_eater » Sab Mar 26, 2016 3:46 am

:twisted: buscando en Internet desde 0 como hacer las cosas (me gusta reinventar la rueda) veo mucho egoísmo, en español argentino "mucha gente forra".
Primero el api de YouTube aun no dispone de un medio para descargar un video. lo aclara en los TOS.
Segundo a stack overflow no le da mucha gracia cuando le preguntan como bajar. Codeproyect peor, esto no tiene sentido!!
Bueno... no me queda otra que ver códigos de repos.
saludos!
Esta vez, es la buena!!
Avatar de Usuario
JohnConnor
Nos vamos conociendo
Nos vamos conociendo
Mensajes: 89
Registrado: Mar Ene 05, 2016 12:59 am
Ubicación: Argentina
Contactar:

Re: Crackear Youtube Signature JS

Mensajepor JohnConnor » Lun Mar 28, 2016 9:14 pm

Lo que hay que conseguir ya sea con RegExp, ExtractMatch, Split o lo que sea es la url. En este caso con [Split ("url=")], después decodificar esa url y abrirla o guardarla. El problema es cuando el video no te da la firma "siganture" y ahi ya no se como seguir. Lo unico que vi fue como encontrar la fuuncion en un js de youtube quue la decodifica pero no se como abrir la url que queda de todo esto.
Imagen

EL QUE NO DICE LA VERDAD, ES PORQUE ESTA MINTIENDO

Volver a “Javascript”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado