GithubHelp home page GithubHelp logo

10gic / btc-address-dump Goto Github PK

View Code? Open in Web Editor NEW
57.0 5.0 27.0 42 KB

A utility for dump BTC address from mnemonic words or private key or public key, Bitcoin forks are also supported.

License: MIT License

Python 100.00%

btc-address-dump's Introduction

btc-address-dump

btc-address-dump is a utility for dump btc address from mnemonic words or private key or public key.

Example

Dump btc address from mnemonic words (bip44):

$ btc_address_dump "olympic wine chicken argue unaware bundle tunnel grid spider slot spell need"
mnemonic = olympic wine chicken argue unaware bundle tunnel grid spider slot spell need
private key (hex) = c7ac679b56f50bfd54dd924fe45a8dca7a1c2dced254b03dac22afc03adb9127
private key (WIF) = 5KLDyKtrScLYsKMJzVCt8Mf6Nn9DEV7V3fg8njfSZnqe7ZEMqzK
private key (WIF compressed) = L3urFcPsE2yHf5zeQjVSfUB8j8FEzX5cnmhjNsJfqjKgowPP4tmg
public key (compressed) = 024cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1
hash160 of compressed public key = 1075f16844287d6d1c6fefbe2486cd3325127424
legacy address (p2pkh compressed) = 12W36tm2jnreFiYdrzfE6cvRaKRbicEpnA

Dump btc address from mnemonic words (bip49, P2WPKH-nested-in-P2SH):

$ btc_address_dump -d bip49 "olympic wine chicken argue unaware bundle tunnel grid spider slot spell need"
mnemonic = olympic wine chicken argue unaware bundle tunnel grid spider slot spell need
private key (hex) = 50b9428b804254993449ce9732728b086b3faf9df8ad49d227473034974dba9e
private key (WIF) = 5JRqZPwGYSimsreJEZxDoz32b3AqrtbBJ5meE5AFXJoRHSmtL6e
private key (WIF compressed) = KyvdKzEXbnXP5U7d4tSjYNjx1EaSfChrSQ43JhMq6mZtBUGLshFi
public key (compressed) = 030edc38bbc13d7aa7afac33ad485c8d4b057661aedb91eb23935be007c57cfa57
hash160 of compressed public key = 9f2681aefa569e23c031c1719f4635c6dd393b0c
p2sh-segwit address (p2sh p2wpkh) = 3G3MUYikYqnTLYDzAa1PwxnughktzJydJw

Dump btc address from mnemonic words (bip84, P2WPKH):

$ btc_address_dump -d bip84 "olympic wine chicken argue unaware bundle tunnel grid spider slot spell need"
mnemonic = olympic wine chicken argue unaware bundle tunnel grid spider slot spell need
private key (hex) = 87d563c902808568dbed8f52eabaf51e5cc7c3e59ec747b5efc0ed2e3cafabeb
private key (WIF) = 5Jr7GTZpRWRWpSjq6F3u9ekToTyonBcutWS3njTWSfp3RzXxZyF
private key (WIF compressed) = L1mkfEFrKAsCcQc3G91oBBcqJ65jURsWSLuZJrPzxJJdjFj4uLdu
public key (compressed) = 03d8468a0d63d215a3650694b5aa68e0186eead5f91ff3abc22319272e0180eb83
hash160 of compressed public key = 2ca1cb8b4981d03249d741e3dedd0e5f2da65027
bech32 address (p2wpkh) = bc1q9jsuhz6fs8gryjwhg83aahgwtuk6v5p8h54899

Dump btc address from mnemonic words (bip86, P2TR):

$ btc_address_dump -d bip86 "olympic wine chicken argue unaware bundle tunnel grid spider slot spell need"
mnemonic = olympic wine chicken argue unaware bundle tunnel grid spider slot spell need
private key (hex) = 666c57341ca198f7f9e821af23c4688d233deda501922ed9f4c54084bff47693
private key (WIF) = 5JbPqxGCGR75Movygz29XuNYukSKbqnzz97FKwkfChgZjs2odq6
private key (WIF compressed) = Kzeoq4v4j3PpEr9FDUg4fQA7qpim6nN2wCnaEcfhceZdVrgPziFd
taproot tweaked private key = a4242e9d5046485bef61d6788e01e6f9805f9f66a8bb54f332057907cc1f2889
public key (compressed) = 02cb24ba2caf40b51fd72b395fe96794e6cdeec8fb5811ff1e6625af5fa3e0d587
hash160 of compressed public key = 0e1f80bffb15cf157420c004c3fe173edc035b5a
taproot tweaked public key (taproot output key) = fe2cff97d4abadb1590c7c4321afd25e0ed2a741c87772b7bb335fa4100c4d48
bech32m address (p2tr) = bc1plck0l9754wkmzkgv03pjrt7jtc8d9f6pepmh9damxd06gyqvf4yqe3wewn

Dump btc address from hex private key:

$ btc_address_dump c7ac679b56f50bfd54dd924fe45a8dca7a1c2dced254b03dac22afc03adb9127
private key (hex) = c7ac679b56f50bfd54dd924fe45a8dca7a1c2dced254b03dac22afc03adb9127
private key (WIF) = 5KLDyKtrScLYsKMJzVCt8Mf6Nn9DEV7V3fg8njfSZnqe7ZEMqzK
private key (WIF compressed) = L3urFcPsE2yHf5zeQjVSfUB8j8FEzX5cnmhjNsJfqjKgowPP4tmg
taproot tweaked private key = d5fda04f7d24a3ed5ead21148a34577fa42010563a5b99cbfc20f89c9e29438a
public key (uncompressed) = 044cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1087190d91e26af594e3f8ecd3f4d3596c03c45d3b235da916903c930c6593cc4
public key (compressed) = 024cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1
hash160 of uncompressed public key = fd214a3d033c82b307532018ac15ff6e06e62111
hash160 of compressed public key = 1075f16844287d6d1c6fefbe2486cd3325127424
taproot tweaked public key (taproot output key) = 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
legacy address (p2pkh uncompressed) = 1Q5RqZctfcNkTPad2tuJSREByd2gB8xs63
legacy address (p2pkh compressed) = 12W36tm2jnreFiYdrzfE6cvRaKRbicEpnA
p2sh-segwit address (p2sh p2wpkh) = 3AzXxVUqdzvzEqVmdtmeVqRwc98uqwyh76
bech32 address (p2wpkh) = bc1qzp6lz6zy9p7k68r0a7lzfpkdxvj3yapynzuatt
bech32m address (p2tr) = bc1prt4rrqugmyull7rpacnycazxmqu4szc8yykyc2kzlwwd6etzxlpskwl7qz

Dump btc address from WIF private key:

$ btc_address_dump 5KLDyKtrScLYsKMJzVCt8Mf6Nn9DEV7V3fg8njfSZnqe7ZEMqzK
private key (hex) = c7ac679b56f50bfd54dd924fe45a8dca7a1c2dced254b03dac22afc03adb9127
private key (WIF) = 5KLDyKtrScLYsKMJzVCt8Mf6Nn9DEV7V3fg8njfSZnqe7ZEMqzK
private key (WIF compressed) = L3urFcPsE2yHf5zeQjVSfUB8j8FEzX5cnmhjNsJfqjKgowPP4tmg
taproot tweaked private key = d5fda04f7d24a3ed5ead21148a34577fa42010563a5b99cbfc20f89c9e29438a
public key (uncompressed) = 044cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1087190d91e26af594e3f8ecd3f4d3596c03c45d3b235da916903c930c6593cc4
public key (compressed) = 024cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1
hash160 of uncompressed public key = fd214a3d033c82b307532018ac15ff6e06e62111
hash160 of compressed public key = 1075f16844287d6d1c6fefbe2486cd3325127424
taproot tweaked public key (taproot output key) = 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
legacy address (p2pkh uncompressed) = 1Q5RqZctfcNkTPad2tuJSREByd2gB8xs63
legacy address (p2pkh compressed) = 12W36tm2jnreFiYdrzfE6cvRaKRbicEpnA
p2sh-segwit address (p2sh p2wpkh) = 3AzXxVUqdzvzEqVmdtmeVqRwc98uqwyh76
bech32 address (p2wpkh) = bc1qzp6lz6zy9p7k68r0a7lzfpkdxvj3yapynzuatt
bech32m address (p2tr) = bc1prt4rrqugmyull7rpacnycazxmqu4szc8yykyc2kzlwwd6etzxlpskwl7qz

Dump btc address from public key:

