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:
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:
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:
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:
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:
1 2
| # Get Private Key Address
wallet_privatekey = ???????? |
Afin que le résultat final soit:
Code:
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.
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:
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:
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:
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.