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


  • ANNUAIRE
  • [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    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] Faire une omelette!
19-03-2014, 14h27
Message : #1
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
[Python] Faire une omelette!
Hello,

Alors, comment faire une omelette en python ? Vous ne savez pas ? Ben c'est simple, utilisez des Egg ! (Oui, j'étais inspiré pour le jeu de mot =))
Je vais vous présenter vite fait le concept, parce que j'ai découvert ça hier, et j'aime bien l'idée =)

Un Egg en python, en fait c'est a peu près l'équivalent d'une archive .jar en java. Et plus concrètement, il s'agit d'une archive ZIP.

Pour l'exemple, voici un peu ce que l'on va packer :

Code :
$> tree
.
├── bar
│   ├── __init__.py
│   └── module.py
├── foo
│   └── __init__.py
└─── __main__.py

On peut voir ici que mon Egg contiendra deux packages : foo et bar qui eux contiennent du code python. On a aussi le __main__.py qui lui sera appelé au lancement de notre egg.

le code de ces fichiers:

./__main__.py
Code PYTHON :

#!/usr/bin/env python

import bar
import bar.module
from foo import Bar

if __name__ == "__main__" :

    a = Bar()
    b = bar.Foo()
    string = bar.module.DeadBeef().cipher("toto", 1)
    print("{}".format(string))
 


./bar/__init__.py
Code PYTHON :

class Foo :

    def __init__(self) :
        print("I'm foo")
 

Deux petites remarques ici :
- Oui, ma classe Foo est bien dans le repertoire bar ; pourquoi? Parce que j'avais envie =)
- J'utilise du python 3.4 (c'est tout beau tout neuf :D) Et du coup, pas besoin de preciser qu'une classe hérite de object quand on la déclare! C'est cool nan? Moi je trouve ça plus propre.

./bar/module.py
Code PYTHON :

class DeadBeef :

    def __init__(self) :
        pass

    def cipher(self, a : str, key : int) -> str :
        key = key & 0xff
        return "".join([chr(ord(x) ^ key) for x in a])
 

La fonction cipher, je vous laisse deviner ce qu'elle fait, c'est pas ce qui nous intéresse ici.

./foo/__init__.py
Code PYTHON :

class Bar :

    def __init__(self) :
        self.bar()

    def bar(self) :
        print("Hello World")
 


Voilà donc mes fichiers d'exemple. A ce stade, on peut lancer notre programme python tout simplement, soi en faisant:
Code BASH :

chmod +x ./__main__.py
./__main__.py
 

soit :
Code BASH :

python __main__.py
 


Je vous laisse tester si ça vous amuse, mais globalement, jusque là, rien de nouveau. Python va dans ce cas générer des dossiers __pycache__ dans les deux sous répertoires. Vous pouvez les supprimer avant de passer à la suite.

Maintenant, passons à l'omelette! =)
Pour faire notre Egg, rien de bien compliqué, on va tout simplement faire un (dans le repertoire courant) :
Code BASH :

zip -r egg_name ./
 


Avec ça, on obtiens donc un egg_name.zip ; que vous pouvez (ou non) renommer en egg_name.egg.

Dans tous les cas, vous pouvez déjà lancer cet Edd en faisant tout simplement :
Code BASH :

python egg_name.egg
 


Voilà =) Je trouve ce concept sympa, je sais pas de quand ça date, mais je connaissais pas, et franchement c'est carrément plus pratique pour envoyer un programme python à quelqu'un. De plus, il est possible de mettre des fichiers de LICENSE, README, CHANGELOG, etc dans l'Egg afin de faire un truc bien :p On peut apparement également y mettre un fichier setup.py qui permettrait d'installer l'egg directement :)
Bref, je suis fan! :p
+1 (5) -1 (0) Répondre
19-03-2014, 15h05
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [Python] Faire une omelette!
nice je connaissais pas, mais c'est effectivement assez pratique pour peu qu'on ait un projet suffisamment volumineux/à plusieurs fichiers & modules, et c'est simple à mettre en œuvre

de ce que je lis les eggs permettent aussi notamment de spécifier via des metadatas les dépendances du package, y compris de
fournir des urls en vue de satisfaire les dépendances éventuelles, la hiérarchisation et la catégorisation des différents fichiers (quel module prend le pas sur les autres, quel point d'entrée, quelles sont les ressources, quels sont les scripts etc.) pour les setuptools, easy-install etc. et y compris le chiffrement via AES manifestement

plus d'infos sur le format
+1 (1) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 1,621 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 241 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 352 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 242 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 766 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 520 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 246 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 280 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 186 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 728 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