$ btc_address_dump 044cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1087190d91e26af594e3f8ecd3f4d3596c03c45d3b235da916903c930c6593cc4
public key (uncompressed) = 044cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1087190d91e26af594e3f8ecd3f4d3596c03c45d3b235da916903c930c6593cc4
public key (compressed) = 024cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1
hash160 of uncompressed public key = fd214a3d033c82b307532018ac15ff6e06e62111
hash160 of compressed public key = 1075f16844287d6d1c6fefbe2486cd3325127424
taproot tweaked public key (taproot output key) = 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
legacy address (p2pkh uncompressed) = 1Q5RqZctfcNkTPad2tuJSREByd2gB8xs63
legacy address (p2pkh compressed) = 12W36tm2jnreFiYdrzfE6cvRaKRbicEpnA
p2sh-segwit address (p2sh p2wpkh) = 3AzXxVUqdzvzEqVmdtmeVqRwc98uqwyh76
bech32 address (p2wpkh) = bc1qzp6lz6zy9p7k68r0a7lzfpkdxvj3yapynzuatt
bech32m address (p2tr) = bc1prt4rrqugmyull7rpacnycazxmqu4szc8yykyc2kzlwwd6etzxlpskwl7qz

Dump btc address from compressed public key:

$ btc_address_dump 024cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1
public key (uncompressed) = 044cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1087190d91e26af594e3f8ecd3f4d3596c03c45d3b235da916903c930c6593cc4
public key (compressed) = 024cd0aaeca3b636078583408e75edd77307b5190ca7a48bb9fbc1f2576c17dff1
hash160 of uncompressed public key = fd214a3d033c82b307532018ac15ff6e06e62111
hash160 of compressed public key = 1075f16844287d6d1c6fefbe2486cd3325127424
taproot tweaked public key (taproot output key) = 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
legacy address (p2pkh uncompressed) = 1Q5RqZctfcNkTPad2tuJSREByd2gB8xs63
legacy address (p2pkh compressed) = 12W36tm2jnreFiYdrzfE6cvRaKRbicEpnA
p2sh-segwit address (p2sh p2wpkh) = 3AzXxVUqdzvzEqVmdtmeVqRwc98uqwyh76
bech32 address (p2wpkh) = bc1qzp6lz6zy9p7k68r0a7lzfpkdxvj3yapynzuatt
bech32m address (p2tr) = bc1prt4rrqugmyull7rpacnycazxmqu4szc8yykyc2kzlwwd6etzxlpskwl7qz

Dump taproot address from taproot output sec key:

$ btc_address_dump --taproot-output-seckey d5fda04f7d24a3ed5ead21148a34577fa42010563a5b99cbfc20f89c9e29438a
taproot output seckey = d5fda04f7d24a3ed5ead21148a34577fa42010563a5b99cbfc20f89c9e29438a
taproot output pubkey = 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
bech32m address (p2tr) = bc1prt4rrqugmyull7rpacnycazxmqu4szc8yykyc2kzlwwd6etzxlpskwl7qz

Dump taproot address from taproot output pub key:

$ btc_address_dump --taproot-output-pubkey 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
taproot output pubkey = 1aea318388d939fff861ee264c7446d839580b07212c4c2ac2fb9cdd656237c3
bech32m address (p2tr) = bc1prt4rrqugmyull7rpacnycazxmqu4szc8yykyc2kzlwwd6etzxlpskwl7qz

Dump btc address from hash160 of public key:

$ btc_address_dump 1075f16844287d6d1c6fefbe2486cd3325127424
hash160 of public key = 1075f16844287d6d1c6fefbe2486cd3325127424
legacy address (p2pkh) = 12W36tm2jnreFiYdrzfE6cvRaKRbicEpnA
p2sh-segwit address (only valid if input is hash160 of COMPRESSED public key) = 3AzXxVUqdzvzEqVmdtmeVqRwc98uqwyh76
bech32 address (only valid if input is hash160 of COMPRESSED public key) = bc1qzp6lz6zy9p7k68r0a7lzfpkdxvj3yapynzuatt

Bitcoin forks

Bitcoin forks are supported. You can use -c to change chain. Here is an example of litecoin:

