Enlaces del servidor Mega

31 Mar 2018
89
47
18
#1
Parece que a bastante gente no le funcionan los enlaces de Mega, pero a otros sí, así que intentamos encontrar una explicación. Lo que se necesita es tener instalada en el pc una librería de python para criptografía.

Esta librería no se puede incorporar al addon ya que tiene binarios que dependen de los diferentes sistemas operativos, así que cada uno tiene que instalársela manualmente en su propio pc. La instalación puede ser muy fácil o muy complicada, según los casos. Abrimos este hilo para intentar aportar información a quién esté interesado. Todo esto es solamente para que funcionen los enlaces de mega, si no te compensa o no lo ves claro, no es necesario que sigas adelante... ;-)

Para evitar tener que instalar nada, hemos intentado encontrar una solución puramente en python, pero no hemos conseguido que funcione correctamente. De las librerías internas que tenemos en el addon, jscrypto no sirve en este caso pq no tiene implementado el modo CTR, la librería Crypto falla si no está instalada a nivel general, y la librería pyaes no es suficientemente rápida. Otra encontrada en github Cryptoplus, tb falla por velocidad. Haciendo pruebas con ejemplos concretos, conseguimos los mismos resultados, pero con Pyaes y CryptoPlus cada decode tarda unos 0.08s mientras que si está Crypto instalado tarda unos 0.0003s. Esta diferencia de timing es la que creemos que provoca que no se resuelvan correctamente los videos. El mismo creador de pyaes comenta que su implementación pura en python con ctr puede tardar unas 300 veces más que con un binario.

Así pues, por el momento la solución pasa por instalar la librería python de criptografía en el pc dónde se utilize el addon. Para saber si tenemos instalada la librería Crypto, una opción para consultarlo sería:
- Abrir una consola/terminal y ejecutar la orden python a secas, sin ningún parámetro.
- Escribir el comando help("modules") para ver qué tenemos instalado.
- Si tenemos Crypto, podemos ver su versión con help('Crypto')

Si no se tiene Crypto, el proceso de instalación varia según el dispositivo en que se ejecute. Algunas opciones:

- Si se tiene el gestor de paquetes de python pip, se puede probar la instalación con pip install pycrypto
- En un linux/mac con gestor de paquetes se puede instalar con apt-get install python-crypto, o yum install pycrypto
- En un windows, quizás pueden servir los binarios compilados en The Voidspace Python Modules

Ejemplos concretos:

- En un ordenador con Ubuntu los enlaces de mega funcionan bién, pero no recuedo si la librería Crypto venía instalada por defecto, o si se instaló con un sudo apt-get install python-crypto

- En una Raspberry Pi con s.o. Recalbox (emuladores de consolas + kodi) la instalación no es nada trivial pq al ser un linux muy adaptado no lleva ningún gestor de paquetes para instalar a nivel de sistema, y creo que obligaría a recompilarlo para poder incluir python-crypto.

- Otros: pendiente reportes, informa si pruebas alguna solución... ;-)
 
'Me Gusta': Intel1 y Delta
31 Mar 2018
89
47
18
#2
En una Raspberry pi modelo 1 B (rca, 2usb, sd no micro), instalado Raspbian lite y a continuación sudo apt install kodi. Probados enlaces de mega así tal cual y no funcionan. Vuelta a la consola, sudo apt install python-crypto y a partir de ahora ya funcionan bién los enlaces de mega. Por cierto, kodi 17.6 va lentísimo en esta rpi, pero aún así resuelve correctamente los videos de mega.

En la misma raspberry, la instalación de LibreElec ya incluye el módulo crypto, así que no hay que hacer nada para que funcionen los enlaces de mega. Pero sigue todo muy lento, supongo que por usar una versión tan nueva de kodi en una raspberry tan antigua.
 
Última edición:

pepe67

