Décoder un site Web pour le fun

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Décoder un site Web pour le fun

Message par cage »

Bonsoir a tous,
Je me suis amusé a décoder un site Web pour m'amuser.
J'ai développé une petite application dont voici une copie écran de l'interface:
Image
Les sources et les exécutables sont téléchargeables ici
Menus gauche/Mes projets purebasic/zone privée 2
Login: pure / basic

Mais ce qui m’amène ce soir, c'est un petit challenge pour décoder du Javasript contenu dans les pages Web et codé avec une fonction eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};....
Voici ce a quoi je suis arrivé, et je me demandai si cela vous amuserez de tenter de décoder la dite fonction et de partager vos solution.

Code : Tout sélectionner

EnableExplicit

Global urlHomePage$ = "https://"+"www"+".arconaitv"+".us"

Global html.s, page.s

Procedure.s obtenir_page_html(page.s)
  ; page.s doit contenir l'url complète de la page
  ; html.s contiendra le contenu complet de la page (index, guide, ...)
  
  Protected URL$   = page.s ;;: Debug ">>>>> URL="+URL$
  Protected HTML.s = #Null$
  
  If URL$ = #Null$
    ProcedureReturn #Null$
  EndIf
  
  Protected host$, prot$, site$
  
  prot$ = Trim(StringField(URL$,1,"/")) : Debug ">>>>> PROT = " + prot$
  host$ = Trim(StringField(URL$,3,"/")) : Debug ">>>>> HOST = " + host$
  site$ = prot$ + "//" + host$ + "/"    : Debug ">>>>> SITE = " + site$
  
  Protected agent$, cookie$, lang$, type$
  
  agent$  = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
  cookie$ = ""
  lang$   = "fr-FR"
  type$   = "text/html"
  
  Protected HttpRequest
  
  If InitNetwork()
    NewMap Header$()
   ;Header$("Accept")          = type$
   ;Header$("Accept-Language") = lang$
    Header$("Cache-Control")   = "no-cache"
   ;Header$("Cookie")          = cookie$
   ;Header$("Connection")      = "keep-alive"
   ;Header$("Content-Type")    = type$
   ;Header$("Host")            = host$
   ;Header$("Referer")         = site$
    Header$("User-Agent")      = agent$
    
    HttpRequest = HTTPRequest(#PB_HTTP_Get, page.s, "", 0, Header$())
    If HttpRequest
      HTML.s = HTTPInfo(HTTPRequest, #PB_HTTP_Response)
      ;: Debug "Response: " + HTML.s
      FinishHTTP(HTTPRequest)
    Else ; ............................. If HttpRequest
      Debug "Request creation failed"
      ProcedureReturn #Null$
    EndIf ; ............................ If HttpRequest
  Else ; ............................... If InitNetwork()
    ProcedureReturn #Null$
  EndIf ; .............................. If InitNetwork()
  ProcedureReturn HTML.s
EndProcedure

Procedure.s decoder_m3u8(id)
  ;;https://beautifier.io/
  ;;http://dean.edwards.name/unpacker/
  
  Protected I, L, N, N$, A$, codage$, radix$, wordc$, hachage$, foo$, chaine$
  Protected M3U8.s
  Protected line.s, LIGNE
  
  NewList CODES.s()

  : Debug ">>>>> DECODE"
  PAGE.s  = urlHomePage$ + "/stream.php?id=" + Str(id)
  : Debug ">>>>> PAGE="+page
  HTML.s = obtenir_page_html(page.s)
  ;: Debug HTML
  
  NewMap LCODE.s()
  NewMap PCODE.s()
  
  For LIGNE = 1 To 999
    line.s = StringField(HTML.s, LIGNE, #LF$)
    ;: Debug LINE.s
    If FindString(line.s, "m3u8", 1, #PB_String_NoCase)
      line.s = ReplaceString(line.s, #TAB$, " ")
      : Debug ">>>>> M3U8 trouvé"
      ClearClipboard()
      L = CountString(line.s, ";") + 1            : Debug "Nombre de lignes de code = " + Str(L)
      For N = 1 To L
        N$ = Str(N)
        LCODE(N$) = Trim(StringField(line.s, N, ";"))
        Debug "ligne " + N$ + "= " + LCODE(N$)
      Next
      : Debug ""
      line.s = StringField(LCODE(Str(L)), 1, ".split")
      line.s = ReplaceString(line.s, "'", "")
      : Debug "line="+line
      I = CountString(line.s, ",")               : Debug "count , = " + Str(I)
      radix$  = StringField(line.s, 2, ",")      : Debug "radix="+radix$
      wordc$  = StringField(line.s, 3, ",")      : Debug "wordc="+wordc$
      chaine$ = StringField(line.s, 4, ",")      : Debug "Chaine = "+chaine$
      
      codage$ = LCODE(Str(L-2))                  : Debug "codage="+codage$ 
      
      codage$ = StringField(codage$, 2, "\'")    : Debug "codage="+codage$
      
      codage$ = UCase(codage$) : Debug "codage="+codage$
      
      ; création du tableau des éléments de chaine$
      I = CountString(chaine$, "|")
      For N = 0 To I
        Select N
          Case 0 To 9 : A$ = Str(N)
          Default     : A$ = UCase(Chr(87+N))
        EndSelect
        PCODE(A$) = StringField(chaine$, N+1, "|")
      Next
      
      ForEach PCODE()
        Debug "Array["+MapKey(PCODE())+"] = "+PCODE()
      Next
      
      : Debug "Longueur codage=" + Len(codage$)
      foo$ = #Null$
      For I = 1 To Len(codage$)
        A$ = Mid(codage$, I, 1)
        Select A$
          Case "/", ":", ".", "-" : foo$+A$
          Case "0","1","2","3","4","5","6","7","8","9"
                    foo$+PCODE(A$)
          Case "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
                    foo$+PCODE(A$)
          Default : foo$+A$
        EndSelect
      Next
      Debug "Lien vidéo: " + foo$
    EndIf
  Next
  SetClipboardText(foo$)
  ProcedureReturn foo$
EndProcedure

decoder_m3u8(173)

; Debug obtenir_page_html(urlHomePage$ + "/stream.php?id=173")
Je vous laisse découvrir le contenu du site et ceux qui maitrisent l'anglais pourrons y trouver leur compte.
CAGE
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Décoder un site Web pour le fun

Message par Ar-S »

Salut Cage, Je me suis baladé sur ton site, je ne pensais pas que tu étais si à fond sur les progs de TV :D
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Décoder un site Web pour le fun

Message par cage »

Bonjour Ar-S,
C'est un domaine qui intéresse beaucoup de monde, notamment le streaming.
Je me suis donc penché sur ce monde particulier.
Je me suis servi de PB pour afficher/décoder un certain nombre de sites.
Le but principal n'est pas de visionner mais de voir si je suis capable de faire.
A bientôt 67 ans, PB m'aide a garder mes neurones actifs.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Décoder un site Web pour le fun

Message par djes »

Apparemment ça fonctionne bien !
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Décoder un site Web pour le fun

Message par MLD »

@djes
Tu veux parler des neurones a cage :roll: :oops: Je confirme :D :D
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Décoder un site Web pour le fun

Message par cage »

@djes, MLD
Merci a vous deux.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Décoder un site Web pour le fun

Message par Micoute »

C'est normal qu'on soutienne notre génération.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Décoder un site Web pour le fun

Message par Kwai chang caine »

Merci pour les nombreux partages de ton site 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Décoder un site Web pour le fun

Message par cage »

Merci Micoute, merci Kwai chang caine
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Décoder un site Web pour le fun

Message par Ollivier »

Salut cage,

je viens d'aller sur la 1ère page de ton site à l'instant, pour la petite info.
Répondre