• STATISTIQUES
  • Il y a eu un total de 1 membres et 7339 visiteurs sur le site dans les dernières 24h pour un total de 7 340 personnes!


    Membres: 2 609
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    Challenges
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster

  • 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,610
Sujets : 72
Points: 466
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 1,179 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 214 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 276 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 164 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 548 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 366 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 263 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 216 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 164 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 494 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