Kodi-vStream / venom-xbmc-addons

Addon de Streaming français pour Xbmc
GNU General Public License v3.0
497 stars 275 forks source link

Re ca_tcha #2550

Closed Arias800 closed 5 years ago

Arias800 commented 5 years ago

Pour certain captcha comme par exemple celui de ouo utiliser par cinemegatoil il est possible de générer les payload et de résoudre le captcha correctement pour obtenir le token final (c'est la meme chose pour le captcha de cloudflare par exemple) alors bien sur ce n'est pas valable pour tous mais c'est deja un premier pas ^^ https://github.com/Arias800/Fichier-divers/blob/master/cfrecaptcha/ouo%20captcha.py

ghost commented 5 years ago

pareil confluence pas de souci sauf que ne tu fonctionne pas

razorex commented 5 years ago

Ben chez moi ne tu fonctionne avec confluence. Donc c'est bien le skin qui fait çà. j'ai regarder dans le skin estuary et modifier les images çà n'a rien changer pour autant

TmpName commented 5 years ago

Mais ca fonctionne jamais chez toi @johngf ? C'est pas une histoire d'IP, tu passes par un VPN de memoire ? Par contre je vois rien dans le code qui puisse provoquer un bug d'affichage, et ca me fait **** de changer de theme, surtout qu'on a 9 chance sur 10 que le bug vienne de leur merde.

razorex commented 5 years ago

ben si tu est sur confluence reste dessus.

ghost commented 5 years ago

a chaque fois que j'ai test ne tu ça fonctionné pas sur kodi 16.1 apres le captcha fichier introuvable pas encore test sur la version récente. sinon @TmpName si tu peux jeter un oeil a l'hoster my stream , j'avais trouvé une astuce .. ça a fonctionné deux jours dans le aacode on a var source_TYPE = document.createElement('source'); source_TYPE.setAttribute('type', 'video/mp4'); source_TYPE.setAttribute('src', vv(key, atob('FahUhMcrihtAbfb9tWhIOYVVEPud+ZUDckMw2UXMauVQDWyf9SmJUXLXtrcR9YwU9LG52u/5fOhDnGQe+wU9RwQw0htsCFW54PZK9yDSzf+QG4VoSWhRen7MFNRKnpyftMzMTmBEkn87IM/7mZKsjb4JqGY=')));

atob donc base 64 ne fonctionne pas j'ai chercher la fonction qui décode correctement mais meme avec un coup de jsnice je seche il y a bien la fonction vv mais la key (pas trouvé)

TmpName commented 5 years ago

Moi j'en suis que la https://pastebin.com/ZKwgbJtZ Pour le moment j'ai pas encore trouve la fonction VV, par contre la code qui genere la clé pique les yeux ...

A un moment j'avais une extension firefox qui m'affichait tout les code JS decodé, faut que je la retrouve, elle etait non compatible avec les nouvelle version de firefox.

ghost commented 5 years ago

en faite il y a plusieurs fois le meme code surement avec quelque différence dans les js les coded packed sont inutile fonction vv est dedans https://pastebin.com/WHwCt9Gi

TmpName commented 5 years ago

J'ai decodé la fonction vv

function vv(h, key) {

  var secretKey = [];
  var y = 0;
  var temp;
  var pix_color = "";
  var x = 0;
  for (; x < 256; x++) {
    secretKey[x] = x;
  }

  x = 0;
  for (; x < 256; x++) {
    y = (y + secretKey[x] + h.charCodeAt(x % h.length)) % 256;
    temp = secretKey[x];
    secretKey[x] = secretKey[y];
    secretKey[y] = temp;
  }

  x = 0;
  y = 0;
  var i = 0;
  for (; i < key.length; i++) {
    x = (x + 1) % 256;
    y = (y + secretKey[x]) % 256;
    temp = secretKey[x];
    secretKey[x] = secretKey[y];
    secretKey[y] = temp;
    pix_color = pix_color + String.fromCharCode(key.charCodeAt(i) ^ secretKey[(secretKey[x] + secretKey[y]) % 256]);
  }
  return pix_color;
}

Now la variable key

TmpName commented 5 years ago

Fini, https://pastebin.com/hVqUVw6u Bon la coloration syntaxique a pas marché (une grosse partie est en commentaire), me suis loupé, mais copie/colle ce code dans un fichier test.html. Et tu auras une page fonctionnelle, avec les liens en popup et le code nettoyé.

J'ai laissé comme ca, car me dis que dans quelques jours, ils vont modifier le code, et pour le moment on sait pas ce qui est fixe et ce qui va bouger, donc c'est plus visible.

Mais y a encore du taff. Faut extraire les bonne chaine du code html (le plus chiant je pense), convertir les fonction JS >Python et croiser les doight pour que le code soit pas trop mobile. Mais ce sera pas ce soir pr moi.

ghost commented 5 years ago

pour l'instant je n'ai pas réussi a exécuté le js seul pour avoir la clef et je pige pas trop document["getElementsByTagName"]

TmpName commented 5 years ago

Normallement j'avais desactivé cette partie, je crée une variable TableauTest et je m'en sert pour memoriser les data a la place de cette fonction. Si je me suis pas loupé, dans mon dernier lien, ca devrait etre en commentaire.

La je commence la convertion en python.

Edit: mer2, j'avais pas vu l heure, je mettrais mon code en fin de soirée, mais on mon avis il sera pas tres avancé ^^.

Edit 2: Pour info, je commence sur la creation de la clé.

ghost commented 5 years ago

j'ai commencé la fonction tableau test en python mais pour l'instant je finis en index out of range mais j'ai le bon tableau

TmpName commented 5 years ago

Tu aurais le code ? Que je parte dessus ?

TmpName commented 5 years ago
# -*- coding: utf-8 -*- 

# clé : iymootujbuwc
# lien : https://wrkqgwanoq.mystream.io/k27i5nnm62bgxoadn6qboza5sz7ohjbcy5x7diqphwwsw26bxs2zdhoqm5la/epepcanubajkzinnvrft.mp4

link = 'LVjDrBjpI+/zpqcHUWPGXE+gJsK3yYyhZjgJIq4/BHbQ6fz1n4uu5/SmdyGDnM/gVZWbBlmFPVa0AD5Yent3eVKRdtu53cHhlSNvK1YlY9yCoAVvS/+LGUIs2Mll+w2F3EzVTtzA+lXQkp4iqgBfZTOkYE8='

var1 = ["rectfxjszmuiavdwgpoknyqbl", "0123456789", "miwnjxcwysstmyufirwywobmnkwuffaxuceb", "length", "getElementsByTagName"]
var2 = ["getAttribute", "g0x3o5n1p4t8b4c2k3y6s0r6"]

key = ''

TableauTest = {}

l = var1[0]
n = "0123456789"
h = var1[2]
j = 0

while (j < len(l)):
    k = 0
    while (k < len(n)):
        TableauTest[l[j] + n[k]] = h[int(j + k)];
        k += 1

    j += 1

hash = var2[1]
i = 0

while (i < len(hash)):
    key = key + TableauTest[hash[i] + hash[i + 1]]
    i+= 2

print ("key :" + key)
TmpName commented 5 years ago

Y a rien d'optimisé, c'est de la convertion en direct, mais ca marche

# -*- coding: utf-8 -*- 

import base64

# clé : iymootujbuwc
# lien : https://wrkqgwanoq.mystream.io/k27i5nnm62bgxoadn6qboza5sz7ohjbcy5x7diqphwwsw26bxs2zdhoqm5la/epepcanubajkzinnvrft.mp4

link = 'LVjDrBjpI+/zpqcHUWPGXE+gJsK3yYyhZjgJIq4/BHbQ6fz1n4uu5/SmdyGDnM/gVZWbBlmFPVa0AD5Yent3eVKRdtu53cHhlSNvK1YlY9yCoAVvS/+LGUIs2Mll+w2F3EzVTtzA+lXQkp4iqgBfZTOkYE8='

var1 = ["rectfxjszmuiavdwgpoknyqbl", "0123456789", "miwnjxcwysstmyufirwywobmnkwuffaxuceb", "length", "getElementsByTagName"]
var2 = ["getAttribute", "g0x3o5n1p4t8b4c2k3y6s0r6"]

key = ''

TableauTest = {}

l = var1[0]
n = "0123456789"
h = var1[2]

j = 0
while (j < len(l)):
    k = 0
    while (k < len(n)):
        TableauTest[l[j] + n[k]] = h[int(j + k)];
        k += 1

    j += 1

hash = var2[1]

i = 0
while (i < len(hash)):
    key = key + TableauTest[hash[i] + hash[i + 1]]
    i+= 2

print ("key :" + key)

chain = base64.b64decode(link)

secretKey = {}
y = 0
temp = ''
url = ''

x = 0
while ( x < 256):
    secretKey[x] = x
    x += 1

x = 0
while ( x < 256):
    y = (y + secretKey[x] + ord(key[x % len(key)])) % 256
    temp = secretKey[x]
    secretKey[x] = secretKey[y]
    secretKey[y] = temp
    x += 1

x = 0
y = 0
i = 0

while ( i < len(chain)):
    x = (x + 1) % 256
    y = (y + secretKey[x]) % 256
    temp = secretKey[x]
    secretKey[x] = secretKey[y]
    secretKey[y] = temp

    url = url + chr(chain[i] ^ secretKey[(secretKey[x] + secretKey[y]) % 256])

    i += 1

print ('link : ' + url)
ghost commented 5 years ago

le code est dynamique certaine variable change de place a chaque fois du coup faut bidouillé ça a l'air d'etre bon. fonctionne il manquait (chr(ord au lieu de chr

TmpName commented 5 years ago

C'est ce qui me fait peur, il ya aussi une partie que j'ai sauté

(function(data, i) {
  var write = function(isLE) {
    for (; --isLE;) {
      data["push"](data["shift"]());
    }
  };
  write(++i);
})(_0x4bb4, 500);

Dans notre cas ca servait pas, mais ca veut pas dire que ca ne va pas etre le cas, ca decale juste les tableaux de valeurs recupéree, au pire, on peut retrouver les bonnes valeurs par deduction.

var1 = ["rectfxjszmuiavdwgpoknyqbl", "0123456789", "miwnjxcwysstmyufirwywobmnkwuffaxuceb", "length", "getElementsByTagName"] var2 = ["getAttribute", "g0x3o5n1p4t8b4c2k3y6s0r6"]

ghost commented 5 years ago

ils ont changé le code mais ça reste le meme principe . notre variable (c )>> ("getAttribute) est maintenant codé en jj j'ai mis le fichier a jour pour une serie sur ls another life on verra demain si il change encore

TmpName commented 5 years ago

Sinon y a le methode de bourrin presente dans opnload qui passe toute la page a tout les decodeurs en boucle, au moins tu es sur de tout avoir decodé. Par contre a voir si aadecode marche pas mieux que le jsparser, chez moi c'est trop long le decodage avec le parser JS.

ghost commented 5 years ago

@Arias800 le captcha doit etre résolu avec la site key propre au site obligatoire ? parce que j'ai test d'utiliser le token d'un captcha de ne tu pour un autre site pour l'instant fonctionne pas

Arias800 commented 5 years ago

Je pense qu'il faut le site key du site en question ^^

ghost commented 5 years ago

j'ai meme test avec une url non hqq ça fonctionne pas pour l'instant

ghost commented 5 years ago

et pour ne_tu tu as déja essayer de ré utiliser un token plusieur fois ?

Arias800 commented 5 years ago

Je n'ai pas essayer ^^