Pages:
Author

Topic: Script Python para extrair informação de uma wallet - page 2. (Read 559 times)

legendary
Activity: 2352
Merit: 6089
bitcoindata.science

Descriptor wallets do not allow dumpprivkey because the fundamental principle behind descriptor wallets is that private keys are not enough information to transport a wallet. Private keys lack derivation information and lack information about what kind of scripts to create. They also do not work for wallets that have anything more complicated than just single key scripts.


Obrigado por postar isso.

Isso mostra q o que eu falei acima, explicando que o que o darkv0rt3x está fazendo é inseguro e inútil, esta alinhado com o entendimento mais recentes do devs do bitcoin core.

Para quem não sabe, achow101 é um dev do bitcoin core.
https://github.com/achow101/

Quote
Talvez o conceito de preocupar em guardar as pk individuais não seja mais necessário, o que devemos nos preocupar é se a carteira nos oferesse a Seed ou xprivs (no caso do Bitcoin Core).

Se você acessar o site que falei, iancoleman.io/bip39, você consegue tirar a xpriv (Account Extended Private Key) de qualquer seed.

Como exercício  , vale qualquer método para derivar chaves privadas a partir da seed. Mas como medida de segurança,  não se deve fazer isso.
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
-
Bitcoin Core é outra carteira que não permite mais exportar chaves privadas WIF individuais, eu fui um dos contrários a esta decisão, os desenvolvedores chegaram a conclusão de que não é seguro.

O Bitcoin Core não tem mais nenhum comando para exportação pk filhas individuais porque desde a implementação de descritores passou a ser o formato padrão, mudaram o derivation path para os padrões atuais: m/44, 49, 84 e 86 para taproot, antes das carteiras descritoras, as chaves privadas eram derivadas de um derivation path reforçado. Quando mudou o derivation path para os padrões atuais, a derivação das chaves filhas deixaram de ser reforçadas, o padrão atual que citei é usado por 99% das carteiras HD e não são reforçadas, chaves não reforçadas significam que não são tão seguras em relação as reforçadas, isso quer dizer que se o usuário vazar qualquer pk de seu endereço e a chave pública estendida, o atacante apenas com essas duas informações pode calcular para derivar TODAS as chaves filhas da carteira!

Descriptor wallets do not allow dumpprivkey because the fundamental principle behind descriptor wallets is that private keys are not enough information to transport a wallet. Private keys lack derivation information and lack information about what kind of scripts to create. They also do not work for wallets that have anything more complicated than just single key scripts. Thus allowing a RPC that only outputs private keys would be working against the point of having descriptors.

Instead of dumpprivkey, descriptor wallets have listdescriptors. This will output all of the descriptors stored in the wallet, which means that it will include information about derivation paths and scripts to create. Descriptors are a full backup of the key and script information stored in the wallet. With 23.0, listdescriptors will also be able to optionally output descriptors containing private keys.

Isso serve para qualquer carteira e não só o Bitcoin Core, pois elas não são reforçadas.

For dumpprivkey, I believe that it's intentionally removed because of the design of BIP44, BIP49, BIP84 and BIP86 standards which now use non-hardened addresses.
Previously, there's no serious issue with exporting a single private key from a legacy HD wallet with hardened addresses since there's no way to compute the parent extended private key from its pair extended public key and a child (exported) private key.
Now, since the 'address_index' as well as the 'chain_index' (change) paths aren't hardened, that issue is now possible if an attacker gets his hand on the data mentioned above.

There's a workaround to export your privKey but be warned of the issue above:  https://bitcointalksearch.org/topic/m.62109703

Mas você pode dumpar a chave privada raiz (ou xpriv) do Bitcoin core no console com o comando (necessário informar a senha antes):
Code:
listdescriptors true

Fazendo isso vai mostrar todos os descritores da carteira e a chave privada estendida estará no meio dos descritores, algo como:

