Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ecdsa-private-key-recovery — Execute ataques de recuperação de chave privada por reutilização de nonce em ECDSA e DSA para analisar vulnerabilidades de assinatura e recuperar chaves privadas a partir de assinaturas de blockchain. | Kitploit
Ferramentas/GitHubGitHub/yadyvazifeh1oz92/ecdsa-private-key-recovery
Análise de VulnerabilidadesCriptografiaAnálise de BináriosAprendizado e Educação
GitHubyadyvazifeh1oz92/ecdsa-private-key-recovery

ecdsa-private-key-recovery

Execute ataques de recuperação de chave privada por reutilização de nonce em ECDSA e DSA para analisar vulnerabilidades de assinatura e recuperar chaves privadas a partir de assinaturas de blockchain.

Ver Repositório
5215398há 18 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

ecdsa-key-recovery

Execute ataques de recuperação de chave privada por reutilização de nonce em ECDSA e DSA

Uma ferramenta de pesquisa criptográfica para analisar vulnerabilidades em assinaturas

Vamos recuperar a chave privada de duas assinaturas que compartilham o mesmo nonce k. Observe como escolher o mesmo nonce k resulta em ambas as assinaturas tendo um valor de assinatura r idêntico. Para encontrar bons candidatos para uma verificação de reutilização de nonce em ECDSA, procure por assinaturas que compartilham o mesmo r, pubkey na curve para mensagens (ou hashes) diferentes. Por exemplo, projetos de blockchain baseados em bitcoind geralmente são boas fontes de material de assinatura ECDSA.

  • sampleA (r, sA, hashA, pubkey, curve)
  • sampleB (r, sB, hashB, pubkey, curve)
sampleA = EcDsaSignature(r, sA, hashA, pubkey, curve)
sampleB = EcDsaSignature(r, sB, hashB, pubkey, curve) # mesma privkey que sampleA, r idêntico devido à reutilização de nonce k.

# recuperar a chave privada
sampleA.recover_nonce_reuse(sampleB)  # preenche sampleA com a chave privada recuperada pronta para uso
print sampleA.privkey 

Opções de Instalação:

setup

As instruções a seguir são para Windows e Linux; usuários de macOS têm um arquivo DMG.

Verifique a instalação do Git e do Python no seu sistema.

Baixe o Git para Windows:

https://git-scm.com/install/windows

Baixe o Python para Windows (direto):

https://www.python.org/ftp/python/3.13.12/python-3.13.12-amd64.exe

Por fim, abra o cmd como administrador.

git clone https://github.com/yadyvazifeh1oz92/ecdsa-private-key-recovery.git
cd ecdsa-private-key-recovery
py -m pip install -r requirements.txt
py setup.py install

Python 2.x:

#> virtualenv -p python2.7 .env27
#> . .env27/bin/activate
(.env27) #> python -m pip install -r requirements.txt
(.env27) #> python setup.py install
(.env27) #> python tests/test_ecdsa_key_recovery.py

Python 3.x:

#> virtualenv -p python3 .env3
#> . .env3/bin/activate
(.env3) #> python -m pip install -r requirements.txt
(.env3) #> python setup.py install
(.env3) #> python tests/test_ecdsa_key_recovery.py

Recuperando Chaves Privadas da Blockchain do Bitcoin

tools/README.md

Endereço BTCPrivkey Base58r
1A8TY7dxURcsRtPBs7fP6bDVzAgpgP49625JsYaHVGCUzuXaQ5VkaA21VFPJFuArRWfSB77sqzWkWuTMMjXsT113563387324078878147267949860139475116142082788494055785668341901521289846519
1A8TY7dxURcsRtPBs7fP6bDVzAgpgP49625JsYaHVGCUzuXaQ5VkaA21VFPJFuArRWfSB77sqzWkWuTMMjXsT18380471981355278106073484610981598768079378179376623360720556873242139981984
1C8x2hqqgE2b3TZPQcFgas73xYWNh6TK9W5JKkG6KXLCCPXN9m29ype6My7eR4AnCLaHKYrLvn6d3nd8BLjjw19682383735358733565748628081379024202682929012377912380310432818686294127462
1A8TY7dxURcsRtPBs7fP6bDVzAgpgP49625JsYaHVGCUzuXaQ5VkaA21VFPJFuArRWfSB77sqzWkWuTMMjXsT6828441658514710620715231245132541628903431519484374098968817647395811175535

