Reused R Bitcoin
Pricing
from $1,000.00 / 1,000 results
Reused R Bitcoin
Detection & research tools for repeated ECDSA & Schnorr nonces (r) in Bitcoin transactions
Pricing
from $1,000.00 / 1,000 results
Rating
0.0
(0)
Developer

Abdo Abdo
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
reused-r-bitcoin
Detection & research tools for repeated ECDSA & Schnorr nonces (r) in Bitcoin transactions
⚠️ important :
these tools are for educational purposes. Any incorrect or harmful use is the responsibility of the user.
What is “r-repeat” :
r-repeat means the same ECDSA or Schnorr nonce (k) — and thus the same r value — was used more than once with the same private key in Bitcoin signatures. If that happens, the signatures leak enough information that someone could recover the private key. This turns otherwise secure signatures into a critical vulnerability.
How does r repeat? :
-
Weak or insufficient randomness (CSPRNG): the system or device didn’t provide enough entropy when signing.
-
Programming bug: the random generator is re-seeded incorrectly or the same nonce buffer is reused.
-
Incorrect deterministic nonce implementation: RFC6979 is safe when implemented correctly; buggy implementations break safety.
-
Re-using the same private key across apps / chains: one weak environment can compromise all signatures made with that key.
-
Weak key-generation (brainwallets): low-entropy passphrases or predictable key derivation lead to weak keys and weak nonces.
-
Hardware / firmware faults: buggy devices can unintentionally reuse nonces (e.g., after power loss).
Why is this dangerous :
Because the nonce k is the core secret that makes each signature unique. If the same k is used twice with the same private key, the signatures alone (no access to the private key required) may allow an attacker to compute the private key. In short: nonce reuse breaks the security goal of signatures.
What you should do (safety tips) :
- Use well-audited libraries (e.g., secp256k1/OpenSSL) and keep them updated.
- Prefer RFC6979 deterministic signing only via proven implementations.
- Use hardware wallets or HSMs with good security reviews for high-value keys.
- Never reuse a private key across unrelated apps/chains.
- Avoid brainwallets or passwords-as-keys; use proper key generation.
- Monitor signatures: detect repeated r values and act immediately if found.
Requirements :
Python 3.10 or newer
Sufficient free storage space to download transaction data (depends on analysis size)
Internet connection when fetching blockchain data or using APIs
Security Notice :
These tools are designed purely for analysis and research — they do not collect any user data, results, or personal information in any form.
Running the tools with an internet connection is safe, as long as you trust the source.
You can always review the source code yourself to verify what each tool does and ensure it meets your security standards.
Required Python Packages :
The scripts require the following Python libraries:
• requests
$pip install requests
• tqdm
$pip install tqdm
• ecdsa
$pip install ecdsa
How to operate tools + example :
This is a list of addresses that included the r-duplication vulnerability :
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
If you want to check the balances of these addresses, use this script.
$check_adds.py
usage :
$python3 check_adds.py --input adds.txt --output balances.csv
You need to create a file and put addresses in it, for example(adds.txt)
If you have a large number of addresses, you can split the file using this script.
$split.py
usage :
$python3 split.py adds.txt 200
You can change the number of split lines(200) as you want
anyway, Let's choose this address
$1HXSnvNGK8oYQCyLDkpHNZ2sWPvFsYQcFU
1• collecting transactions
Raw transactions containing values and signatures
$fetch_raw_txs.py
This script collects raw transactions from a target address.
usage :
$python3 fetch_raw_txs.py -a 1HXSnvNGK8oYQCyLDkpHNZ2sWPvFsYQcFU --output results.csv --rawtxt rawtxs.txt
$python3 fetch_raw_txs.py -a 1HXSnvNGK8oYQCyLDkpHNZ2sWPvFsYQcFU --output results.csv --rawtxt rawtxs.txt --resume --append
rawtxs.txt is file that contains raw transactions is automatically generated by script
fetch_state.json is state file automatically generated by script
You can use command (--resume --append) To continue collecting transactions where left off
$frt_ultra.py
This script like the first one, but with advanced options.
For example, we have this address
$1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
This address has over 52,000 transactions, and that's a large number, Let's say you only want the 100 oldest transactions
First, you will enter this explorer
$https://bitcoin.atomicwallet.io/address/1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
This explorer allows you to browse all transactions, even if there are many, without loading each transaction into a very long sequence.
Each page contains 25 transactions, You will go to the last page, for example, page 2096
Then calculate the number of transactions you want to collect. For example
100÷25=4
1000÷25=40
10000÷25=400
Then subtract a number of pages from the total number.
2096-40=2056
usage :
$python3 frt_ultra.py -a 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa --start-page 2056 --end-page 2096
$python3 frt_ultra.py -a 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa --start-page 2015 --end-page 2055 --resume --append
(--resume --append) command to continue collecting
2• analyze
Analyzing transactions to extract values used to calculate private key
$analyze_txs_enhanced.py
This is script that analyzes
usage :
$python3 analyze_txs_enhanced.py rawtxs.txt
This script will generate file named "der_full_summary.csv" containing values.
The file size can be so large that it is unreadable (file size depends on the analysis; for example, analyzing many transactions, such as 10,000 transactions, might produce a file size of 10+ GB).
You can use this script
$cut_r2.py
This script should be in the same folder as the csv file.
script will read csv file and extract all the lines in which "r" is repeated.
usage :
$python3 cut_r2.py
Then you can change csv file name to "der_full_summary.csv" to continue working
$compute_z.py
This script calculates z value
usage :
$python3 compute_z.py --input der_full_summary.csv --output der_with_z.csv --fetch-prevouts
The script will create a file named "der_with_z.csv". This file is required to calculate the private key.
Additions :
$ate_ultra.py
This script similar to analysis script, but with additional features such as sorting signatures according to protocol.
usage :
$python3 ate_ultra.py rawtxs.txt
$ext_schnorr_extras.py
This script extracts additional information for Schnorr Protocol
usage :
$python3 ext_schnorr_extras.py rawtxs.txt --fetch-prev
3• computing private key
We will use "der_with_z.csv" file generated by command
$python3 compute_z.py --input der_full_summary.csv --output der_with_z.csv --fetch-prevouts
because it contains all the values required to calculate the private key.
Required values :
repeated r value (r_hex In CSV file)
s value for each signature (s_hex In CSV file) (We need the value of the first and second signatures. If there are more than two signatures, you can switch between them)
z value for each signature (z_mod_n In CSV file) (Value of the first and second signatures)
The values must be integers.
z values (z_mod_n) is already integer
You must convert (r-s1-s2) values from Hex to an integer
You can use this script
$hex_to_number.py
Create file named "hex.txt" and Write values in it, One line for each value
script will convert values and write them to new file.
usage :
$python hex_to_number.py hex.txt
for example (1HXSnvNGK8oYQCyLDkpHNZ2sWPvFsYQcFU)
When analyzing the transactions of this address, we will find four instances (four signatures) of r repetition (one r value - four s value - four z value)
We will use values from the first and second signatures :
repeated r: hex(00cabc3692f1f7ba75a8572dc5d270b35bcc00650534f6e5ecd6338e55355454d5) int(91699739317935258627372771550459504326006289891191381848862551863464593478869)
s1: hex(00f65bfc44435a91814c142a3b8ee288a9183e6a3f012b84545d1fe334ccfac25e) int(111431484914827310314108809136597661506085346855505784425577929088113412063838)
s2: hex(00b584c5e2f26eaac9510307f466d13f8d4e8f57b1323cc4151ff6ffeb6747ca9b) int(82103215168631327946455936234377737221280608082064931975396899914217832303259)
z1: int(70121596733354710270739379126478863332897631323035990573894949033544740983882)
z2: int(42691526897907875236967398205101700537962275948723679969547592971981809076177)
$compute_x.py
This script calculates the private key.
Before running it, you must open it with a text editor and change the values (r-s1-s2-z1-z2) (Do not change n value) (values must be integers)
usage :
$python3 compute_x.py
script will print the results
for example:
s_diff = 29328269746195982367652872902219924284804738773440852450181029173895579760579z_diff = 27430069835446835033771980921377162794935355374312310604347356061562931907705k (decimal) = 12345678k (hex) = 0xbc614ex (decimal) = 36985158630392181731692032973660058930135418234446520253368071243468798761122x (hex) = 0x51c4dba2c28fc89b208550477a514c87f9d0db0354f03b7c61f08c0a0e3118a2verification ok: True
x (hex) is the private key
To convert x(hex) to WIF, use this script.
$wif.py
Create file named "xhex.txt" and place it in the same folder, then write x(hex) values in it
script will read file and produce WIF (compressed / uncompressed) With all possibilities with derivatives for each type of address(p2pkh / p2sh / p2wpkh / p2tr), along with a balance check.
usage :
$python3 wif.py --file xhex.txt --out mywifs.csv
file named "mywifs.csv" will be produced containing the results.
for example:
$5JSJG3nX6z1rsfZ9EZTtbi4qy82TzjGLBpyPzGm7hPRazzrqYzA
This is WIF(uncompressed - p2pkh)to 1HXSnvNGK8oYQCyLDkpHNZ2sWPvFsYQcFU
Additions :
$sc_r.py
This script calculates private key for the schnorr protocol.
usage :
python3 sc_r.py \--Rx 0a1b2c3d4e5f60718293a4b5c6d7e8f90123456789abcdef0123456789abcdef \--Px 1f2e3d4c5b6a79880796a5b4c3d2e1f0a9b8c7d6e5f40123456789abcdef0123 \--s1 0x8a3f1b2c4d5e6f7091a2b3c4d5e6f7089a1b2c3d4e5f60123456789abcdef012 \--m1 "hello world" \--s2 0x7b2e3c4d5f6a7b8091a2b3c4d5e6f70123456789abcdef0123456789abcdef01 \--m2 "other message"
Change the values
It will print the results
For example :
=== Result ===e1 = 108970234477436902694766334568020749912403966361468773267923272186995557531266e2 = 66856546383303793989981220542885447886729718496899420254699013163356773868462s1 = 62530672011108711400438125813195380086512239951027680111811469263325183799314s2 = 55716171531466744293207597776544084512684920955164725164723036609180125228801s_diff (s1-s2 mod n) = 6814500479641967107230528036651295573827318995862954947088432654145058570513e_diff (e1-e2 mod n) = 42113688094133108704785114025135302025674247864569353013224259023638783662804Recovered private key x (decimal): 47206142724068971842463861168325724021122544036124670454439260535612937450174Recovered private key x (hex) : 0x685dbadd6c6726922fd9f2b703c7763b4cb00c7078fea84179664a7c0eb5b2beWIF (mainnet, compressed): KziatDAHb89WXx8xB8uUbAAJ62LpDkGGpbv465vGHfpPzYGcddoQWIF (mainnet, uncompressed): 5JcFUTmhTmDMHXcnaZbzubhd3VrMDQPwngBD2c6iynx9PCyXBC1
Support the Project :
If you find this project useful or it helped you in any way, consider supporting me!
Donate :
BTC
$bc1qtxctgmaxwh73h22h862epj3a7yc3tdl2j45aep