Para endereços de recebimento:
Code:
wpkh(xpriv99999/84h/0h/0h/0/*)#pavne9dy

Para troco (change)
Code:
wpkh(xpriv99999/84h/0h/0h/1/*)#pavne9dy

Você pode visualizar as chaves públicas estendidas também apenas com "listdescriptors", não é necessário informar a senha pra usar esse comando, irá mostrar as chaves públicas em formato legacy (xpub) no meio dos descritores, você pode usar essa informação para importar em outra carteira somente a xpub ou o copiar e colar o descritor inteiro (se a carteira tiver suporte para descritor como a Sparrow).

O Bitcoin Core permite importar quantos descritores quiser, ou seja, você pode importar quantas carteiras HD quiser usando o xpriv para importá-las, isso mudou o conceito de carteiras na minha opnião, permitindo que o Bitcoin Core seja a única carteira que faz isso (acho isso um diferencial espetacular), é como se o Core fosse uma espécie de chaveiro para todas estas carteiras HD (xprivs, descritores).

Então no Bitcoin Core, você é o dono de suas chaves privadas assim como qualquer carteira.

Talvez o conceito de preocupar em guardar as pk individuais não seja mais necessário, o que devemos nos preocupar é se a carteira nos oferesse a Seed ou xprivs (no caso do Bitcoin Core).

Para o usuário médio, guardar o keystore (wallet.dat) é a maneira mais segura, pois ele não interage diratamente com as chaves privadas sem ter chances de vazar, ele só precisa lembrar da senha para descritografar a carteira ou gastar as moedas nessa carteira.
legendary
Activity: 1862
Merit: 5154
**In BTC since 2013**
Mostrar a seed equivale a mostrar todas as private keys. Nenhuma wallet mostra suas private keys mais. Apenas o bitcoin core, e a forma correta de backup é guardar o wallet.dat de forma codificada. Isso exige maior conhecimento de segurança, acho altamente não recomendável que você guarde seus fundos lá se eles forem significantes.

Eu ainda tenho o wallet.dat da primeira wallet que tive no Bitcoin Core.
Foi uma boa supressa, quando coloquei o nó a funcionar outra vez e voltei abrir o wallet.dat.  Roll Eyes
Entretanto, já movi para outra wallet.


Em relação as formas de backup, apenas digo: não importa se usa-se 2 ou 3 formas diferentes ou apenas uma. O que importa é ter esse backup seguro e talvez até repetido em vários locais diferentes. Além disso, acho que a segurança não tem de ser complicada, mas sim segura. O complicado coloca mais risco, do que segurança no processo.

Outro ponto que eu acho sempre relevante, é que quanto mais sensação de segurança se tem, mais exposto se esta. Parece contraditório, mas é verdade. Por isso é que por vezes lemos historias de pessoal muito experiente perde moedas. A verdade é que quando você sabe que devia fazer mais pela sua segurança, você mantem-se alerta, para tentar evitar ficar exposto. Já quando a pessoa tem a total confiança que esta seguro, mais cedo ou mais tarde, pode baixar a guardar.

legendary
Activity: 2352
Merit: 6089
bitcoindata.science
Olha, eu tenho todas as minhas PKs em papel. É da tua/nossa responsabilidade certeficares-te que as escreves correctamente. Essa é a ideia. Seres o "ultimate accountable" pelo que fazes com as tuas PKs.
Voce gera novas Privates key com saldo a cada transação. Voce salva essa nova private key a cada transação?

Uma dúvida. como você ve sua private key? Voce roda num Jupiter Notebook no seu browser?? Lembre-se de que sempre que você digita ou visualiza sua private key ou seed num computador com acesso a internet você está expondo seus fundos. Você não sabe se alguém está vendo o que você faz no seu computador.

Quote
2 - Custodial, para mim é ter as PKs à minha disposição. Não é uma app que me permite enviar os meus Bitcoins para onde eu quiser, quando eu quiser, mas sem me mostrar as minhas PKs.

Mostrar a seed equivale a mostrar todas as private keys. Nenhuma wallet mostra suas private keys mais. Apenas o bitcoin core, e a forma correta de backup é guardar o wallet.dat de forma codificada. Isso exige maior conhecimento de segurança, acho altamente não recomendável que você guarde seus fundos lá se eles forem significantes.

Quote
3 - Sites para gerar addresses ou para derivar addresses ou whatever??? NÃO, muito obrigado! Nem que seja um site comprovadamente criado pelo Satoshi.

O site que eu te falei não faz isso. Você só não entendeu o que ele faz.

Quote
4 - Não sei como é o processo de chegar de uma Seed a uma PK. O que sei é que euma PK é um número aleatório e é nele que tudo começa. Portanto, mais importante que uma Seed, para mim, é a PK em si.

Eu recomendo que você leia o Mastering Bitcoin, a parte de wallets, antes que perca seus fundos.

https://github.com/bitcoinbook/bitcoinbook

Boa sorte.
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees

Olha, eu tenho todas as minhas PKs em papel. É da tua/nossa responsabilidade certeficares-te que as escreves correctamente. Essa é a ideia. Seres o "ultimate accountable" pelo que fazes com as tuas PKs.
Aliás, eu escrevi as addresses e as respectivas PKs umas ao pé das outras. É um dos meus backups. Claro que não é o único, mas é um deles.

Eu ainda sou do tempo, em que não havia seed... Então, se a pessoa queria guardar em papel, tinha mesmo de guardar o PK.  Roll Eyes

Nunca usei, mas lembro-me deste site www.bitaddress.org que servia para criar wallet, e tem um modelo XPTO para se imprimir.

Pois. Não acho nada de errado em termos as PKs em papel. Claro que tem os seus riscos, mas é como tudo... Há riscos em praticamente tudo!

Não é boa prática de segurança. Os tempos mudaram e as carteiras também.
Uma private key te dá acesso apenas a um endereço.

As carteiras hoje são desenhadas levando em consideração que você guardou sua Seed.

Se você fizer uma transação numa carteira moderna, ela automaticamente envia o troco da transação para outro endereço , em outro derivation path, o qual você provavelmente não fez o backup.

Ou seja, Vai acabar perdendo suas moedas se seu backup for a private keys.

Claro que é uma boa prática de segurança. Aliás, teres redundância dos backups das tuas PKs é uma boa prática de segurança!
Usares apenas um meio de backup, é que é má prática de segurança. Pelo menos na minha opinião.

Depende da carteira.
Se usares a do Bitcoin Core, não é a wallet que te faz essa gestão. És tu e tens que saber o que estás a fazer. Essa é a ideia de custodial! Teres controlo absoluto dos teus fundos.
Pelo menos é assim que funciona o Bitcoin Core na linha de comandos. Colocas o endereço de destino e tens que fazer as contas para a fee da rede e para o que queres que seja enviado. Se fizeres mal as contas ou não colocares uma address para o "troco", todo o troco é considerado fee!
 Mas também admito que esta é a minha visão. Não ter que ser igual para todos nem tem que ser a mais correcta. É só a mais correcta para mim!
Portanto, resumindo:
1 - Ter várias formas de backup é melhor que ter apenas uma. E lá por ser em papel não tem que ser pior que meteres a PK ou a Seed ou whatever em discos de metal e mais não sei quantos malabarismos que inventam, para o risco de perder ser igual.
2 - Custodial, para mim é ter as PKs à minha disposição. Não é uma app que me permite enviar os meus Bitcoins para onde eu quiser, quando eu quiser, mas sem me mostrar as minhas PKs.
3 - Sites para gerar addresses ou para derivar addresses ou whatever??? NÃO, muito obrigado! Nem que seja um site comprovadamente criado pelo Satoshi.
4 - Não sei como é o processo de chegar de uma Seed a uma PK. O que sei é que euma PK é um número aleatório e é nele que tudo começa. Portanto, mais importante que uma Seed, para mim, é a PK em si.
5 - Ser o "ultimate accountable" é para mim a definição suprema de ser dono do meu património, ou vice-versa!
legendary
Activity: 2352
Merit: 6089
bitcoindata.science

Olha, eu tenho todas as minhas PKs em papel. É da tua/nossa responsabilidade certeficares-te que as escreves correctamente. Essa é a ideia. Seres o "ultimate accountable" pelo que fazes com as tuas PKs.
Aliás, eu escrevi as addresses e as respectivas PKs umas ao pé das outras. É um dos meus backups. Claro que não é o único, mas é um deles.

Eu ainda sou do tempo, em que não havia seed... Então, se a pessoa queria guardar em papel, tinha mesmo de guardar o PK.  Roll Eyes

Nunca usei, mas lembro-me deste site www.bitaddress.org que servia para criar wallet, e tem um modelo XPTO para se imprimir.

Pois. Não acho nada de errado em termos as PKs em papel. Claro que tem os seus riscos, mas é como tudo... Há riscos em praticamente tudo!

Não é boa prática de segurança. Os tempos mudaram e as carteiras também.
Uma private key te dá acesso apenas a um endereço.

As carteiras hoje são desenhadas levando em consideração que você guardou sua Seed.

Se você fizer uma transação numa carteira moderna, ela automaticamente envia o troco da transação para outro endereço , em outro derivation path, o qual você provavelmente não fez o backup.

Ou seja, Vai acabar perdendo suas moedas se seu backup for a private keys.



Indo mais afundo, quem quiser aprender.

Não é porque você ouviu falar que 15 anos atras as pessoas salvavam suas private keys, que você deve fazer isso também

Antigamente, as carteiras eram assim. De forma simplificada, o Bitcoin Core gerava 100 chaves privadas aleatórias, e você guardava elas em papel, e pronto. Não existia endereço troco.
Essas carteiras eram apelidadas de JBOK (Just a Bunch of Keys, só um monte de chaves). Devido a sua dificuldade de manejo, essas carteiras não existem mais.

Abaixo quotes do melhor livro técnico sobre bitcoin, o Mastering Bitcoin

Quote
The disadvantage of random keys is that if you generate many of them you must keep copies of all of them, meaning that the wallet must be backed up frequently. Each key must be backed up, or the funds it controls are irrevocably lost if the wallet becomes inaccessible. This conflicts directly with the principle of avoiding address re-use, by using each bitcoin address for only one transaction.

https://www.oreilly.com/library/view/mastering-bitcoin/9781491902639/ch04.html

Depois disso, foram desenvolvidas as carteiras hierárquicas determinísticas (HD).

Essas carteiras só tem vantagens. Não existe mais a necessidade de guardar as private keys. Cada seed contem literalmente milhões de private keys, algo humanamente impossível de guardar. Pessoalmente, eu tenho mais de 20 endereços com saldos em bitcoin, e uma transação pode gerar mais 1 ou 2 rapidamente.

Quote
HD wallets offer two major advantages over random (nondeterministic) keys. First, the tree structure can be used to express additional organizational meaning, such as when a specific branch of subkeys is used to receive incoming payments and a different branch is used to receive change from outgoing payments. Branches of keys can also be used in a corporate setting, allocating different branches to departments, subsidiaries, specific functions, or accounting categories.

The second advantage of HD wallets is that users can create a sequence of public keys without having access to the corresponding private keys. This allows HD wallets to be used on an insecure server or in a receive-only capacity, issuing a different public key for each transaction. The public keys do not need to be preloaded or derived in advance, yet the server doesn’t have the private keys that can spend the funds.

Seeds ainda melhoram sua privacidade, pois ao guardar private keys você acaba fazendo reutilização de endereços, uma péssima prática.

Recomendo novamente que você vá no iancoleman.io/bip39 para aprender como funciona a derivação de uma seed em private keys. É uma operação matemática. Se voce olhar o source code dele (em javascript), pode adaptar o código dele para python para fazer corretamente a extração das private keys a partir da semente.

Levando em conta que sua seed nunca deve ser colocada online, e se sua private key já apareceu alguma vez pra você na tela do seu computador, ela está exposta e você pode deletar sua carteira.
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees

A sua seed é a private key de todos os endereços da sua wallet. Uma simples operação matemática irá derivar todas as private keys.

O que você está fazendo não aumenta sua segurança, pelo contrário.

Eu não quero aumentar a segurança. Quero apenas ter as PKs comigo.

Com exercício, para uma seed sem fundos, beleza, vale qualquer coisa. E o mais eficiente é botar na ferramenta que recomendei.

Agora se tiver fundos aí, pode parar pq voce já tem suas chaves e está apenas expondo elas nessa brincadeira.

Continuo a dizer que é mau aconselhar usar sites para esses efeitos. Qualquer coisa que exponha as PKs à internet, é mau. Pelo menos para efeitos de guardar PKs por muito tempo!


Quote
Mas colocar a seed noutra wallet, continua a não me mostrar as PKs das addresses! Se quiseres fazer um backup de uma as adresses em papel, como é que fazes? (Eu respondo: não fazes).

Não se deve fazer backup de private keys em papel. Isso não foi feito para seres humanos lerem.

Uma private key é assim:

Code:
KzTT1W3toHBjkNFh3YTTnfwN3WUJXPGaAy9E592oDCfZWDCJPMBF

Imagina escrever isso na mão. Trocar um B por um 8, ou um 0 por um O e está tudo perdido.
Em papel só se deve guardar a seed.


Olha, eu tenho todas as minhas PKs em papel. É da tua/nossa responsabilidade certeficares-te que as escreves correctamente. Essa é a ideia. Seres o "ultimate accountable" pelo que fazes com as tuas PKs.
Aliás, eu escrevi as addresses e as respectivas PKs umas ao pé das outras. É um dos meus backups. Claro que não é o único, mas é um deles.



Então mas quando se tem uma wallet no Electrum, não se consegue obter as PKs?
Nunca experimentei, nem pesquisei, por isso pergunto.

Sim, na Electrum sim. Mas como é raro eu usar a Electrum, também só soube que dava para extrair as PKs agora que fiz o script e enquanto não consegui fazer o script, acabei opr ir testar com a Electrum.


Outra curiosidade, qual é o objetivo de obter as PKs?
Ou apenas estas a explorar um exercício para aprender mais sobre o tema?

O objectivo é só esse. Ter as PKs e em qualquer eventualidade, tenho sempre a possibilidade de recuperar as addresses.



Eu ainda sou do tempo, em que não havia seed... Então, se a pessoa queria guardar em papel, tinha mesmo de guardar o PK.  Roll Eyes

Nunca usei, mas lembro-me deste site www.bitaddress.org que servia para criar wallet, e tem um modelo XPTO para se imprimir.

Pois. Não acho nada de errado em termos as PKs em papel. Claro que tem os seus riscos, mas é como tudo... Há riscos em praticamente tudo!
legendary
Activity: 1862
Merit: 5154
**In BTC since 2013**
Mais ou menos. A opção para gerar o backup é uma coisa, teres a seed é outra. Tens uma opção para mostrar a seed se não me engano.

Mas colocar a seed noutra wallet, continua a não me mostrar as PKs das addresses! Se quiseres fazer um backup de uma as adresses em papel, como é que fazes? (Eu respondo: não fazes).

Sim, é possível. Aliás eu testei importar na Electrum e funcionou. Mas é o que eu disse, não fico com as PKs na mesma!

Então mas quando se tem uma wallet no Electrum, não se consegue obter as PKs?
Nunca experimentei, nem pesquisei, por isso pergunto.

Outra curiosidade, qual é o objetivo de obter as PKs?
Ou apenas estas a explorar um exercício para aprender mais sobre o tema?



Não se deve fazer backup de private keys em papel. Isso não foi feito para seres humanos lerem.

Uma private key é assim:

Code:
KzTT1W3toHBjkNFh3YTTnfwN3WUJXPGaAy9E592oDCfZWDCJPMBF

Imagina escrever isso na mão. Trocar um B por um 8, ou um 0 por um O e está tudo perdido.
Em papel só se deve guardar a seed.

Eu ainda sou do tempo, em que não havia seed... Então, se a pessoa queria guardar em papel, tinha mesmo de guardar o PK.  Roll Eyes

Nunca usei, mas lembro-me deste site www.bitaddress.org que servia para criar wallet, e tem um modelo XPTO para se imprimir.
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees

Oh @bitmover, eu também não ando cá há dois dias, né?
Ou não me conheces minimamente pelo tipo de conteúdo dos meus posts ou então nem percebo como é que tu achas sequer possível que eu caísse num erro desses.
Essa wallet que usei já teve coins mas já lá não há nada há muito tempo. Até tu próprio podias ter ido ver  se eu lá tinha alguma coisa e evitavas passar sequer a ideia que eu era tão novato quanto isso. :p :p !

E se não tem moedas, pq é tão absurdo botar a seed no site q eu sugeri?

Se vc só quer as private keys da seed  você pode usar isso aqui também.

https://stackoverflow.com/questions/54202617/how-to-generate-bitcoin-keys-addresses-from-a-seed-in-python

Eu não tenho mas se alguém ler comentários a sugerir colocar seeds em sites, pode dar asneira. Ninguém quer isso. Eu por acaso não tenho mas também já sei mais ou menos o que a casa gasta mas pessoas com menos experiência podem cair nesse erro e darem-se mal. Por isso, a minha opinião é que sugerir sites para gerar wallets e/ou para o que quer que seja que envolva expôr PKs à internet, nunca é bom conselho!
legendary
Activity: 2352
Merit: 6089
bitcoindata.science

Oh @bitmover, eu também não ando cá há dois dias, né?
Ou não me conheces minimamente pelo tipo de conteúdo dos meus posts ou então nem percebo como é que tu achas sequer possível que eu caísse num erro desses.
Essa wallet que usei já teve coins mas já lá não há nada há muito tempo. Até tu próprio podias ter ido ver  se eu lá tinha alguma coisa e evitavas passar sequer a ideia que eu era tão novato quanto isso. :p :p !

E se não tem moedas, pq é tão absurdo botar a seed no site q eu sugeri?

Se vc só quer as private keys da seed  você pode usar isso aqui também.

https://stackoverflow.com/questions/54202617/how-to-generate-bitcoin-keys-addresses-from-a-seed-in-python
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees
Desculpa lá mas nem parece teu. Tu és mais sábio que isso.
Seja lá qual for o site, até podia ser do Satoshi, mas eu nunca iria meter uma seed ou seja o que for, para me dar as PKs das minhas addresses! Acho que isso é conselho que eu jamais daria a quem quer que fosse.

Cara, o que você está fazendo já é por si só altamente inseguro. Se você tem qualquer dinheiro nessa seed, já recomendo que pare imediatamente seu experimento. Tire todas as moedas dessa wallet pq sua seed já está comprometida.

Tudo que você está fazendo é inseguro. Você está baixando um monte de libs, procurando githubs por aí etc.. e botando sua seed num "código python " para extrair sementes.

Eu apenas te mostrei a forma correta de derivar private keys de seeds. Pelo código de um desenvolvedor bitcoin que criou o bip39, ou seja, um dos inventores da seed.

Novamente, isso serve apenas para fins experimentais. Você não deve criar códigos python com sua seed se ela tiver fundos.
Acho que o que você está fazendo é mais perigoso do que usar o iancoleman.io

Oh @bitmover, eu também não ando cá há dois dias, né?
Ou não me conheces minimamente pelo tipo de conteúdo dos meus posts ou então nem percebo como é que tu achas sequer possível que eu caísse num erro desses.
Essa wallet que usei já teve coins mas já lá não há nada há muito tempo. Até tu próprio podias ter ido ver  se eu lá tinha alguma coisa e evitavas passar sequer a ideia que eu era tão novato quanto isso. :p :p !
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
Desculpa lá mas nem parece teu. Tu és mais sábio que isso.
Seja lá qual for o site, até podia ser do Satoshi, mas eu nunca iria meter uma seed ou seja o que for, para me dar as PKs das minhas addresses! Acho que isso é conselho que eu jamais daria a quem quer que fosse.

Cara, o que você está fazendo já é por si só altamente inseguro. Se você tem qualquer dinheiro nessa seed, já recomendo que pare imediatamente seu experimento. Tire todas as moedas dessa wallet pq sua seed já está comprometida.

Tudo que você está fazendo é inseguro. Você está baixando um monte de libs, procurando githubs por aí etc.. e botando sua seed num "código python " para extrair sementes.

Eu apenas te mostrei a forma correta de derivar private keys de seeds. Pelo código de um desenvolvedor bitcoin que criou o bip39, ou seja, um dos inventores da seed.

Novamente, isso serve apenas para fins experimentais. Você não deve criar códigos python com sua seed se ela tiver fundos.
Acho que o que você está fazendo é mais perigoso do que usar o iancoleman.io

Quote
Mas a verdade é que Not your keys, not your bitcoin. E portanto, a Peach não te mostra em plain text em lado nenhum as PKs de cada address que ela gera para as tuas transacções. E eu queria ter as PKs comigo. Foi só por isso que tentei fazer este script!

A sua seed é a private key de todos os endereços da sua wallet. Uma simples operação matemática irá derivar todas as private keys.

O que você está fazendo não aumenta sua segurança, pelo contrário.

Com exercício, para uma seed sem fundos, beleza, vale qualquer coisa. E o mais eficiente é botar na ferramenta que recomendei.

Agora se tiver fundos aí, pode parar pq voce já tem suas chaves e está apenas expondo elas nessa brincadeira.


Quote
Mas colocar a seed noutra wallet, continua a não me mostrar as PKs das addresses! Se quiseres fazer um backup de uma as adresses em papel, como é que fazes? (Eu respondo: não fazes).

Não se deve fazer backup de private keys em papel. Isso não foi feito para seres humanos lerem.

Uma private key é assim:

Code:
KzTT1W3toHBjkNFh3YTTnfwN3WUJXPGaAy9E592oDCfZWDCJPMBF

Imagina escrever isso na mão. Trocar um B por um 8, ou um 0 por um O e está tudo perdido.
Em papel só se deve guardar a seed.
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees
Se fores às definições da app, tem lá uma opção para criar um backup.

O meu objectivo, em concreto era apenas conseguir tirar as addresses e as PKs, para eu ficar com controlo total sobre as addresses da wallet. Eu sei que tenho controlo "total" porque é non-custodial e etc. Mas a verdade é que Not your keys, not your bitcoin. E portanto, a Peach não te mostra em plain text em lado nenhum as PKs de cada address que ela gera para as tuas transacções. E eu queria ter as PKs comigo. Foi só por isso que tentei fazer este script!

Mas, nessa opção de backup, podes obter a seed. Logo se tens a seed, basta colocares no Electrum e passas a ter o controlo fora do Peach da tua wallet.
Eu nunca experimentei, mas pensei que seja possível. Ou não!?

Mais ou menos. A opção para gerar o backup é uma coisa, teres a seed é outra. Tens uma opção para mostrar a seed se não me engano.

Mas colocar a seed noutra wallet, continua a não me mostrar as PKs das addresses! Se quiseres fazer um backup de uma as adresses em papel, como é que fazes? (Eu respondo: não fazes).

Sim, é possível. Aliás eu testei importar na Electrum e funcionou. Mas é o que eu disse, não fico com as PKs na mesma!

Eu tenho a seed phrase e já tentei usá-la para extrair as PKs mas tudo o que consigo é uma PK em formato WIF. Não quero WIF. Quero no mesmo formato que o Bitcoin Core as mostra com o comando dumpprivkey.

Se você tem a seed e quer derivar as private keys, você não precisa de nada disso.

Basta botar aqui
https://iancoleman.io/bip39/

Ele vai generate todas as private keys e respectivos addresses

Desculpa lá mas nem parece teu. Tu és mais sábio que isso.
Seja lá qual for o site, até podia ser do Satoshi, mas eu nunca iria meter uma seed ou seja o que for, para me dar as PKs das minhas addresses! Acho que isso é conselho que eu jamais daria a quem quer que fosse.
Eu sei que o site muito provavelmente é de confiança e etc, mas quando falamos aqui em OpSec para guardar as nossas wallets/Pks de forma a nunca as perdermos, dizer para meter uma seed num site para nos dar as PKs, não é o melhor conselho, acho eu.

Vais dizer que o posso fazer offline e etc... Ok, mas também nada me garante que não haja um mecanismo qualquer que quando detecta uma ligação à net, que não envia informação em cache ou sobre outra forma qualquer, para o dono do site!

Podes dizer que as libraries que eu usei, podem fazer o mesmo, talvez, mas então muitos outros projectos que usam as mesmas libraries estariam a sofrer do mesmo.
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
Eu tenho a seed phrase e já tentei usá-la para extrair as PKs mas tudo o que consigo é uma PK em formato WIF. Não quero WIF. Quero no mesmo formato que o Bitcoin Core as mostra com o comando dumpprivkey.

Se você tem a seed e quer derivar as private keys, você não precisa de nada disso.

Basta botar aqui
https://iancoleman.io/bip39/

Ele vai generate todas as private keys e respectivos addresses
legendary
Activity: 1862
Merit: 5154
**In BTC since 2013**
Se fores às definições da app, tem lá uma opção para criar um backup.

O meu objectivo, em concreto era apenas conseguir tirar as addresses e as PKs, para eu ficar com controlo total sobre as addresses da wallet. Eu sei que tenho controlo "total" porque é non-custodial e etc. Mas a verdade é que Not your keys, not your bitcoin. E portanto, a Peach não te mostra em plain text em lado nenhum as PKs de cada address que ela gera para as tuas transacções. E eu queria ter as PKs comigo. Foi só por isso que tentei fazer este script!

Mas, nessa opção de backup, podes obter a seed. Logo se tens a seed, basta colocares no Electrum e passas a ter o controlo fora do Peach da tua wallet.
Eu nunca experimentei, mas pensei que seja possível. Ou não!?
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees
Estou a tentar fazer um script em Python para extrair umas informações de uma wallet que é a Peach que tenho usado para comprar Bitcoin P2P.
O objectivo é mesmo tentar extrair as PKs das addresses desta wallet. Ou pelo menos uma PK.

Fiquei curioso, porque também uso o Peach.

Onde vais buscar a informação da wallet? Consegues extrair algum ficheiro com essa info? Não me lembro de ver isso na app...

Depois, qual é o objetivo de recolher essa informação?

Não sei ao certo o que queres dizer com o "ir buscar a informação da wallet". A própria wallet sugere-te de tempos a tempos fazer um backup. Isso cria um ficheiro JSON encriptado.
Desse ficheiro, se o souberes desencriptar, deves poder tirar informação sobre a wallet. Não sei qual informação ao certo, mas talvez histórico de transacções, etc.

Se fores às definições da app, tem lá uma opção para criar um backup.

O meu objectivo, em concreto era apenas conseguir tirar as addresses e as PKs, para eu ficar com controlo total sobre as addresses da wallet. Eu sei que tenho controlo "total" porque é non-custodial e etc. Mas a verdade é que Not your keys, not your bitcoin. E portanto, a Peach não te mostra em plain text em lado nenhum as PKs de cada address que ela gera para as tuas transacções. E eu queria ter as PKs comigo. Foi só por isso que tentei fazer este script!
legendary
Activity: 1862
Merit: 5154
**In BTC since 2013**
Estou a tentar fazer um script em Python para extrair umas informações de uma wallet que é a Peach que tenho usado para comprar Bitcoin P2P.
O objectivo é mesmo tentar extrair as PKs das addresses desta wallet. Ou pelo menos uma PK.

Fiquei curioso, porque também uso o Peach.

Onde vais buscar a informação da wallet? Consegues extrair algum ficheiro com essa info? Não me lembro de ver isso na app...

Depois, qual é o objetivo de recolher essa informação?
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees
Ei my man, eu li seu tópico, mas como estava meio sem tempo, não deu pra ler tudo, você quer extrair as chaves privadas em formato WIF, certo? Essa wallet da peach não fornece um mnemônico? Você pode através do mnemônico BIP39 restaurar as chaves privadas de cada endereço em formato WIF em ferramentas para uso offline como Electrum, iancoleman etc, definindo corretamente o derivation path.

Seria ótimo se você fizesse um vídeo demonstrando como desvendou o mistério, eu acho ótimo essas coisas. Mas sei que fazer um vídeo requer muito tempo e pode ser trabalhoso, mas pretendo voltar aqui quando estiver aprendendo python (atualmente eu não conheço ou sei como usar essa linguagem).

Sim, a wallet fornece a Seed Phrase e foi através dela que fiz o script. Como podes ver pela minha reposta anterior, já consegui fazer o que queria e extrair "todas" as addresses e "todas" as keys que pretendia, tal como faz a Electrum.

Agora vou aproveitar e fazer mais algumas alterações e deixar o script mais "bonito" e até talvez interagir um pouco com o user! Tipo pedir quantas addresses quer, se quer addresses para "change", se quer imprimir juntamente as PKs e acho que será tudo!

Ainda tentei fazer o script usando o file de backup da wallet, mas fiquei "preso" num erro que não consegui resolver, e decidi fazer apenas pela Seed Phrase!

Se quiseres seguir o que vou adicionando ao script, podes ir vendo aqui:
https://gitlab.com/PsySc0rpi0n/peachkeyextractor
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Ei my man, eu li seu tópico, mas como estava meio sem tempo, não deu pra ler tudo, você quer extrair as chaves privadas em formato WIF, certo? Essa wallet da peach não fornece um mnemônico? Você pode através do mnemônico BIP39 restaurar as chaves privadas de cada endereço em formato WIF em ferramentas para uso offline como Electrum, iancoleman etc, definindo corretamente o derivation path.

Seria ótimo se você fizesse um vídeo demonstrando como desvendou o mistério, eu acho ótimo essas coisas. Mas sei que fazer um vídeo requer muito tempo e pode ser trabalhoso, mas pretendo voltar aqui quando estiver aprendendo python (atualmente eu não conheço ou sei como usar essa linguagem).
hero member
Activity: 1274
Merit: 681
I rather die on my feet than to live on my knees
Bem, entretanto se não fosse no forum internacional, não conseguia chegar ao meu objectivo. E não estava muito longe! Faltaram apenas 2 detalhes.

Com o seguinte código já consigo sacar as Private Keys no formato que pretendo, ou seja, antes de chegar a WIF (base58).

Code:
from bitcoinlib.keys import HDKey
from bitcoinlib.mnemonic import Mnemonic
from bitcoinlib.encoding import base58encode
from bitcoinlib.encoding import double_sha256

# Example seed phrase (mnemonic)
mnemonic_phrase = "thunder trade sleep rack pair ranch sense hand inquiry gauge you know"

# Create a Mnemonic object
mnemonic = Mnemonic()
# Convert the mnemonic phrase to a seed (binary)
seed = mnemonic.to_seed(mnemonic_phrase)

# Create an HD wallet from the seed
hdkey = HDKey.from_seed(seed, network='bitcoin')

# Derive a private key using the specific derivation path (m/84'/0'/0'/0/2)
key = hdkey.subkey_for_path("m/84'/0'/0'/1/0")

# Get the corresponding native SegWit address
bitcoin_address = key.address(encoding='bech32')

# Prepend and append the network byte (0x80) and the compression flag (0x01)
prvKey_data = (b'\x80' + key.private_byte + b'\x01')

# Calculate the checksum
checksum = double_sha256(prvKey_data)

# Prepend the checksum to the double sha256'ed key
private_key_base58 = base58encode(prvKey_data + checksum[0:4])

print("Bitcoin address:", bitcoin_address)
print("Private key (Base58):", private_key_base58)
Pages:
Jump to: