Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save etherx-dev/ba0520ceaaa99965626e67e9b1ab1af2 to your computer and use it in GitHub Desktop.
Save etherx-dev/ba0520ceaaa99965626e67e9b1ab1af2 to your computer and use it in GitHub Desktop.
dumpkeyhs
import binascii
import hashlib
import codecs
import mmap
import sys
import ecdsa
import base58
# Define base58str
def base58str(address_hex):
alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
b58_string = ''
# Get the number of leading zeros
leading_zeros = len(address_hex) - len(address_hex.lstrip('0'))
# Convert hex to decimal
address_int = int(address_hex, 16)
# Append digits to the start of string
while address_int > 0:
digit = address_int % 58
digit_char = alphabet[digit]
b58_string = digit_char + b58_string
address_int //= 58
# Add ‘1’ for each 2 leading zeros
ones = leading_zeros // 2
for one in range(ones):
b58_string = '1' + b58_string
return b58_string
def priv_to_addr(address_hex,compressed):
signing_key = ecdsa.SigningKey.from_string(address_hex, curve=ecdsa.SECP256k1)
verifying_key = signing_key.get_verifying_key()
if not compressed:
public_key = bytes.fromhex("04") + verifying_key.to_string()
else:
public_key_x = verifying_key.to_string()[0:32]
public_key_y = verifying_key.to_string()[32:]
if int(binascii.hexlify(public_key_y),16) % 2 == 0:
public_key = bytes.fromhex("02") + public_key_x
else:
public_key = bytes.fromhex("03") + public_key_x
#hash sha256 of pubkey
sha256_1 = hashlib.sha256(public_key)
#hash ripemd of sha of pubkey
ripemd160 = hashlib.new("ripemd160")
ripemd160.update(sha256_1.digest())
#checksum of doge 0x1E being 30 from chainparams for addr prefix of D
hashed_public_key = bytes.fromhex("0x1E") + ripemd160.digest()
checksum_full = hashlib.sha256(hashlib.sha256(hashed_public_key).digest()).digest()
checksum = checksum_full[:4]
bin_addr = hashed_public_key + checksum
#encode address to base58_check and return
result_addr = base58.b58encode(bin_addr).decode("utf-8")
return result_addr
def main():
f = open(sys.argv[1], "rb")
mm = mmap.mmap(f.fileno(),0,prot=mmap.PROT_READ)
currindex = mm.find(b'\x02\x01\x01\x04\x20')
privkeyList = set()
while(currindex > -1):
mm.seek(currindex+5)
#print(binascii.hexlify(mm.read(32)))
privkeyList.add(mm.read(32))
currindex = mm.find(b'\x02\x01\x01\x04\x20')
f.close()
#print(privkeyList)
print("Found [" + str(len(privkeyList)) + "] possible keys")
for key in privkeyList:
PKuncomp = b'80'+ binascii.hexlify(key)
uncomp_address = priv_to_addr(key,False)
PKcomp = PKuncomp + b'01'
comp_address = priv_to_addr(key,True)
PKuncomp_sha256_1 = hashlib.sha256(codecs.decode(PKuncomp, 'hex'))
PKuncomp_sha256_2 = hashlib.sha256(PKuncomp_sha256_1.digest())
checksum_uncomp = codecs.encode(PKuncomp_sha256_2.digest(), 'hex')[0:8]
uncomp_PK = PKuncomp + checksum_uncomp
#print(uncomp_PK)
PKcomp_sha256_1 = hashlib.sha256(codecs.decode(PKcomp, 'hex'))
PKcomp_sha256_2 = hashlib.sha256(PKcomp_sha256_1.digest())
checksum_comp = codecs.encode(PKcomp_sha256_2.digest(), 'hex')[0:8]
comp_PK = PKcomp + checksum_comp
#print(comp_PK)
WIF_uncomp = base58str(uncomp_PK.decode("utf-8"))
WIF_comp = base58str(comp_PK.decode("utf-8"))
print(uncomp_address + ":" + WIF_uncomp)
print(comp_address + ":" + WIF_comp)
if __name__ == "__main__":
main()
@etherx-dev
Copy link
Author

did a regex search and replace for the following:

(.){38}$, (.)(bnb)(.), (.)(0x)(.*)

to remove the SHA-3 addr types it's useless, and a headache. at least for this project.... wait, this isn't the project. lol

@etherx-dev
Copy link
Author

output:

Acala Token ^[0-9a-z-A-Z]{44,50}$
ADD ^[1-5a-z.]{1,12}$
Algorand ^[A-Z0-9]{58,58}$
APENFT ^T[1-9A-HJ-NP-Za-km-z]{33}$
Ardor ^(ARDOR-)[0-9A-Za-z]{4}(-)[0-9A-Za-z]{4}(-)[0-9A-Za-z]{4}(-)[0-9A-Za-z]{5}$
Ark ^(A)[A-Za-z0-9]{33}$
Arweave ^[0-9a-z-A-Z-_]{43}$
Astar ^[0-9a-z-A-Z]{44,50}$
Atidium ^[1-5a-z.]{1,12}$
Avalanche ^(X-avax)[0-9A-za-z]{39}$
Beam ^[A-Za-z0-9]{65,500}$|^(beam:)[A-Za-z0-9]{65,495}$
Bitcoin ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[(bc1q)|(bc1p)][0-9A-Za-z]{37,62}$
Bitcoin Cash ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[0-9A-Za-z]{42,42}$
Bitcoin Cash SV ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[0-9A-Za-z]{42,42}$
Bitcoin Diamond ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$
Bitcoin Gold ^[AG][a-km-zA-HJ-NP-Z1-9]{25,34}$
BitcoinX ^(X)[0-9A-za-z]{33}$
BitShares ^[a-z]{1}[a-z0-9-.]{2,62}$
BitTorrent ^T[1-9A-HJ-NP-Za-km-z]{33}$
BitTorrent OLD ^T[1-9A-HJ-NP-Za-km-z]{33}$
Bonfida ^[1-9A-HJ-NP-Za-km-z]{32,44}$
Cardano ^(([0-9A-Za-z]{57,59})|([0-9A-Za-z]{100,104}))$
CKB ^ckb1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{8,}
Dash ^[X|7][0-9A-Za-z]{33}$
Decred ^(Ds|Dc)[0-9A-Za-z]{33}$
DigiByte ^[DS][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(dgb1)[0-9A-Za-z]{39,59}$
DOCK ^(3)[0-9a-z-A-Z]{44,50}$
Dogecoin ^(D|A|9)[a-km-zA-HJ-NP-Z1-9]{33,34}$
Dogecoin ^(D|A|9)[a-km-zA-HJ-NP-Z1-9]{33,34}$
Donnie Finance ^[A-Za-z0-9_]{5,11}$
eCash ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(ecash:)([qpzry9x8gf2tvdw0s3jn54khce6mua7l]{42})$
Edgeware ^[0-9a-z-A-Z]{44,50}$
Elrond eGold ^(erd)[a-z-A-Z0-9]{59}$
EOS ^[1-5a-z.]{1,12}$
Everipedia ^[1-5a-z.]{1,12}$
Filecoin ^[a-z0-9]{41}$|[a-z0-9]{86}$
FIO Protocol ^(FIO)[a-z-A-Z0-9]{50}$
Firo ^[a|Z|3|4][0-9A-za-z]{33}$
Flamingo ^(A)[A-Za-z0-9]{33}$
Green Metaverse Token ^[1-9A-HJ-NP-Za-km-z]{32,44}$
Groestlcoin (F|3)[0-9A-za-z]{33}|grs1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39}
GXChain ^[a-z]{1}[a-z0-9-.]{2,62}$
HealthCare Chain ^(H)[A-Za-z0-9]{33}$
Hedera Hashgraph ^0[.]0[.]\d{1,6}$
Helium ^(1)[0-9A-za-z]{50}$
Hive ^[a-z][a-z0-9-.]{0,14}[a-z0-9]$
Horizen ^(z)[0-9A-za-z]{34}$
HyperCash ^[H][a-km-zA-HJ-NP-Z1-9]{26,35}$
ICON ^(hx)[A-Za-z0-9]{40}$
Internet Computer ^[0-9a-zA-Z]{64}$
IOST ^[A-Za-z0-9_]{5,11}$
JUST ^T[1-9A-HJ-NP-Za-km-z]{33}$
Kadena ^k:[0-9a-zA-Z]{64}$
Kadena ^k:[0-9a-zA-Z]{64}$
Komodo ^(R)[A-Za-z0-9]{33}$
Kusama ^[0-9a-z-A-Z]{44,50}$
Litecoin ^(L|M|3)[A-Za-z0-9]{33}$|^(ltc1)[0-9A-Za-z]{39}$
LTO Network ^(3J)[0-9A-Za-z]{33}$
MEETONE ^[1-5a-z.]{1,12}$
Mina ^(B62)[A-Za-z0-9]{52}$
MIOTA ^(iota)[0-9a-z]{60}$
Monero ^[48][a-zA-Z|\d]{94}([a-zA-Z|\d]{11})?$
MovieBloc ^(A)[A-Za-z0-9]{33}$
Nano ^(xrb_|nano_)[13456789abcdefghijkmnopqrstuwxyz]{60}
Navcoin ((xN)[1-9A-HJ-NP-Za-km-z]{137})|^((N)[1-9A-HJ-NP-Za-km-z]{33})|((X|Y)[1-9A-HJ-NP-Za-km-z]{60})|((4)[1-9A-HJ-NP-Za-km-z]{88})$
NEAR Protocol ^[a-z0-9_-]{1}[a-z0-9_.-]{0,62}[a-z0-9_-]{1}$
Neblio ^N[A-Za-z0-9]{33}$
Nebulas ^n1[a-zA-Z0-9]{33}$
NEO ^(A)[A-Za-z0-9]{33}$
NEO ^(N)[A-Za-z0-9]{33}$
NeoGas ^(A)[A-Za-z0-9]{33}$
NeoGas ^(N)[A-Za-z0-9]{33}$
NerveNetwork ^NULSd[a-km-zA-HJ-NP-Z1-9]{32,32}$
Neutrino Token ^(3P)[0-9A-Za-z]{33}$
New BitShares ^[a-z]{1}[a-z0-9-.]{2,62}$
Nexus ^(2|8)[A-Za-z0-9]{50}$
Nuls ^NULSd[a-km-zA-HJ-NP-Z1-9]{32,32}$
Oasis Network ^(oasis1)[0-9a-z]{40}$
Ontology ^(A)[A-Za-z0-9]{33}$
Ontology Gas ^(A)[A-Za-z0-9]{33}$
Parallel Finance ^[0-9a-z-A-Z]{44,50}$
PIVX ^(D)[0-9A-za-z]{33}$
Polkadot ^(1)[0-9a-z-A-Z]{44,50}$
QiSwap ^[Q|M][A-Za-z0-9]{33}$
QLC Chain ^(A)[A-Za-z0-9]{33}$
Qtum ^[Q|M][A-Za-z0-9]{33}$
Ravencoin ^[Rr]{1}[A-Za-z0-9]{33,34}$
Raydium ^[1-9A-HJ-NP-Za-km-z]{32,44}$
Ripple ^r[1-9A-HJ-NP-Za-km-z]{25,34}$
Serum ^[1-9A-HJ-NP-Za-km-z]{32,44}$
Siacoin ^[A-Za-z0-9]{76}$
Skycoin ^[0-9A-Za-z]{26,35}$
Solana ^[1-9A-HJ-NP-Za-km-z]{32,44}$
Stacks ^S[PM][0-9A-Z]{38,39}$
Steem ^[a-z][a-z0-9-.]{0,14}[a-z0-9]$
Stellar Lumens ^G[A-D]{1}[A-Z2-7]{54}$
Stratis ^(X)[0-9A-Za-z]{33}$
SUN ^T[1-9A-HJ-NP-Za-km-z]{33}$
SUN OLD ^T[1-9A-HJ-NP-Za-km-z]{33}$
Super Bitcoin ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$
Syscoin (S)[A-Za-z0-9]{32,33}|sys1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39}
TetherUS ^[1-9A-HJ-NP-Za-km-z]{32,44}$
TetherUS ^T[1-9A-HJ-NP-Za-km-z]{33}$
Tezos ^(tz[1,2,3])[a-zA-Z0-9]{33}$
Triggers ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$
TRON ^T[1-9A-HJ-NP-Za-km-z]{33}$
USD Coin ^[1-9A-HJ-NP-Za-km-z]{32,44}$
USD Coin ^T[1-9A-HJ-NP-Za-km-z]{33}$
Verge ^(D)[A-Za-z0-9]{33}$
VITE ^(vite_)[a-z0-9]{50}$
Waves ^(3P)[0-9A-Za-z]{33}$
WAX ^[1-5a-z.]{1,12}$
Wing Token ^(A)[A-Za-z0-9]{33}$
WINK ^T[1-9A-HJ-NP-Za-km-z]{33}$
Wrapped SOL ^[1-9A-HJ-NP-Za-km-z]{32,44}$
YOYOW ^[0-9]{5,20}$
Zcash ^(t)[A-Za-z0-9]{34}$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment