Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. # Copyright (c) 2011, Ukigo
  4.  
  5. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  6. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  7. # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  8. # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  9. # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  10. # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  11. # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  12. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  13. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  14. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  15. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  16.  
  17.  
  18. usage = """ Usage : ./pbwhatkey your_passphrase your_salt number_of_iterations
  19.  
  20. Example : ./pbwhatkey +WindFall-Money*. Candy+] 777777 """
  21.  
  22.  
  23. from pbkdf2 import PBKDF2
  24. import os, sys, hashlib
  25. from hashlib import sha256
  26. import pywallet as pyw
  27. #from optparse import OptionParser
  28.  
  29. b58_digits = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
  30.  
  31. def base58_encode (n):
  32. l = []
  33. while n > 0:
  34. n, r = divmod (n, 58)
  35. l.insert (0, (b58_digits[r]))
  36. return ''.join (l)
  37.  
  38. def base58_decode (s):
  39. n = 0
  40. for ch in s:
  41. n *= 58
  42. digit = b58_digits.index (ch)
  43. n += digit
  44. return n
  45.  
  46. def dhash (s):
  47. return sha256(sha256(s).digest()).digest()
  48.  
  49. def convert_privkey_to_base58 (s):
  50. checksum = dhash ('\x80' + s)[:4]
  51. return base58_encode (
  52. int ('0x80' + (s + checksum).encode ('hex_codec'), 16)
  53. )
  54.  
  55. def main():
  56.  
  57. try:
  58. if sys.argv[1] in ("help", "-h", "-help","--help"):
  59. print " "
  60. print usage
  61. exit(0)
  62. if int(sys.argv[3]) < 60001:
  63. print " "
  64. print "Number of iterations must be > 60000 ( better use > 1'000'000 )"
  65. exit(0)
  66.  
  67. except IndexError:
  68. print " "
  69. print usage
  70. exit(0)
  71.  
  72. print " "
  73. print " Please wait. Generating keypair ..."
  74. salt = hashlib.sha512(sys.argv[2]).hexdigest()
  75. print " "
  76. print "Password was : ", sys.argv[1]
  77.  
  78. topsec = PBKDF2(sys.argv[1], salt, int(sys.argv[3])).hexread(16)
  79. print " ................................"
  80. print "Secret (hex) : ", topsec
  81.  
  82.  
  83.  
  84. print " "
  85.  
  86. #pyw.PrivKeyToSecret(privkey)
  87. secret = pyw.str_to_long(topsec)
  88. eckey = pyw.EC_KEY(secret)
  89. pub = pyw.GetPubKey(eckey)
  90. priv = pyw.GetPrivKey(eckey)
  91. priv_base58 = pyw.SecretToASecret(pyw.PrivKeyToSecret(priv))
  92. # sec_ver = pyw.GetSecret(eckey)
  93. # print sec_ver
  94. print "Private key for import : ", priv_base58
  95.  
  96. # print "Revert : ", pyw.ASecretToSecret(priv_base58).encode("hex_codec")
  97. print " "
  98. print "Bitcoin address : "+pyw.public_key_to_bc_address(pub)
  99. print " "
  100. exit(0)
  101.  
  102. if __name__ == '__main__':
  103. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement