Anti-illégalité. -Post inutile.

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Je vais mettre mon nez la ou faut pas, mais pour scanner les archives, comment tu fais si:

- Les archives (zip ou rar, par ex.) ne sont en fait que des fichiers dont l'extension a été changée! (Courant avec certaines images pour ne pas attirer l'attention, on change un .jpg en .zip, et ça roule)

- Les archives ont un mot de passe.
- Les archives sont auto-décompressibles. (.exe, ou pourquoi pas .glop :lol: comme j'en ai trouvé une fois sur un site)

Supposition... (J'ai bien dit supposition, n'allez pas prendre ça au premier degré. Hein!)

Je suis un super pirate de la mort, (qui c'est qui rigole, là), et j'ai cracké PureBasic. :lol:
Tu crois que je vais mettre ça sur ton site avec comme titre "PureBasic_Cracked_Version_3.91_FuckZeCopz.lol") :roll:

Non, je vais mettre un petit nom sympa qui n'attire pas l'attention, du genre "BasicEditor.exe", et tu vas m'héberger bien gentiment, sans même te douter que je suis un ignoble personnage. :evil:

C'est pas dans la poche, tout ça!!! :(
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

- Les archives (zip ou rar, par ex.) ne sont en fait que des fichiers dont l'extension a été changée! (Courant avec certaines images pour ne pas attirer l'attention, on change un .jpg en .zip, et ça roule)
Une archive regardée par l'hexa décimal c'est très beau ;). En clair, généralement ces archives même renommé contienent un fiochier crack.nfo ou autre. Qui apparaitra en hexa. Donc que l'extension soit bmp ou zip m'en fous :P. Ensuite si l'archive est protégée par mot de passe. Alors soit je joue au pas gentil à savoir brute force, soit je passe (scan en hexa que même :mrgreeen:). Les archives *.zip convertit en *.exe sont ouvrables comme un zip normal. ;).
Pour l'histoire du nom, c'est pas sur ;). les trois quarts des gens qui ont des cracks ne les font pas, ils se contentent de les distribuer. Enc lair, ils sont pas toujours futfut et donc mettent un nom simple. ;)
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Heis Spiter, explique-toi pour ODEBIT?
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

il y a un code pour encoder un mot en phonétique sur Code Fr il me semble, ça pourrait servir
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Je suis un super pirate de la mort, (qui c'est qui rigole, là), et j'ai cracké PureBasic. Laughing
Tu crois que je vais mettre ça sur ton site avec comme titre "PureBasic_Cracked_Version_3.91_FuckZeCopz.lol" ) Rolling Eyes


oui et les images steganographié !! :D

et puis les archives "*.arc, *.lzh, *.ace ,*.Larc, ect...) :D


il existe tellement d'autres formats d'archive dont certain encode l'hexadecimal ,qui fait que tu trouvera rien par ce biais !!
je dirai meme que ton hebergement lorsque tous saurront que tu filtre
les fichiers , deviendra un "chalenge" pour tous .. :D




:)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

il me semble que certains cachent les télechargements illégaux sous forme d'images BMP ou JPEG
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je comprend que tu veuille faire de ton mieux
mais securiser un site a 60 % c'est deja bien !

(meme si tu connais mon avis sur la facon d'y arrriver !) :?

:)
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Dobro a écrit :et puis les archives "*.arc, *.lzh, *.ace ,*.Larc, ect...)
Ca c'est clair... :(
Oliv a écrit :il me semble que certains cachent les télechargements illégaux sous forme d'images BMP ou JPEG
Oui mais une archive même renommé reste en héxa, une archive ;).
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message par cookie »

@ heis: juste une remarque sur le fond (sur la loi LEN qui t'inquiète et qui vient d'être 'en partie' censurée par le conseil constitutionnel ):comment tu fais pour les fichiers musicaux (c'est surtout eux que protège la LEN) sur ton hébergement pour tester leur illégalité?


pour la censure du CC:
http://www.01net.com/article/249260.html
Cookie
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Voici la nouvelle version avec le support des zip et quelques bugs en moins ^^.
CheckBotMain.pb

Code : Tout sélectionner

;- Défini les variables globales.
Global crack.l, warez.l, gamez.l, p2p.l, sexe.l, ignored.l, LIgnore.l, nbdirectories.l, Tocheck, ToUnzip
;- Créé le tableau pour les fichiers à ignorer.
Dim ToIgnore.s(100)
;- Créé la structure pour les fichiers sensibles.
Structure Files
  file.s
  directory.s
  lfcrack.l
  lfwarez.l
  lfgamez.l
  lfp2p.l
  lfsexe.l
EndStructure
;- Créé la structure pour les fichiers zip
Structure Zips
  file.s
  directory.s
EndStructure
;- Créé la liste chaînée qui permet d'enregistrer les fichiers.
NewList Infected.Files()
;- Créé la liste chaînée qui permet d'enregistrer les fichiers zip.
NewList Archives.Zips()
;- Déclare la structure *.zip.
zi.ZipEntryInfo
;- Compte le nombre de dossiers à scanner. 
If ReadFile(1, "directories.conf")
  ; Part à 1 car il y a déjà avec le readstring de while.
  nbdirectories = 1
  ; Boucle de lecture du fichier
  While ReadString()
    ; ligne$ est la ligne courante.
    ligne$ = ReadString()
    ; Si elle ne commence pas par # (commentaire)
    If Left(ligne$, 1) <> "#"
      ; Incrémentation
      nbdirectories = nbdirectories + 1
    EndIf
  Wend
  ; Fermeture du fichier
  CloseFile(1)
EndIf
nbdirectories = nbdirectories + 2
;- Inclue le fichier contenant toutes les fonctions et constantes.
IncludeFile "CheckBotInclude.pb"
;- Ouvre la fenêtre principale
Open_Window_0()
;- Boucle principale
Repeat
  ; Attend un évenement
  Event = WaitWindowEvent()
  ; Si cet évenement vient d'un gadget
  If Event = #PB_EventGadget
    ; Cherche l'ID du gadget
    GadgetID = EventGadgetID()
    ; Si c'est le bouton vérifier
    If GadgetID = #Button_1
      ; Lancement d'un thread pour vérifier les fichiers/dossiers.
      CreateThread(@main(), 0)
    ; Si c'est le bouton quitter
    ElseIf GadgetID = #Button_2
      ; Quitte la boucle
      quit = 1
    EndIf
  EndIf
; Fin de la boucle
Until Event = #PB_EventCloseWindow Or quit = 1
;- Quitte le programme
End
CheckBotInclude.pb

Code : Tout sélectionner

;- Déclaration des constantes pour les fenêtres.
Enumeration
  #Window_0
  #Window_1
EndEnumeration
;- Déclaration des constantes pour les gadgets.
Enumeration
  #ProgressBar_0
  #Text_0
  #Text_1
  #Listview_0
  #Button_1
  #Button_2
  #Intro
  #Fichier
  #Demande
  #FDelete
  #Clear
  #Rien
EndEnumeration

Procedure FindFile(file$) ; Cherche un fichier dans la liste des fichiers à ignorer.

  ; Boucle de 0 à 99 (taille maximale du tableau).
  For i = 0 To 99
    ; Retourne le nom de fichier contenu dans le tableau à l'adresse i. 
    Lfile$ = ToIgnore(i)
    ; Si ce fichier est le fichier en cours.
    If Lfile$ = file$
      ; la prococédure retourne vrai (true).
      ProcedureReturn #TRUE
      ; Et quitte la boucle.
      Break     
    EndIf 
  Next i
  
EndProcedure

Procedure WriteLog(text$, mode) ; Écrit le fichier log.

  ; Si le mode est 2
  If mode = 2
    ; Ajout de l'information dans la liste.
    AddGadgetItem(#Listview_0, -1, text$)
  EndIf
  ; S'il arrive à ouvrir/créer le fichier.
  If OpenFile(0, "results.log")
    ; Place le pointeur en fin de fichier.
    FileSeek(Lof())
    ; Et écrit le texte demandé.
    WriteStringN(text$)
    ; Puis ferme le fichier
    CloseFile(0)
  EndIf

EndProcedure

Procedure ExamineFile(file$, mode) ; Scanne le fichier à la recherche de mots 'interdits'

  ; S'il arrive à ouvrir le fichier en lecture.
  If ReadFile(2, file$)
    ; Mise en place de variables.
    delay = 1
    vide = 0
    notclean = 0
    fcrack.l = 0
    fwarez.l = 0
    fgamez.l = 0
    fp2p.l = 0
    fsexe.l = 0
    ; Cherche l'extension du fichier; si elle est différente de zip.
    If GetExtensionPart(file$) <> "zip"
      ; Boucle de lecture.
      Repeat
        ; Lit la ligne en cours.
        ligne$ = ReadString()
        ; La met en miniscules.
        ligne$ = LCase(ligne$)
        ; S'il trouve le mot 'crack'.
        If FindString(ligne$, "crack", 0)
          ; Incrémente la variable globale crack.
          crack = crack + 1
          ; Incrémente la variable fcrack.
          fcrack = fcrack + 1
          ; Et informe de l'existance de ce mot.
          WriteLog("Texte illégal dans "+file$, 2)
          ; Met la variable notclean à 1.
          notclean = 1
        EndIf
        ; S'il trouve le mot 'warez'.
        If FindString(ligne$, "warez", 0)
          ; Incrémente la variable globale warez.
          warez = warez + 1
          ; Incrémente la variable fwarez.
          fwarez = fwarez + 1
          ; Et informe de l'existance de ce mot.
          WriteLog("Texte illégal dans "+file$, 2)
          ; Met la variable notclean à 1.
          notclean = 1
        EndIf
        ; S'il trouve le mot 'gamez'.
        If FindString(ligne$, "gamez", 0)
          ; Incrémente la variable globale gamez.
          gamez = gamez + 1
          ; Incrémente la variable fgamez.
          fgamez = fgamez + 1
          ; Et informe de l'existance de ce mot.
          WriteLog("Texte illégal dans "+file$, 2)
          ; Met la variable notclean à 1.
          notclean = 1
        EndIf
        ; S'il trouve le mot 'p2p'.
        If FindString(ligne$, "p2p", 0)
          ; Incrémente la variable globale p2p.
          p2p = p2p + 1
          ; Incrémente la variable fp2p.
          fp2p = fp2p + 1
          ; Et informe de l'existance de ce mot.
          WriteLog("Texte illégal dans "+file$, 2)
          ; Met la variable notclean à 1.
          notclean = 1
        EndIf
        ; S'il trouve le mot 'sexe'.
        If FindString(ligne$, "sexe", 0)
          ; Incrémente la variable globale sexe.
          sexe = sexe + 1
          ; Incrémente la variable fsexe.
          fsexe = fsexe + 1
          ; Et informe de l'existance de ce mot.
          WriteLog("Texte illégal dans "+file$, 2)
          ; Met la variable notclean à 1.
          notclean = 1
        EndIf
        ; Supprime tous les espaces au début et à la fin de la chaîne, si la chaîne devient nulle.
        If Trim(ligne$) = ""
          ; Incrémente la variable vide.
          vide = vide + 1
        EndIf
        ; Si delay égal 1
        If delay = 1
          ; Pause de 1 milliseconde.
          Delay(1)
          ; Mise à zéro de delay.
          delay = 0
        EndIf
      ; Fin de la boucle : avoir atteint la fin du fichier ou le nombre de lignes vides (10000).
      Until Eof(2) Or vide = 10000
      ; Si notclean égale 1, le fichier n'est pas propre, il contient des mots 'interdits'.
      If notclean = 1
        ; Si le mode n'est pas 3 (archive).
        If mode <> 3
          ; Enregistrement de ce fichier dans la liste.
          AddElement(Infected())
          ; Met son nom.
          Infected()\file = GetFilePart(file$)
          ; Met son chemin.
          Infected()\directory = GetPathPart(file$)
          ; Met le nombre de mots interdits trouvés (non utilsé).
          Infected()\lfcrack = fcrack
          Infected()\lfwarez = fwarez
          Infected()\lfgamez = fgamez
          Infected()\lfp2p = fp2p
          Infected()\lfsexe = fsexe
          ; Incrémente la variable globale Tocheck.
          Tocheck = Tocheck + 1
        EndIf
        ; La procédure renvoie 2.
        ProcedureReturn 2
      Else
        ; La procédure renvoie 1.
        ProcedureReturn 1
      EndIf
      ; Ferme le fichier.
      CloseFile(2)
    ; Si c'est une archive zip.
    Else
      ; Enregistrement de cette archive dans la liste.
      AddElement(Archives())
      ; Met son nom.
      Archives()\file = GetFilePart(file$)
      ; Met son chemin.
      Archives()\directory = GetPathPart(file$)
      ; Incrémente la variable globale ToUnzip.
      ToUnzip = ToUnzip + 1
      ; La procédure renvoie 3.
      ProcedureReturn 3
    EndIf
  ; S'il ne peut pas lire le fichier.
  Else
    ; En informe l'utilisateur.
    WriteLog("Impossible de lire "+NextD$+DEN$, 2)
  EndIf
  
EndProcedure

Procedure ClearFile(file$) ; Nettoie le fichier.

  ; Renome le fichier en fichier *.bak.
  If RenameFile(file$, file$+".bak")
    ; Ouvre le fichier renommé et créé un fichier ayant le nom du précédent.
    If ReadFile(2, file$+".bak") And CreateFile(3, file$)
      ; Mise en place de variables.
      vide = 0
      delay = 1
      ; Boucle de lecture, remplacement, écriture.
      Repeat
        ; Utilise le fichier deux (le renommé).
        UseFile(2)
        ; Lit la ligne en cours.
        ligne$ = ReadString()
        ; Remplace tous les mots interdits par 'rien'
        ligne$ = ReplaceString(ligne$, "crack", "")
        ligne$ = ReplaceString(ligne$, "warez", "")
        ligne$ = ReplaceString(ligne$, "gamez", "")
        ligne$ = ReplaceString(ligne$, "p2p", "")
        ligne$ = ReplaceString(ligne$, "sexe", "")
        ; Change de fichier et prend le trois (le nouveau créé)
        UseFile(3)
        ; Et écris la chaîne 'pure'.
        WriteStringN(ligne$)
        ; Supprime tous les espaces au début et à la fin de la chaîne, si la chaîne devient nulle.
        If Trim(ligne$) = ""
          ; Incrémente la variable vide.
          vide = vide + 1
        EndIf
        ; Si delay (= 1)
        If delay
          ; Pause de 1 milliseconde.
          Delay(1)
          ; Mise à zéro de delay.
          delay = 0
        EndIf
      ; Fin de la boucle : avoir atteint la fin du fichier ou le nombre de lignes vides (10000).
      Until Eof(2) Or vide = 10000
      ; Ferme les deux fichiers.
      CloseFile(2)
      CloseFile(3)
      ; Supprime le fichier *.bak.
      DeleteFile(file$+".bak")
      ; Informe que le nettoyage a réussi.
      WriteLog("Fichier "+file$+" nettoyé avec succès !", 2)
    ; S'il ne peut pas créer un lire un fichier, informe.
    Else
      MessageRequester("Erreur", "Impossible de nettoyer le fichier !", #MB_ICONERROR)
    EndIf
  ; S'il ne peut pas renommer, informe.
  Else
    MessageRequester("Erreur", "Impossible de nettoyer le fichier !", #MB_ICONERROR)
  EndIf

EndProcedure

Procedure ExamineFDirectory(nbdirectory, directory$, type) ; Examine les répertoires.
  
  ; S'il l'examen a réussi.
  If ExamineDirectory(nbdirectory, directory$, "*.*")
    ; Met la variable BadFiles à un.
    BadFiles = 1
    ; Cherche la prochaine entrée.
    NDE = NextDirectoryEntry()
    ; Tant qu'elle n'est pas nulle (inexistante).
    While NDE <> 0
      ; Si elle vaut un, c'est un fichier.
      If NDE = 1
        ; Cherche le nom du fichier.
        DEN$ = DirectoryEntryName()
        ; Cherche si le fichier est dans la liste des fichiers à ignorer.
        If FindFile(DEN$)
          ; Si oui, incrémente la variable globale ignored.
          ignored = ignored+1
        Else
          ; Sinon, ajoute le fichier qui va être scanné dans la liste.
          AddGadgetItem(#Listview_0, -1, directory$+DEN$)
          ; Et l'affiche sous la barre de progression.
          SetGadgetText(#Text_1, directory$+DEN$)
          ; Si BadFiles n'est pas égale à 2.
          If BadFiles <> 2
            ; Examine le fichier en lui trasnmettant le type.
            BadFiles = ExamineFile(directory$+DEN$, type)
          Else
            ; Examine le fichier en lui trasnmettant le type.
            ExamineFile(directory$+DEN$, type)
          EndIf
        EndIf
      ; Si l'entrée vaut deux, c'est un répertoire.
      ElseIf NDE = 2
        ; Cherche le nom du répertoire.
        DEN$ = DirectoryEntryName()
        ; S'il ne vaut pas les points de DOS/UNIX.
        If DEN$ <> "." And DEN$ <> ".."
          ; Si le répertoire ne termine pas par un contre slash.
          If Right(DEN$, 1) <> "\"
            ; Ajout de ce dernier.
            DEN$ = DEN$ + "\"
          EndIf
          ; Ajoute le dossier qui va être examiné dans la liste.
          AddGadgetItem(#Listview_0, -1, directory$+DEN$)
          ; Et l'affiche sous la barre de progression.
          SetGadgetText(#Text_1, directory$+DEN$)
          ; Si type n'est pas égal à 3.
          If type <> 3
            ; examine ce répertoire (en incrementant la variable des répertoires, afin de pouvoir retourner au précédent)
            ExamineFDirectory(nbdirectory+1, directory$+DEN$, 2)
          ; Si type égal 3
          Else
            ; examine ce répertoire (en incrementant la variable des répertoires, afin de pouvoir retourner au précédent)
            ExamineFDirectory(nbdirectory+1, directory$+DEN$, 3)
          EndIf  
        EndIf
      EndIf
      ; Utilise le répertoire précédent.
      UseDirectory(nbdirectory)
      ; Cherche l'entrée suivante.
      NDE = NextDirectoryEntry()
      ; Attend une milliseconde.
      Delay(1)
    Wend
    ; Si le type de répertoire est 1 ou 3 (répertoire (et archive) et non sous-répertoire).
    If type = 1 Or type = 3
      ; Si le type est 1.
      If type = 1
        ; Informe du succès de l'opération.
        WriteLog("Répertoire examiné avec succés", 2)
      ; S'il est égale à 3.
      ElseIf type = 3
        ; Informe du succès de l'opération.
        WriteLog("Archive examinée avec succés", 2)
      EndIf
      If crack = 0 And warez = 0 And gamez = 0 And p2p = 0 And sexe = 0
        ; Si rien d'illégal n'a été trouvé, informe.
        WriteLog("Rien d'illégal n'a été trouvé !", 2)
      Else
        ; Sinon, informe de ce qui a été trouvé.
        WriteLog("crack = "+Str(crack), 2)
        WriteLog("warez = "+Str(warez), 2)
        WriteLog("gamez = "+Str(gamez), 2)
        WriteLog("p2p = "+Str(p2p), 2)
        WriteLog("sexe = "+Str(sexe), 2)
      EndIf
      ; Si le nombre de fichiers ignorés est différent de zéro.
      If ignored <> 0
        ; Informe du nombre de fichiers ignorés.
        WriteLog(Str(ignored)+" fichier(s) ignoré(s) !", 2)
      EndIf
    EndIf
    ; La procédure retourne BadFiles (0, 1, ou 2).
    ProcedureReturn BadFiles
  EndIf

EndProcedure

Procedure Open_Window_1() ; Créé la fenêtre de demande d'execution pour les fichiers 'sensibles'.
  If OpenWindow(#Window_1, 235, 104, 230, 109,  #PB_Window_TitleBar | #PB_Window_WindowCentered, "Que faire ?")
    If CreateGadgetList(WindowID())
      TextGadget(#Intro, 10, 10, 210, 20, "Des élements illégaux ont été trouvés dans :")
      TextGadget(#Fichier, 10, 30, 210, 20, "")
      TextGadget(#Demande, 10, 60, 230, 20, "Que désirez vous faire ?")
      ButtonGadget(#FDelete, 10, 80, 60, 20, "Supprimer")
      ButtonGadget(#Clear, 80, 80, 60, 20, "Nettoyer")
      ButtonGadget(#Rien, 160, 80, 60, 20, "Rien", #PB_Button_Default)
      
    EndIf
  EndIf
EndProcedure

Procedure main() ; le coeur du programme.
  
  ; Désactive le bouton vérifier.
  DisableGadget(#Button_1, 1)
  ; Ouvre la liste de fichier à ignorer.
  If ReadFile(0, "ignore.list")
    ; L'affiche.
    SetGadgetText(#Text_0, "Lecture de la liste des fichiers à ignorer")
    ; Et l'ajoute à la liste.
    AddGadgetItem(#Listview_0, -1, "Lecture de la liste des fichiers à ignorer")
    ; Boucle de lecture.
    Repeat
      ; Lit la ligne en cours.
      FToIgnore$ = ReadString()
      ; Et l'ajoute à la liste des fichiers à ignorer.
      ToIgnore(LIgnore) = FToIgnore$
      ; Incrémente la variable globale LIgnore
      LIgnore = LIgnore + 1
    ; Ce, jusqu'à la prochaine ligne vide.
    Until FToIgnore$ = ""
    ; Fermeture du fichier.
    CloseFile(0)
    ; Avancement de la barre de progression.
    SetGadgetState(#ProgressBar_0, 1)
  EndIf
  ; Lit de le fichier contenant les répertoires.
  If ReadFile(1, "directories.conf")
    ; Et commence la vérification.
    SetGadgetText(#Text_0, "Vérification en cours...")
    ; Lit la ligne en cours.
    NextD$ = ReadString()
    ; Met la variable i en place.
    i = 2
    ; Pendant qu'il y aura des répertoire à lire.
    While NextD$
      Debug i
      ; Si le répertoire ne commence pas par # (répertoire).
      If Left(NextD$, 1) <> "#"
        ; Si le répertoire ne termine pas par un contre slash.
        If Right(NextD$, 1) <> "\"
          ; Ajout de ce dernier.
          NextD$ = NextD$ + "\"
        EndIf
        ; Informe du répertoire en cours d'examin.
        WriteLog(NextD$, 2)
        ; Examine le répertoire.
        ExamineFDirectory(3, NextD$, 1)
        ; Et avance.
        SetGadgetState(#ProgressBar_0, i)
        ; Incrémente i
        i = i + 1
      EndIf
      ; Remise à zéro de varaibles globales.
      crack = 0
      warez = 0
      gamez = 0
      p2p = 0
      sexe = 0
      ignored = 0
      ; Change de fichier.
      UseFile(1)
      ; Et lit le répertoire suivant.
      NextD$ = ReadString()
      ; Pause de 1 milliseconde.
      Delay(1)
    Wend
    ; Si la variable globale ToUnzip est supérieure à zéro.
    If ToUnzip > 0
      ; Boucle de 1 à ToUnzip.
      For k = 1 To ToUnzip
        ; Label Debut, qui permet de reprendre la boucle.
        Debut :
        ; Affiche l'opération en cours.
        SetGadgetText(#Text_0, "Vérification des archives *.zip...")
        WriteLog("Vérification des archives *.zip...", 2)
        ; Remet la liste des archives au début.
        ResetList(Archives())
        ; Prend l'entrée suivante dans la liste.
        NextElement(Archives())
        ; Tente d'ouvrir l'archive.
        Ouvert = ZipOpen(Archives()\directory+Archives()\file, #Zip_DefaultOptions)
        ; Et l'affiche.
        AddGadgetItem(#Listview_0, -1, Archives()\directory+Archives()\file)
        ; Si l'archive est ouverte.
        If Ouvert = #ZIP_OK
          ; Fait avancer la barre de progression.
          SetGadgetState(#ProgressBar_0, nbdirectories-1)
          ; Cherche le nombre de fichiers.
          NbFiles = ZipGetFileCount()
          ; Si ce nombre est nul.
          If NbFiles = 0
            ; Informe.
            WriteLog("L'archive est vide !", 2)
            ; Supprime l'archive de la liste.
            DeleteElement(Archives())
            ; Et passe à la suivante.
            Goto Debut
          EndIf
          ; Créé le répertoire temporaire.
          CreateDirectory("temp\")
          ; Cherche le premier fichier (Archive First File).
          AFFile$ = ZipFindFirstFile()
          ; Le séléctionne.
          ZipSelectFile(1)
          ; Et l'extrait dans le dossier temporaire.
          Extract = ZipExtractFile("temp\", 1)
          ; Boucle d'extraction.
          For i = 2 To NbFiles
            ; Séléctionne le fichier précédent.
            ZipSelectFile(i-1)
            ; Cherche le fichier suivant.
            AFile$ = ZipFindNextFile()
            ; Le séléctionne.
            ZipSelectFile(i)
            ; Et l'extrait dans le dossier temporaire.
            Extract = ZipExtractFile("temp\", i)
            ; Attend une milliseconde.
            Delay(1)
          Next i
          ; Examine les fichiers du répertoire temporaire.
          Result = ExamineFDirectory(3, "temp\", 3)
          ; Si result vaut 2, des fichiers illégaux ont été trouvés.
          If Result = 2
            ; Ajoute l'archive dans la liste des fichiers 'sensibles'.
            AddElement(Infected())
            ; Met son nom.
            Infected()\file = Archives()\file
            ; Met son répertoire.
            Infected()\directory = Archives()\directory
            ; Incrémente la variable globale Tocheck.
            Tocheck = Tocheck + 1
          EndIf
          ; Supprime le répertoire temporaire.
          DeleteDirectory("temp\", "*.*", #PB_FileSystem_Recursive | #PB_FileSystem_Force)    
        ; Si l'ouverture a échouée.
        Else
          ; L'affiche.
          WriteLog("Impossible d'ouvrir l'archive !", 2)
        EndIf
        ; Supprime l'archive de la liste.
        DeleteElement(Archives())
        ; Attend une milliseconde.
        Delay(1)
      Next k
    EndIf
    ; Si la variable globale Tocheck est supérieure à zéro.
    If Tocheck > 0
      ; Avance
      SetGadgetState(#ProgressBar_0, nbdirectories)
      ; Boucle de 1 à Tocheck.
      For k = 1 To Tocheck
        ; Affiche l'opération en cours.
        SetGadgetText(#Text_0, "Nettoyage et suppression des fichiers...")
        AddGadgetItem(#Listview_0, -1, "Nettoyage et suppression des fichiers...")
        ; Supprime le texte des fichiers.
        SetGadgetText(#Text_1, "")
        ; Remet la liste des fichier 'sensibles' au début.
        ResetList(Infected())
        ; Ouvre la fenêtre 'd'execution'
        Open_Window_1()
        ; Prend l'entrée suivante dans la liste.
        NextElement(Infected())
        ; Et l'affiche dans la fenêtre.
        SetGadgetText(#Fichier, Infected()\file)
        ; Mise à zéro de suite.
        Suite = 0
        ; Boucle pour la fenêtre.
        Repeat 
          ; Attend un évenement.
          Event = WaitWindowEvent()
          ; S'il vient d'un gagdet.
          If Event = #PB_EventGadget
            ; Cherche l'ID du gadget.
            GadgetID = EventGadgetID()
            ; Si le gadget est le bouton 'supprimer'.
            If GadgetID = #FDelete
              ; Suppression du fichier sur le disque.
              DeleteFile(Infected()\directory+Infected()\file)
              ; Information.
              WriteLog("Fichier "+file$+" supprimé avec succès !", 2)
              ; Mise à 1 de suite.
              Suite = 1
            ; Si c'est le bouton 'nettoyer'.
            ElseIf GadgetID = #Clear
              ; Nettoie le fichier.
              ClearFile(Infected()\directory+Infected()\file)
              ; Mise à 1 de suite.
              Suite = 1
            ; Si c'est le bouton 'rien'.
            ElseIf GadgetID = #Rien
              ; Mise à 1 de suite.
              Suite = 1
            EndIf
          EndIf
        ; Fin de la boucle si Suite égale 1
        Until Suite = 1
        ; Supprime le fichier en cours de la liste.
        DeleteElement(Infected())
      Next k
      ; Mise à zéro de Tocheck.
      Tocheck = 0
    EndIf
    ; Réactive le gadget.
    DisableGadget(#Button_1, 0)
    ; Enlève le texte des zone de texte.
    SetGadgetText(#Text_0, "")
    SetGadgetText(#Text_1, "")
    ; Remet la barre de progression à zéro.
    SetGadgetState(#ProgressBar_0, 0)
  ; Sinon, informe de la non lecture.
  Else
    AddGadgetItem(#Listview_0, -1, "Impossible de lire le fichier de configuration !")
  EndIf

EndProcedure

Procedure Open_Window_0() ; Ouvre la fenêtre principale

  If OpenWindow(#Window_0, 297, 133, 350, 489,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Vérificateur de fichiers")
    If CreateGadgetList(WindowID())
      ProgressBarGadget(#ProgressBar_0, 20, 30, 310, 30, 0, nbdirectories)
      TextGadget(#Text_0, 20, 10, 310, 20, "")
      TextGadget(#Text_1, 20, 60, 310, 20, "")
      ListViewGadget(#Listview_0, 20, 80, 310, 370)
      ButtonGadget(#Button_1, 20, 460, 150, 20, "Vérifier")
      ButtonGadget(#Button_2, 180, 460, 150, 20, "Quitter")
      
    EndIf
  EndIf
  
EndProcedure
Quand je disais c'est pédagogique ;) On y apprend la manipluation des fichier zip ;).
@cookie : la LEN ne se préocupe pas des fichiers musicaux (encore qui lit lit la ligue et autres et qui y croit). Elle se préocupe de tous ce qui est illégal. Nulpart il n'y a écrit si tu Dl un film c'est ok, amis un CD de muisque t'es cuit. Nulpart, il ne faut pas croire tout ce qui est dit sur forum est autres (surtout de ceux qui clament haut et fort être avocats). Je ne peux pas tester leur illégalité :(. La c'est clair que ca n'aide pas. De plus cette loi ne m'inquiete pas. Je l'attendais depuis très longtemps. Ya juste la partie sur les hébergeurs qui me dérange un poil.
En plus tu confond les torchons et les serviettes. Ton article parle de la LIL et non la LEN qui sont deux lois bien différentes.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Pouir le support des rar, il existe la DLL unrar.dll
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message par cookie »

encore qui lit lit la ligue et autres et qui y croit
si tu Dl un film c'est ok, amis un CD de muisque t'es cuit

@heis: tu peux traduire? :)
Cookie
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Oliv a écrit :Pouir le support des rar, il existe la DLL unrar.dll
Reagrde mon précédent code, j'avais déjà essayé mais :( C'est pô évident...
cookie a écrit :
encore qui lit lit la ligue et autres et qui y croit
si tu Dl un film c'est ok, amis un CD de muisque t'es cuit
@heis: tu peux traduire? :)
Je "traduis" : Première phrase : Je dis que tu fais parti des personnes qui lisent la ligue et croient dure comme fer ce qu'elle raconte..
Deuxième phrase : c'était de l'ironie ou je disais que si tu téléchrage un film tu n'a rien mais si tu télécharge un morceau de musique tu as des peines énormes. Ce qui est bien évidement faux.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message par cookie »

Premièrement, je ne lis pas la ligue, j'écoute simplement la radio (où le président du SNEP s'exprime régulièrement et pas plus tard que cette semaine) et je lis des journaux subversifs comme par exemple 'Le Monde'. De plus je te rappelle que le téléchargement n'est pas illégal à partir du moment où l'oeuvre a été déjà diffusée (radio, télé...) mais c'est la mise à disposition qui l'est (les adresses IP des contrevenants qui seront transmises à la justice sont celles de ceux qui auront 'mis à disposition' des oeuvres -partagé en langage p2p- et pas téléchargé)


Deuxièmement, décompresse... l'agressivité n'a jamais aidé la discussion :wink:
Cookie
Répondre