Usuario Novato
25 Oct 2017
23
3
3
25
#3
Me parece muy interesante el tema.
Sabrias si hay alguna manera de hacer funcionar Mega, pero en sistemas android. Es decir; si podria agregar una libreria python manualmente mediante algun gestor de archivos como "es file explorer", ya sea ubicando la libreria directamente en el sistema de android (como instalar python en android), o deberia ser dentro del mismo kodi o el addon en todo caso.
Espero no incomodar sobre todo si alguna de mis preguntas no tienen sentido aunque creo que si lo tienen.
Muchas gracias y saludos!.
 
31 Mar 2018
89
47
18
#4
Seguramente se pueda hacer en android, pero de momento nadie ha reportado aquí como hacerlo. Si lo logras, o si te quedas a medias, puedes dejar tus notas por si ayudan o involucran a alguién más. La intención de este hilo es esta, aportar información para distintos sistemas...
Por cierto, he encontrado el enlace en pelisalacarta dónde se gestó este tema, realizado por divadr con el apoyo de @robalo , cmos, ... Servidor Mega | Foro | Mi media center
 
Última edición:

pepe67

Usuario Novato
25 Oct 2017
23
3
3
25
#5
He estado investigando y he dado con el archivo androidsslPy.py, que lo he copiado a la carpeta lib de alfa, sin mas movimientos he intentado con el servidor mega desde pelisultra en alfa y me duro unos segundos en cargar ya es un progreso porque antes ni eso duraba, solamente medio segundo cuando ya saltaba error en el conector, esta vez duro como 3 o 6 segundos en cargar aunque de todas maneras también me tiro el error en el conector. verificando el log me encontré con esto:

12:36:14.147 T:1596840248 ERROR: [alfa.core.servertools.resolve_video_urls_for_playing] Traceback (most recent call last):
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.alfa/core/servertools.py", line 318, in resolve_video_urls_for_playing
response = serverid.get_video_url(page_url=url, video_password=video_password)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.alfa/servers/mega.py", line 20, in get_video_url
c = Client(url=page_url, is_playing_fnc=platformtools.is_playing)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.alfa/lib/megaserver/client.py", line 36, in __init__
self.add_url(url)
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.alfa/lib/megaserver/client.py", line 123, in add_url
file = self.api_req({'a': 'g', 'g': 1, 'p': file_id})
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.alfa/lib/megaserver/client.py", line 137, in api_req
return json.loads(self.post(url, json.dumps([req])))[0]
File "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.alfa/lib/megaserver/client.py", line 192, in post
return urllib.urlopen(url, data).read()
File "/home/jenkins/workspace/Android-ARM/tools/depends/xbmc-depends/arm-linux-androideabi-android-21/lib/python2.7/socket.py", line 355, in read
File "/home/jenkins/workspace/Android-ARM/tools/depends/xbmc-depends/arm-linux-androideabi-android-21/lib/python2.7/ssl.py", line 756, in recv
File "/home/jenkins/workspace/Android-ARM/tools/depends/xbmc-depends/arm-linux-androideabi-android-21/lib/python2.7/ssl.py", line 643, in read
SSLError: ('The read operation timed out',)

Tengo pensado otros módulos/librerías que incluir que podrían o no funcionar, si me pudieran ayudar /asesorar en lo que se pueda seria genial y se los agradecería mucho!.
Estaré informando/actualizando por aquí cualquier nuevo resultado o información.
De nuevo gracias y saludos!.
 

Adjuntos

Última edición:

pepe67

Usuario Novato
25 Oct 2017
23
3
3
25
#6
Creo que me hace falta mandar ordenes a los archivos es decir adaptarlos al addon.
No se si tengo que hacer llamar a androidsllpy.py desde algún otro archivo del addon. No se si desde mega.py.
No se si lo pueda publicar aqui pero el addon f4mproxy logro hacer esto que yo y nosotros estamos o hemos intentado antes y lo logro. El autor se llama Shani. Lo consiguieron en este hilo: PyCrypto on FireTV (Android ARM)
MrBlamo420/Project
Desde esa repo se encuentras las librerías y archivos necesarios que el utilizo y adapto para su addon.
Si yo tuviera los conocimientos que tienen ustedes u shani ya lo habría logrado también, sabría que librerías le hacen falta a alfa o a kodi en android y/o como adaptarlas a alfa, pero me hace falta dar ese salto de nivel de conocimientos. Pero precisamente para eso publico esta repo y mis avances para si alguien de ustedes tiene mas idea de esto que yo y lo llegase a implementar seria de gran ayuda para todos. A pesar de todo seguiré intentando a ver si consigo algo y espero me echen la manita en lo que se pueda!. Todos los consejos, comentarios y criticas son y serán bienvenidas.
Saludos y gracias!.

Extra: (Edito: Ya vienen en android system lib)
ph4r05/android-openssl
Alguien sabe donde van esos archivos en android? (libcrypto.so etc...)
 
Última edición:
31 Mar 2018
89
47
18
#7
El archivo androidsllpy.py que comentas no creo que sirva para mega ya que solamente implementa la encriptación AES_CBC y para mega se necesita también AES_CTR.
 

pepe67

Usuario Novato
25 Oct 2017
23
3
3
25
#8
Pero se podría editar androidsllpy para manejar la encriptacion AES_CTR no?, según leei lo escrito por el propio Shani en el link de arriba en kodi.tv si. Pero la cuestión es el como, ustedes son mas aptos para este tipo de cosas a mi parecer. Tengo otro archivo, el AES.py que maneja la encriptacion CTR según lo que puedo apreciar y comprender. Pero no se si no importe mucho este archivo py, es decir, si la modificación se debe de hacer al androidsllpy y el AES.py no tiene nada que ver en esto, o si ambos van de la mano y uno le ayuda al otro para su implementacion hasta para su modificación. En fin tengo muchas dudas sobre esto, aun no me familiarizo con estos módulos y librerías. Crees poder ayudarme por favor pipcat?.
Muchas gracias y saludos de nuevo!.

Extra: Estoy tratando de comprender mejor estos temas así que aquí dejo algunos links de ayuda por si alguien que comprenda mejor sobre estos "rollos" lo pueda llevar acabo mejor que yo o darles otra comprensión mas amplia y optima todo sea para llevar a cabo el objetivo de este hilo que es el servidor mega y su correcto y posible funcionamiento en la mayor cantidad de dispositivos y sistemas posibles!. Gracias.
Aes Kodi encriptacion, pycrypto Android, etc.
PyCrypto or other ways for AES encryption for KODI on Android
PyCrypto on FireTV (Android ARM)
https://play.google.com/store/apps/details?id=jatx.sshclient
aes_ctrr, mas aesctr.py que encontré por ahí. (espero sea de ayuda).
Secure Shell Configuration Guide, Cisco IOS Release 15M&T - AES-CTR Support for SSHv2 [Support]
Security of AES in CTR mode with fixed nonce (but different key)
How to choose an AES encryption mode (CBC ECB CTR OCB CFB)?
Simple AES encryption and decryption not returning original text
Android AES in counter mode with 256 bits key
Does Android support AES256/CTR/NoPadding?
brianPlummer/AndroidEncryptionExample
Android™ AES CTR Mode Encryption
Cipher | Android Developers
Android Security Internals
src/crypto/aes-ctr.c - platform/external/wpa_supplicant_8 - Git at Google
Crypto.Cipher.blockalgo
ODROID • View topic - s805 Crypto Engine issue [AES CTR]
AppVeyor
XvBMC/repository.xvbmc
XvBMC/repository.xvbmc
XvBMC/repository.xvbmc
MrBlamo420/Project
(Nota: si no esta permitido esto lo pueden borrar sin ningun problema o avisar por la falta cometida, disculpen las posibles molestias es sin fines de lucro y con animo de ayudar a la comunidad interesada en estos temas, si se considera como posible SPAM sera removido sin problemas. Gracias por su comprensión).
 

Adjuntos

Última edición:
31 Mar 2018
89
47
18
#9
Sí claro, se podría modificar androidsllpy o se podrían crear otras librerías, solo se necesita tiempo, motivación y conocimientos sobre criptografía, python, android, kodi, etc ;-)