$ btc_address_dump -c ltc 6vazLaTvDG6Nh1CkhMTeLN5dPHjSq3cZAoET8FvDut9FUH71pp9
private key (hex) = c0ef9854e33b0037c88c861fdf32d3df33f6a74f0cef9b696a31f5452b2aaa54
private key (WIF) = 6vazLaTvDG6Nh1CkhMTeLN5dPHjSq3cZAoET8FvDut9FUH71pp9
private key (WIF compressed) = T9X25Qhos7cijZtss7JbnU3RbNrM14XvzF4NK2quzQjQsEQw8iVL
public key (uncompressed) = 043a0b64eee7e82b80e3e5a02cc9df3f08e1c534bd8b64846f5d556d38af6d9eb2a1729dcb14b66fbb8b57caa7d27f9852096a14c9cb8dc65093f9135d5b6e17a8
public key (compressed) = 023a0b64eee7e82b80e3e5a02cc9df3f08e1c534bd8b64846f5d556d38af6d9eb2
hash160 of uncompressed public key = ffd04e9fca28b32ef5656e4e224d06256fca20ea
hash160 of compressed public key = 3c49068b96181b8d40a4272f69faadc5f722e8b9
taproot output key = 456e7dae52bae03cad9ddc8de61c3248236f8ae2786081c1eadcd1614eae7f69
legacy address (p2pkh uncompressed) = LiYa7ZaqerPbbtad6oxds4wCqYF9v1XH83
legacy address (p2pkh compressed) = LQiiHdPZmAsHNwSngex6fQgPUDDd1Ky47j
p2sh-segwit address (p2sh p2wpkh) = MNNZtmjz5HehvjvLxM89c5oXRp1g9hRT9E
bech32 address (p2wpkh) = ltc1q83ysdzukrqdc6s9yyuhkn74dchmj969e8tjw92
bech32m address (p2tr) = ltc1pg4h8mtjjhtsretvamjx7v8pjfq3klzhz0psgrs02mngkzn4w0a5srs49v4

If your favorite coin is not supported, just add it to coins.yaml, and create a pull request.

Installation

To install btc-address-dump from PyPI:

$ pip3 install btc-address-dump

Known Issue

The last word in mnemonic word list is not arbitrary, it contains checksum info. However, this tool do not check it. In other words, this tool accept invalid mnemonic words.

btc-address-dump's People

Contributors

10gic avatar gruve-p avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

btc-address-dump's Issues

the p2tr address seems wrong.

when i run

btc_address_dump -d bip86 --taproot-output-pubkey 0x4a6f5e3a0dc3a293d0938ef6d7d91cba8bc7615f0107963333320534c2cde210
taproot output pubkey = 4a6f5e3a0dc3a293d0938ef6d7d91cba8bc7615f0107963333320534c2cde210
bech32m address (p2tr) = bc1pffh4uwsdcw3f85yn3mmd0kguh29uwc2lqyrevvenxgznfskduggq04scrt

the p2tr address seems wrong.

I need your help

usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help

error: no commands supplied

mpz object has no attribute 'to_bytes'

onathandoe@MacBook-Air-3 ~ % btc_address_dump 349571e1211343f73984b48e7d11d8695b806f7a9be347d14f1c78d3b7abacab
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/bin/btc_address_dump", line 8, in
sys.exit(run_main())
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/btc_address_dump/init.py", line 10, in run_main
main_entry(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/btc_address_dump/btc_address_dump.py", line 169, in main_entry
public_key_uncompressed = common_util.prikey_to_pubkey(private_key, compressed=False)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/btc_address_dump/common_util.py", line 88, in prikey_to_pubkey
return pubkey_from_point_to_bytes(pubkey_point.x(), pubkey_point.y(), compressed)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/btc_address_dump/common_util.py", line 76, in pubkey_from_point_to_bytes
x_bytes = x.to_bytes(32, byteorder='big')
AttributeError: 'mpz' object has no attribute 'to_bytes'

Checking the mnemonic

Hi! I think you can implement it easily anyway, but I will just share my little code for a mnemonic checker here. The input in the function must be a list of integers in [0,2047], so convert the word list first. However, the mnemonic length is not checked (e.g. divisibility by 3). Kthxbye!

...runs away...

P.S. excuse for the license hahaha

EDIT: I suggest that if the mnemonic is invalid according to BIP-39, just display a notice before displaying the keys & addresses, and do not block the user.

Why do I get an error when importing the module to python?

import btc_address_dump File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/btc_address_dump/__init__.py", line 4, in <module> from .btc_address_dump import main_entry File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/btc_address_dump/btc_address_dump.py", line 10, in <module> import mnemonic_util File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/btc_address_dump/mnemonic_util.py", line 15, in <module> import common_util File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/btc_address_dump/common_util.py", line 55, in <module> def pubkey_from_bytes_to_point(pubkey: bytes) -> tuple[int, int]: TypeError: 'type' object is not subscriptable

What's going on here? The module should work with python3.8.5, yes?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.