• STATISTIQUES
  • Il y a eu un total de 0 membres et 28270 visiteurs sur le site dans les dernières 24h pour un total de 28 270 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accédÃ...
    Challenges
    [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumulÃ...
    Challenges
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Python] Modifier des fonctions pendant le programme
10-12-2012, 12h14
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
[Python] Modifier des fonctions pendant le programme
Bonjour à tous Smile
Je m'amuse de nouveau avec mon bot irc, mais ça commencer à me taper sur le système de devoir reload à chaque modif, j'aimerais donc pouvoir surcharger les fonctions dans le temps.
Je n'ai pas trouver de solution sur internet, alors j'ai commencer à bidouiller un script...

Code PYTHON :

    #/usr/bin/python python
    # -*- coding: utf-8 -*-
     
    #ceci est la technique classique d'inclusion
    #import lib
     
    print 'démarrage du programme'
     
    print "\t"+'Inclusion des librairies en cours...'
     
    import time
    import threading
    import os
     
    print "\t"+'Inclusion des librairies terminées.'
     
    def maj_simple():
        while True:
            print "\t"+'démarrage de la fonction de mise à jour simple'
     
            def test():
                    print '1'
            print 'Fonction test première déclaration'
            time.sleep(5)
            def test():
                print '2'
            print 'Fonction test deuxième déclaration'
            global test
            time.sleep(5)
     
    def maj_complexe():
        global lib
     
        while True:
            print 'mise à jour'
    #        if os.path.isfile('lib.pyc'):
     #          os.remove('lib.pyc')
            global lib
            del(lib)
            import lib as lib
            global lib
            time.sleep(5)
        lib.send_data()
     
    def boucle():
        global lib
        while True:
            test()
    #        lib.send_data()
            time.sleep(1)
     
    threading.Thread(None,maj_simple   ,None,(),{}).start()
    time.sleep(2)    
#    threading.Thread(None,maj_complexe   ,None,(),{}).start()
 #   time.sleep(2)
    threading.Thread(None,boucle,None,(),{}).start()
     
#    fichier = open("lib.py", "r")
#    toutesleslignes = fichier.readlines()
 #   print toutesleslignes
 #   function=eval("print 'envoi des données en ecours...'")
 #   function()
#    fichier.close()
     
 


Mon fichier lib.py
Code PYTHON :

#/usr/bin/python python
# -*- coding: utf-8 -*-
     
def send_data():
       print 'envoi des données en ecours...'
print "Inclusion du fichier lib.pdy"
 


Donc résultat c'est fonctionnel la fonction change bien, mais il faut qu'elle soit dans le fichier lanceur, donc c'est pas ce que je veut, je n'ai pas réussit à utiliser eval et del ne semble pas marcher...
Avez-vous une idée pour pouvoir faire ça ?
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
10-12-2012, 12h21
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [Python] Modifier des fonctions pendant le programme
Personnellement, je ne pense pas que tu puisses relancer le mainfile directement...

Pour ma part (ce que j'ai fait avec Canard_WC & ProjectBot) c'est un core qui se contente juste de gérer la connexion au serveur IRC, de recevoir les messages, les envoyer et de dispatch des évènements lorsqu'un message est reçu/envoyé/etc.

Toutes les features du bot se retrouvent donc dans des fichiers séparés, contenant une fonction module_init chargée d'enregistrer un callback pour les évènements à traiter, et une fonction module_unload qui va supprimer les callback enregistrés par module_init.

Ainsi module_init se retrouve appelé après le chargement du module, et module_unload appelé avant le déchargement du module (et je définis une liste de modules à charger au démarrage du bot) Wink
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
10-12-2012, 19h58
Message : #3
spin Hors ligne
Contributeur
*****



Messages : 325
Sujets : 15
Points: 38
Inscription : Nov 2011
RE: [Python] Modifier des fonctions pendant le programme
Il existe des techniques pour faire du hot swaping (modifier du code à chaud), si c'est ce que tu cherches à faire, et certains langage le permettent même nativement. Python n'a pas l'air d'en faire partie, néanmoins après une petit recherche j'ai trouvé des trucs éventuellement intéressants :

Un topic sur StackExchange où l'OP propose une solution : http://stackoverflow.com/questions/67512...ng-program (la dernière réponse peut aider je pense).
Un module Python pour gérer le hot swapping : http://pypi.python.org/pypi/hotswap/0.1
+1 (1) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 937 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 136 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 222 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 117 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 425 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 342 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 156 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 176 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 123 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 417 15-08-2014, 20h26
Dernier message: sakiir

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut