IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comment ajouter une nouvelle Fonction (-a) à mon Algorithm pour inverser l'affichage des données ?


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut Comment ajouter une nouvelle Fonction (-a) à mon Algorithm pour inverser l'affichage des données ?
    Bonjour.

    Le résultat normal fournit par lorsqu'on exécute le Script avec la commande -k (script.py -d clé.txt -o trouvé.txt -k) sachant que le fichier clé.txt contient un ou plusieurs
    Private Key qui est chargé avec la commande -d et -k pour trouver leur Private Key soit la même Clé
    Privée disponible au départ dans le Fichier clé.txt puis enregistré avec la commande -o :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    2017-11-16 12:14:09,122 INFO   line 09   dict word, received, wallet address, private address, current balance 
    2017-11-16 12:14:23,125 INFO   line 1    9749bahhjkk21421,02,1K565G8,9749bahhjkk21421,0245
    --------------------------------------------------------------------------------------------------------------------
    Code concernant la Commande -k et la nouvelle Commande -a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    parser.add_argument('-k', action='store_true', dest='is_private_key', default=False,
                            help='treat each word as a hex or wif encoded private key')
     
    parser.add_argument('-a', action='store_true', dest='is_public_key', default=False,
                            help='Found a Private Key throught a Public Address')

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class Wallet:
        def __init__(self, passphrase, is_private_key = False):
            self.passphrase = passphrase
            self.address = None
            self.public_key = None
            self.private_key = None
            try:
                if is_private_key:
                    keypair = ChegKeypair.from_private_key(self.passphrase.encode('ascii'))
     
    #Comment ajouter la nouvelle condition de "is_public_key" ????
    #			else if is_public_key:
    #	                keypair = ??????????
     
                else:
                    keypair = ChegKeypair.from_passphrase(self.passphrase)
                self.address = keypair.address()
                self.public_key = keypair.public_key()
                self.private_key = keypair.private_key()
            except Exception as e:
                logging.warning(u"Failed to generate keypair for passphrase '{}'. Error: {}".format(passphrase, e.args))
                raise

    En gros, comment inverser la Commande -k à travers une nouvelle Commande -a pour qu'elle (pour que la nouvelle commande -a)
    trouve la Clé Privée correspondante à partir des Clés Publiques (disponible dans le Fichier clé.txt chargé avec la Commande -d)
    contrairement à la Commande -k qui trouvait les Clés Privée à partir des mêmes Clés Privées chargé avec la Commande -d dans le Fichier clé.txt ???

    Comment redéfinir la nouvelle condition visible à la Ligne 12 et 13 du Code (partie en commentaires que je viens d'ajouter moi-même)
    ci-dessus pour que "keypair" corresponde à la nouvelle commande -a qui doit afficher (trouver) les clés Privées à partir des clés publiques ???

    Sans oublier qu'il me faudra réécrire le passage ci-dessous pour qu'il prenne aussi
    en compte l'argument "is_public_key" qui correspond à ma Nouvelle Commande -a ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     # Create wallet
            try:
                wallet = Wallet(dictionary_word, args.is_private_key)
            except Exception as e:
                continue
    Et enfin, Comment définir une nouvelle variable "wallet_privatekey" pour que celle-ci soit égale à la "wallet.private_key (soit la Private Key)"
    de la "wallet.address" se trouvant dans le fichier clé.txt ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		# Get Private Key Address	
    		wallet_privatekey = ????????
    Afin que le résultat final soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    2017-11-16 12:14:09,122 INFO   line 09   dict word, received, wallet address, private address, current balance, Public Private_Key
    2017-11-16 12:14:23,125 INFO   line 1  1K565G8, 02, 1K565G8, 9749bahhjkk21421, 0245, ???

    Contrairement au résultat de la commande -k qui fournissait à la Valeur du "dict word" la même valeur de la "private address"
    (9749bahhjkk21421 sur l'exempe ci-dessus) mais "1K565G8" pour la nouvelle commande -a.

    pour que les ??? qui devait normalement correspondre à "Public Private_Key" soit forcément aussi égal à "9749bahhjkk21421" lorsqu'on exécute le Script avec la Nouvelle Commande -a.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 310
    Points : 36 812
    Points
    36 812
    Par défaut
    Salut,

    Il est quasi certain que vous avez récupéré ce code ici. C'est pas interdit et c'est même recommandé pour ne pas ré-inventer ce que d'autres ont déjà fait. Cependant, il faut avoir un niveau en programmation aussi bon que l'auteur pour pouvoir se lancer dans l'ajout de nouvelles fonctionnalités i.e. "faire sien" du code et c'est autre chose que pomper un truc sur le net.

    Et si on veut bien vous aider à apprendre, mais pas faire votre boulot (apprendre, écrire du code) d'autant que c'est une bibliothèque de piratage (et çà devient limite délictueux)!

    - W

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut Comment modifier (remplacer) la Fonction de mon Script en cours de développement ?
    Bonjour.

    Pour commencer, j'essaie de modifier un Script Python pour l'adapter à mon souhait.
    Voici mes Codes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    class Chegkeypr():
     
     @classmethod
        def from_prevo(cls, prevo=None):
            return cls(prevo)
     
    	def prevo(self, format='hex'):
            if format == 'bin':
                return self._bin_prevo()
            elif format == 'hex':
                return binascii.hexlify(self._bin_prevo())
            elif format == 'wif' or format == 'b58check':
                return b58check_encode(self._bin_prevo(),
                    version_byte=self.version_byte('prevo'))
            else:
                raise ValueError(_errors["INVALID_PREVO_FORMAT"])
     
            @classmethod
        def from_pp(cls, pp=None):
            """ Create keypr from a pp input."""
            if not pp:
                # run a rejection sampling algorithm to ensure the private key is
                # less than the curve order
                while True:
                    pp = create_pp(bits_of_entropy=160)
                    hex_private_key = hashlib.sha256(pp).hexdigest()
                    if int(hex_private_key, 16) < cls._curve.order:
                        break
            else:
                hex_private_key = hashlib.sha256(pp).hexdigest()
                if not (int(hex_private_key, 16) < cls._curve.order):
                    raise ValueError(_errors["PHRASE_YIELDS_INVALID_EXPONENT"])
     
            keypr = cls(hex_private_key)
            keypr._pp = pp
            return keypr
     
        def pleb(self, format='hex'):
            if format == 'bin':
                return self._bin_pleb()
            elif format == 'hex':
                return binascii.hexlify(self._bin_pleb())
            else:
                raise ValueError(_errors["INVALID_PLEB_FORMAT"])
     
        def pp(self):
            if hasattr(self, '_pp'):
                return self._pp
            else:
                raise Exception(_errors["INVALID"])
    Fichier port.py :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import Chegkeypr
     
        parser.add_argument('-a', action='saved', dest='is_prevo', default=False,
                            help='Found....')
        args = parser.parse_args()
     
    class Port:
        def __init__(self, pp, is_prevo = False):
            self.pp = pp
            self.address = None
            self.pleb_key = None
            self.prevo_key = None
    		try:
                if is_prevo:
    			    keypr = Chegkeypr.from_prevo(self.pp.encode('ascii'))
                else:
                    keypr = Chegkeypr.from_pp(self.pp)			
     
            # Create port
            try:
                port = Port(dictionary_word, args.is_prevo)
            except Exception as e:
                continue
    Le code ci-dessus (Fichier port.py) permet normalement de créer des keyprs à partir de "prevo_key" et de "pp" (avec je pense les fonction "from_prevo" et "from_pp" de la classe Chegkeypr).

    Mon but est de permettre à la commande -a de de créer un keypr à partir de "pleb_key" au lieu de "prevo_key" comme on le voit sur le Code ci-dessus.

    1- Comment donc créer mon keypr à partir d'un "pleb_key" sachant que la seule fonction qui concerne "pleb_key" dans la Classe "Chegkeypr" n'est pas précédé de "from_" ???

    Dois faire simplement simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # Dois-je remplacer tout simplement la fonction "from_prevo" par "pleb" faisant appel 
    # à la fonction concernée depuis la classe "Chegkeypr" ???
    	try:
                if is_prevo:
    	    keypr = Chegkeypr.pleb(self.pp.encode('ascii'))
    ???

    2- Ma deuxième préoccupation est de savoir ce que signifie littéralement la ligne de la variable "keypr = Chegkeypr.from_prevo(self.pp.encode('ascii'))" ???

    Merci d'avance.

Discussions similaires

  1. [DW 8 & antérieurs] Comment ajouter de nouvelles pages a mon site
    Par Mapache dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 15/06/2011, 17h21
  2. Réponses: 0
    Dernier message: 09/11/2010, 11h30
  3. Comment ajouter une nouvelle Barre perso.. ?
    Par Angelico dans le forum Firefox
    Réponses: 2
    Dernier message: 06/09/2007, 07h57
  4. [VS2005] Comment ajouter une nouvelle tache ?
    Par scifire dans le forum Visual Studio
    Réponses: 2
    Dernier message: 18/08/2006, 16h13
  5. Réponses: 2
    Dernier message: 06/07/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo