...........

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: index.php_detector

Message par venom »

Merci pour ton code Dobro,
je n'ai pas encore tester car je n'en ai pas l'utilité mais ce code peut être intéressant. Je le garde sous le coude merci.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: index.php_detector

Message par Backup »

a la base ce code permet de lister le repertoire du FTP pour y trouver un fichier précis

puis d'envoyer un fichier du disque dur local vers le FTP

rien n'empêche de le modifier un petit peu pour par exemple
inclure dans vos programme un verificateur de bonne version... :)

exemple dans un programme qui s'apelerio "toto.exe"
une procedure qui va donc verifier la presence sur le FTP d'un fichier "toto_version_xxxx.txt"
ou le xxx serai le numero de la version en cours du prg toto.exe

celui_ci déterminerai alors s'il est a jour ou pas ....
et s'il ne l'est pas , d'affficher un message requester qui signale a l'utilisateur
qu'une version plus recente est resente sur le site en telechargement

certains ici on deja fait ce genre de chose (Ar-s,Gnozal,etc ...) :)

dans ce petit exemple on a quasi tout ce qu'il nous faut pour effectuer ce genre de chose :)

plus besoin de la partie timer :)
plus besoin de la partie upload de fichier :)

un truc dans le genre :
[REEDIT]

Attention , n'utilisez pas ce code tel quel pour vos applications
en effet le mot de pass et votre login apparaissent en clair dans votre prg
utilisez , la librairie Cipher pour coder votre mot de pass
mais le mieux reste de lire le fichier textxxxx.txt qui se trouve sur votre espace
en passant par le web gadget et non pas par le protocole FTP comme indiqué ici
:)


[/REEDIT]


initnetwork ()
Procedure test_file_version()
     Enumeration
         #Ftp
     EndEnumeration
     ; attention le pass et le login sont an clair dans le prg, il faut les coder
     ; ou ne pas passer par FTP mais par http:
    
    site$= "ftpperso.free.fr"
    login$= "******"
    pass$= "*****"
; by Dobro
     If openftp (0, site$, login$, pass$) ; ouvre le ftp
         If examineftpdirectory ( #Ftp ) ; regarde chaque fichier
             While nextftpdirectoryentry ( #Ftp ) ; tant qu'on a pas tou vu
                 Debug ftpdirectoryentryname ( #Ftp ) ; affiche le contenu de l'arbo
                 If ftpdirectoryentryname ( #Ftp )= "toto_123.txt" ; si le fichier "toto_123.txt" est present
                     ; ici on compare le xxx a la version actuel du prg, et si inferieur
                     messagerequester ( "information" , "une version plus recente du prg est présente sur le site" ) ; on previens le gus !
                 EndIf
             Wend
         EndIf
     Else
         Debug "Can't connect to ftp.free.fr"
     EndIf
closeftp ( #Ftp )
EndProcedure

test_file_version()
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Re: index.php_detector

Message par gansta93 »

Je suis en train de refaire un peu le code pour utiliser les timers PB, j'arrive pas à dormir :D
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: index.php_detector

Message par venom »

@Dobro oui c'est vrai cela peut aussi servir pour voir les versions pas bête. Ont lie un fichier texte et si le chiffre est plus grand un messagerequester s'ouvre avec un lien :P :wink: Mais la lib etna ne fait pas cela ? Mais bon comme ça sa évite d'utiliser une lib externe :)

@gansta93 oublie pas de dormir quand même un peut :wink: ton corp lui a un timer :lol: :wink:








@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: index.php_detector

Message par Backup »

@venom
voila ! :)

ps je viens d'editer mon code a ce propos dans mon dernier message :)

allez bonne nuit les enfants :lol: (enfin pour ceux qui peuvent dormir !! :lol:)
gansta93 a écrit :Je suis en train de refaire un peu le code pour utiliser les timers PB, j'arrive pas à dormir :D
ça m'evitera bien de le faire comme ça :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: index.php_detector

Message par Ar-S »

Ma méthode diffère un peu dans le sens ou je lis un fichier .txt comportant le numéro de la dernière version.
L'avantage étant que pour lire le contenu du txt, y'a pas besoin de mettre son mot de passe ftp dans son exe.
Question sécurité ça craint un peu je trouve.
~~~~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
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: index.php_detector

Message par venom »

ah oui c'est vrai sa Ar-S, je ne l'avais même pas vu dans ce sens là :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Re: index.php_detector

Message par gansta93 »

Ar-S a écrit :Ma méthode diffère un peu dans le sens ou je lis un fichier .txt comportant le numéro de la dernière version.
L'avantage étant que pour lire le contenu du txt, y'a pas besoin de mettre son mot de passe ftp dans son exe.
Question sécurité ça craint un peu je trouve.
Dans ce cas-là il y a la solution du fichier de préférences.

Ca n'est pas dans le code que voici, mais au moins, il est maintenant portable. ;)

Code : Tout sélectionner

Declare test_file_index(site$, login$, pass$, index$) ; procedure qui regarde si la taille de index.php a changé

; attention le pass et le login sont an clair dans le prg, il faut les coder
 ; ou ne pas passer par FTP mais par http:

site$= "ftpperso.free.fr" ; mettre ici votre adresse de FTP (ici c'est pour Free.fr)
login$= "*********" ; mettre ici votre login
pass$= "*******" ; mettre ici votre pass FTP
index$= "Z:\index.php" ; mon index.php se trouve ici sur mon disque dur

If Not InitNetwork ()
  MessageRequester("Alerte", "Problème réseau !!!")
  End
EndIf

Enumeration
  #Ftp
  #Window
  #Timer
EndEnumeration
OpenWindow ( #Window ,100,100,1,1, "test index" , #PB_Window_SystemMenu )
AddWindowTimer(#Window, #Timer, 60000) ; envoie un evenement toutes les minutes
Repeat
  Evenement= WaitWindowEvent ()
  If Evenement = #PB_Event_Timer And EventTimer() = #Timer
    test_file_index(site$, login$, pass$, index$)
  EndIf
Until Evenement = #PB_Event_CloseWindow
End

Procedure test_file_index(site$, login$, pass$, index$)
  ; by Dobro
  trouve = #False ; Pour en suite vérifier si le fichier a bien été trouvé
  If FileSize(index$) > 0 ; Par sécurité, histoire de ne pas supprimer bêtement index.php comme je l'ai fais ^^
    If OpenFTP (0, site$, login$, pass$)
      If ExamineFTPDirectory ( #Ftp )
        While NextFTPDirectoryEntry ( #Ftp )
          If FTPDirectoryEntryName ( #Ftp )= "index.php"
            trouve = #True
            ;	taille=FTPDirectoryEntrySize(#Ftp) ; a faire 1 fois pour connaitre la taille de index.php
            ;	Debug "la taille de index.php est de :"+ Str(taille)
            If FTPDirectoryEntrySize ( #Ftp )<>FileSize(index$)
              Beep_ (330,100)
              Beep_ (440,100)
              Beep_ (220,100)
              MessageRequester ( "Alerte" , "le fichier index a été touché !! " )
              DeleteFTPFile ( #Ftp , "index.php" )
              If SendFTPFile ( #Ftp , index$ , "index.php" ) <>0 ; envoi le fichier index.php d'origine
                MessageRequester ( "Alerte" , "le fichier index a été corrigé !! " )
              Else
                MessageRequester ( "Alerte" , "probleme pas pu envoyer le fichier !! " )
              EndIf
              
            Else
              ; MessageRequester("Alerte","tout va bien!! ")
              Debug "OK"
            EndIf
            Break ; pas besoin d'aller plus loins
          EndIf
        Wend
        If trouve = #False
          Beep_ (330,100)
          Beep_ (440,100)
          Beep_ (220,100)
          MessageRequester ( "Alerte" , "le fichier index a été supprimé !! " )
          If SendFTPFile ( #Ftp , index$ , "index.php" ) <>0 ; envoi le fichier index.php d'origine
            MessageRequester ( "Alerte" , "le fichier index a été envoyé !! " )
          Else
            MessageRequester ( "Alerte" , "probleme pas pu envoyer le fichier et celui-ci a été supprimé !! " )
          EndIf
        EndIf
      Else
        Debug "Erreur liste répertoire"
      EndIf
    Else
      Debug "Can't connect to ftp.free.fr"
    EndIf
    If IsFTP(#Ftp) ; Au moins on est sûr
      CloseFTP ( #Ftp )
    EndIf
  Else
    MessageRequester("Alerte", "Le fichier " + index$ + " est introuvable !")
  EndIf
EndProcedure
En gros, les variables ne sont plus globales puisqu'on les passe en suite dans la procédure test_file_index lorsque l'évènement Timer est récupéré, et j'ai utilisé les timers PB, comme promis.
J'ai ajouté quelques vérifications comme l'existence du fichier original, si le fichier index.php n'a pas été supprimé comme ça on l'envoi à nouveau, dès que index.php est trouvé on arrête la boucle qui liste le répertoire... j'en oubli peut-être mais bon en tout cas ça marche ^^.
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: index.php_detector

Message par Warkering »

Merci Dobro pour l'explication! J'avais la tête un peu dans les nuages de pas avoir pensé à Google lorsque j'ai écris ça apparemment! :mrgreen:

Ce que je trouve étrange, c'est que il y a un grand nombre de site de PureBasic de piraté on dirait. C'est comme si il y avait un membre du forum qui s'amusait à faire pomper les membres.

Et pour ton version.php, ça ne doit être que de la vantardise de la part du trou du'c...! Du genre "Ouais! Man! Regarde ce que je t'ai pomper! Rhognogno!".
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: index.php_detector

Message par flaith »

Dobro a écrit :a la racine !

moi je l'avais !
et c'etait un veritable tableau de bord !!
en plus d'une animation boucle du logo du hacker de gauche a droite

les menus permettais d'acceder a pleins d'infos
a commencer par l'arborescence complete du site
password, parametre de la base de données etc ....

pour trouver ce fichier corrompu
j'ai testé un par un tout les fichier *.php
se trouvant a la racine du site

avec mozilla tu te met sur l'adresse de ton site , puis tu remplace le "News.php"
par le nom des autres php de la racine....
si tu tombe sur ce que je viens de te dire
(peut etre chez toi un autre fichier que "version.php")
ben efface le vite

pour ma part ça devrai etre bon maintenant :)

n'oublie pas de te mettre a jour avec la version
Version 0.7.22
j'avais tout de suite mis à jour en 0.7.22, il a donc du être écrasé, merci Dobro :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: index.php_detector

Message par Backup »

Ar-S a écrit :Ma méthode diffère un peu dans le sens ou je lis un fichier .txt comportant le numéro de la dernière version.
L'avantage étant que pour lire le contenu du txt, y'a pas besoin de mettre son mot de passe ftp dans son exe.
Question sécurité ça craint un peu je trouve.
oui ! tu as parfaitement raison !! :oops:

le mieux est de passer par le "webgadget" pour lire le fichier txt

comme ceci par exemple :

ce prg lit un fichier txt ("sph.txt")
et affiche sont contenu dans un editeur


     ;/ Author : Pille
; Proxy like this : "192.168.0.1:8080"
Global Site.s= "http://michel.dobro.free.fr/bidouilles/SPH.txt"
;Global Site.s="http://michel.dobro.free.fr/index.htm"


; toute la page web est dans "Url2Text(#Site)
; toute la page web est dans "Url2Text(#Site)
; toute la page web est dans "Url2Text(#Site)
; toute la page web est dans "Url2Text(#Site)
; toute la page web est dans "Url2Text(#Site)


ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
                 ; 1 INTERNET_OPEN_TYPE_DIRECT Resolves all host names locally.
                 ; 0 INTERNET_OPEN_TYPE_PRECONFIG Retrieves the proxy Or direct configuration from the registry.
                 ; 4 INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY Retrieves the proxy Or direct configuration from the registry And prevents the use of a startup Microsoft JScript Or Internet Setup (INS) file.
                 ; 3 INTERNET_OPEN_TYPE_PROXY Passes requests To the proxy unless a proxy bypass list is supplied And the name To be resolved bypasses the proxy. In this Case, the function uses INTERNET_OPEN_TYPE_DIRECT.
                
                isLoop.b=1
                INET_RELOAD.l = $80000000
                hInet.l=0
                hURL.l=0
                Bytes.l=0
                Buffer.s= space (2048 )
                RES.s= ""
                
                
                hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
                hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
                
                 Repeat
                                 InternetReadFile_ (hURL,@Buffer, len (Buffer), @Bytes)
                                 If Bytes = 0
                                                isLoop=0
                                 Else
                                                RES = RES + left (Buffer, Bytes)
                                 EndIf
                 Until isLoop=0
                
                 InternetCloseHandle_ (hURL)
                 InternetCloseHandle_ (hInet)
                 ProcedureReturn RES
EndProcedure

ProcedureDLL.s Url2Text(Url.s)
                 ProcedureReturn Url2Text2(Url,1, "" )
EndProcedure


;/ Test

openwindow (0,10,10,800,600, "resultat" , #PB_Window_SystemMenu )
CreateGadgetList ( windowid (0))
editorgadget (2, 10, 10, 800,580)
addgadgetitem (2, -1, Url2Text(Site.s))
Repeat
                event= windowevent ()
                
Until event = #PB_Event_CloseWindow




pour cette raison , je viens d'editer mon message precedent en precisant ce fait :)

Merci :)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Re: index.php_detector

Message par cederavic »

Il ne serait pas mieux de comparer les checksum md5 des fichiers plutot que leur taille?
Deux fichiers completement differents peuvent faire exactement la meme taille 8)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: index.php_detector

Message par Ar-S »

Salut gansta93,

Je te déconseilles d'utiliser les _beep()
Préfère leur la lecture d'un petit fichiers son.
En effet, toutes les tours PC n'ont pas le bip de branchés.
Parfois le branchement sur la carte mère est trop éloigné du câble en façade contenant le petit haut parleur (même si ça devient de plus en plus rare).
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: index.php_detector

Message par Backup »

Ar-S a écrit :Salut gansta93,

Je te déconseilles d'utiliser les _beep()
Préfère leur la lecture d'un petit fichiers son.
En effet, toutes les tours PC n'ont pas le bip de branchés.
Parfois le branchement sur la carte mère est trop éloigné du câble en façade contenant le petit haut parleur (même si ça devient de plus en plus rare).

ces beep_() viennent de mon code.. pas du siens :)

pas grave puisque le beep amène de toute façon un requester....
(a moins que gangsta93 ne les aient retirés .. je vais voir son code :lol: )
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Re: index.php_detector

Message par gansta93 »

Ar-S a écrit :Salut gansta93,

Je te déconseilles d'utiliser les _beep()
Préfère leur la lecture d'un petit fichiers son.
En effet, toutes les tours PC n'ont pas le bip de branchés.
Parfois le branchement sur la carte mère est trop éloigné du câble en façade contenant le petit haut parleur (même si ça devient de plus en plus rare).
Tu as raison... en fait dans ce cas-là le mieux est de ne rien lire dutout puisqu'un requester est affiché. Mais... j'aime bien les beep, ça m'rappel des moments où j'ai cassé les oreilles de toute une classe, ou des moments où d'autres ont fait tourner un prof d'info/bureautique en bourique ^^.

Edit : Dobro m'a pris de vitesse :D
Répondre