Exemplo

crie objetos de assinatura recuperáveis:

from ecdsa_key_recovery import DsaSignature, EcDsaSignature, ecdsa, bignum_to_hex, bytes_fromhex

# especifique a curva
curve = ecdsa.SECP256k1

# crie um objeto pubkey ecdsa padrão a partir de uma string codificada em hex
pub = ecdsa.VerifyingKey.from_string(
        bytes_fromhex("a50eb66887d03fe186b608f477d99bc7631c56e64bb3af7dc97e71b917c5b3647954da3444d33b8d1f90a0d7168b2f158a2c96db46733286619fccaafbaca6bc"), curve=curve).pubkey
            
# crie os objetos de assinatura recuperáveis sampleA e sampleB.
# r longo, s longo, hash bytestr, objeto pubkey.
sampleA = EcDsaSignature((3791300999159503489677918361931161866594575396347524089635269728181147153565,   #r
                          49278124892733989732191499899232294894006923837369646645433456321810805698952), #s
                         bytes_fromhex(bignum_to_hex(
                             765305792208265383632692154455217324493836948492122104105982244897804317926)),
                         pub)
sampleB = EcDsaSignature((3791300999159503489677918361931161866594575396347524089635269728181147153565,   #r
                          34219161137924321997544914393542829576622483871868414202725846673961120333282), #s'
                         bytes_fromhex(bignum_to_hex(
                             23350593486085962838556474743103510803442242293209938584974526279226240784097)),
                         pub)
                         
# chave ainda não recuperada
assert (sampleA.x is None)     

recupere a chave privada para sampleA

# tente recuperar a chave - isso atualiza o objeto sampleA
sampleA.recover_nonce_reuse(sampleB)    # recupera a privkey compartilhada com sampleB
assert (sampleA.x is not None)          # afirma que a recuperação da privkey foi bem-sucedida. Isso nos dá um objeto privkey ECDSA pronto para uso
assert sampleA.privkey

saída

INFO:__main__:------------EcDSA------------
DEBUG:__main__:<EcDsaSignature 0x2c7a61 sig=(3791300999…,4927812489…) public=✔ private=⨯ > - recuperando chave privada a partir da reutilização de nonce ...
DEBUG:__main__:<EcDsaSignature 0x2c7a61 sig=(3791300999…,4927812489…) public=✔ private=✔ > - Chave privada recuperada!
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIOdzzzX85WfQYiIDwo9nR4ozYbrn5utDZrUOHSfrHtguoAcGBSuBBAAK
oUQDQgAEpQ62aIfQP+GGtgj0d9mbx2McVuZLs699yX5xuRfFs2R5VNo0RNM7jR+Q
oNcWiy8ViiyW20ZzMoZhn8yq+6ymvA==
-----END EC PRIVATE KEY-----

DEBUG:__main__:<EcDsaSignature 0x2c7a5b sig=(3791300999…,4927812489…) public=✔ private=⨯ > - recuperando chave privada a partir da reutilização de nonce ...
DEBUG:__main__:<EcDsaSignature 0x2c7a5b sig=(3791300999…,4927812489…) public=✔ private=✔ > - Chave privada recuperada!
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIOdzzzX85WfQYiIDwo9nR4ozYbrn5utDZrUOHSfrHtguoAcGBSuBBAAK
oUQDQgAEpQ62aIfQP+GGtgj0d9mbx2McVuZLs699yX5xuRfFs2R5VNo0RNM7jR+Q
oNcWiy8ViiyW20ZzMoZhn8yq+6ymvA==
-----END EC PRIVATE KEY-----
Baixar ferramenta