No veo problema en que pongas enlaces, eso no es spam, pero es una selección poco depurada pq has puesto muchas cosas y alguna que he mirado por encima no parece que se ajuste a nuestro caso.

En el primer msg de este hilo comenté que probamos diferentes librerías en python que no necesitan binarios, y pese a obtener los mismos resultados, no parecían suficientemente rápidas para que funcionen. Por esto creo que se necesitan los binarios para la plataforma que se esté usando.

Conozco poco android, pero parece que Kodi utiliza sus propias librerías internas de python, y esto dificulta el poder añadir otras. A nivel teórico, una opción sería meterle las librerías a Kodi (supongo que debe requerir ser root), y la otra opción meter las librerías en el addon. En el segundo caso, con los binarios adecuados, se podrían copiar a lib/Crypto del addon, pero no sé si android permitirá que se ejecuten, o si depende de las versiones de android, ...
 

pepe67

Usuario Novato
25 Oct 2017
23
3
3
25
#10
Tienes toda la razón, se necesita todo lo que mencionaste y afortunadamente me parece que en este foro la mayoría de los miembros la tenemos. si no es que todos!.
Es verdad que algunos de los enlaces quizás no nos sirvan o ni siquiera sea lo que buscamos pero sinceramente no los revise todos, me deje llevar por los títulos.

He estado analizando como editar el androidsslpy pero a pesar de que lo modifique es mas probable que no funcione a que si, no tengo muchas ideas que sean claras y funcionales pero voy a intentarlo apoyándome en otras librerías/módulos como el aesctr y algunos vídeos que vi, pero es que como soy estudiante de universidad no había tenido tiempo de estudiar a profundidad la programación en python hasta estos días que estoy de vacaciones y por lo tanto he quedado un poco relegado de lo que pude haber llegado a conseguir en cuanto a apoyarlos en Alfa y mis conocimientos en general. Me quede colgado con pelis24 reborn y peliculasgoogledrive,(aunque este ultimo se ve casi imposible por las captchas) espero retomarlos en los próximos días

De lo que mencionas de binarios en el contexto del tema no tengo muchos conocimientos acerca de. Así que me pondré a investigar un poco para ponerme al corriente y poder aportar y compartir ideas.
Cualquier cosa estaré actualizando el hilo con tests y demás, yo las realizo en un Fire Tv Stick 1ra gen.
Agradecimientos y Saludos!.
 
31 Mar 2018
89
47
18
#11
Me gusta tu optimismo, pero para nada todos los del foro tenemos tiempo y conocimiento. Más bién al revés, deben ser unos pocos los que tienen todo eso ;-) En todo caso, cada uno aporta lo que puede, y con eso es con lo que jugamos.

Sobre el aesctr que comentas, no creo que sirva pq parece una implementación en python de aes_ctr, y eso es lo que expliqué que probamos sin éxito. Pero está bién que lo pruebes tú también, por si es una librería más rápida que la que tenemos en el addon (pyaes) o por si cometí errores que me llevaran a una conclusión errónea. Lo que hize en su día fue probar si con diferentes librerías obtenía los mismos resultados, y luego probar de resolver mega con las distintas librerías. Solamente me funcionó la que usaba los binarios instalados en el sistema.
 
31 Mar 2018
89
47
18
#12
Por cierto, últimamente no me iban los enlaces de mega pq fallaba el urllib.urlopen(url, data).read() en megaserver/client/post(). Lo he cambiado por un requests.post y ahora vuelve a funcionar. Estará en la próxima actualización del addon.
Esto no tiene relación con el debate de binarios para la criptografía, siguen siendo necesarios.
 

pepe67

Usuario Novato
25 Oct 2017
23
3
3
25
#13
Después de algún tiempo no he conseguido hacer funcionar Mega en Android pero husmeando un poco por el github oficial de Kodi me he topado con esto:
xbmc/xbmc

xbmc/xbmc

Aparentemente lo buscan implementar para Kodi 18
O me equivoco?
Tu sabrás darle mejor lectura a este par de archivos. Igual y si igual y es solo ilusión.

Saludos!.