When I solved #125 I gave up because it became boring. I thought someone else would solve #130, but nobody did it, so after a year I started again and I spent about two months to solve #130. Yes you can use old DPs to solve next puzzle, it helps a bit. I will try to finish solving #135 in 2025.
Lol, it became boring?! you are saying this as if it was some kind of hobby that you did. It was over $500k and now It's $1m and you got bored ''solving'' and stopped??! Are you billionaire or something? Or are you just the creator of the puzzle that is messing with us lol, this can't be real. Something is fishy here about this person. Not just fishy but VERY fishy. Is this the son of Elon musk or something? We need clarifications from others!!
|
|
|
@RetiredCoder how close are you to solve #135?
|
|
|
I have the feeling that RetiredCoder is the creator of the puzzles himself.
|
|
|
@albert0bsd Can you provide us some of the tools that can be used to search the range since the range is not fixed?
|
|
|
After studying the puzzle I think its not helpful even if the public key did get revealed, I'm not sure. but the ranges are not fix so idk how to solve that
|
|
|
I'm just confused a little bit. The challenge is the solve a 80 bit key which is 20 HEX but the challenge shows a way longer private key than the maximal 64 HEX or 256 bits. Can anyone explain those mystery keys? minKey = 0x659756abf6c17ca70e0000000000000000000140be6ddd93e441f8d4b4a85653b20b4cdcc5c748207a0daa16191d07a425d8080c276f9412472e0429e61bc355 maxKey = 0x659756abf6c17ca70fffffffffffffffffffff40be6ddd93e441f8d4b4a85653b20b4cdcc5c748207a0daa16191d07a425d8080c276f9412472e0429e61bc355
|
|
|
Just curious, So is the solver of #120, #125, #130 the same solvers or#130 is a new guy?
|
|
|
I am assuming, that the creator of the puzzle is very very aware of what is going on here and is between us. I also assume, that puzzle 66 was not solved by anyone, but rather the creator himself did reveal it's private key after it's probably was taken by bots, to see test if bots are actually a threat for solved low-bits puzzles.
So i will not be surprised if we see puzzle 67 also out of no where gets it's private key revealed after sometime by the creator, sooner or later.
Mark my words.
|
|
|
I refuse to think that the coins were taken from a bot, given the fact that the replaced address took place only after like 45 seconds which is very very quick to crack and broadcast to the network.
But what i think that 0.66 BTC were taken by someone unknown since they transacted like 10 mins after
it could be that the winner is the creator himself.
|
|
|
Is anyone else concerned about digaran? Do you think he gave up Bitcointalk forum or just still active from different accounts?
He was last active on 20 January, 2024.
He was most active on this particular thread.
|
|
|
I think @WanderingPhilospher forgot us lol...
Hope he's doing ok
|
|
|
don't know if this would work but have you tried turning them into hex form by that i mean consider those strides as decimal and not hex
Yes, i converted them to Hexadecimal, subtracted 1 because of starting private key, actually no chances i'm not sure what i am doing wrong, i gotta test it more deeply when i get enough time
|
|
|
I have managed to get a "Bot" but it's not a bot i have still to manually give the private key because i didn't know how to extract public key once its in the mempool plus i didn't know how to run Keyhunt or kangaroo after getting public key, sooooo i guess i'll have to be awake lol, i'm so bad I would be happy for any improvement or any opinions if the following script may work? I would like to ask for a small script that extract public key once it's seen on the mempool. I couldn't do it myself sadly. Could anyone help? Thank you! import requests import time from bitcoinlib.transactions import Transaction from bitcoinlib.keys import Key
# Configuration address = '' # The address to monitor new_address = '' # The address to receive the new transaction private_key_wif = '' # Private key for the address that created the original transaction initial_fee = 20000 # Initial fee in satoshis (0.0001 BTC) fee_increment = 35000 # Increment for additional fees in satoshis check_interval = 30 # Interval for checking new transactions in seconds broadcast_interval = 60 # Interval for re-broadcasting transactions in seconds
def check_new_transactions(address): url = f'https://mempool.space/api/address/{address}/txs/chain' try: response = requests.get(url) response.raise_for_status() # Raise an exception for HTTP errors data = response.json() # Print raw data to understand the response structure print(f"API response: {data}") if isinstance(data, list): return data else: print("Unexpected response format.") return [] except requests.exceptions.RequestException as e: print(f"An error occurred while checking transactions: {e}") return []
def get_raw_transaction(txid): url = f'https://mempool.space/api/tx/{txid}/hex' try: response = requests.get(url) response.raise_for_status() return response.text except requests.exceptions.RequestException as e: print(f"An error occurred while getting raw transaction: {e}") return None
def create_replacement_transaction(original_tx_hex, private_key_wif, fee, new_address): try: key = Key.from_wif(private_key_wif) # Use from_wif() to import the key except Exception as e: print(f"Error importing private key: {e}") return None
try: # Load the original transaction tx = Transaction.import_raw(original_tx_hex) total_input_value = sum(input.value for input in tx.inputs) total_output_value = sum(output.value for output in tx.outputs) original_fee = total_input_value - total_output_value
# Calculate the new fee in satoshis new_total_fee = original_fee + fee remaining_value = total_input_value - new_total_fee
# Convert values to integers (satoshis) remaining_value = int(remaining_value) if remaining_value <= 0: print("Not enough funds to cover the new fee.") return None
# Create a new transaction new_tx = Transaction()
# Add all inputs from the original transaction for input in tx.inputs: new_tx.add_input(input.prev_txid, input.output_n, input.value)
# Add a single output to the new address with the remaining value after fee new_tx.add_output(remaining_value, new_address)
# Sign the new transaction new_tx.sign(key)
return new_tx except Exception as e: print(f"Error creating replacement transaction: {e}") return None
def broadcast_transaction(tx_hex): url = 'https://mempool.space/api/tx' headers = {'Content-Type': 'application/json'} data = {'tx': tx_hex} try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() return response.text except requests.exceptions.RequestException as e: print(f"An error occurred while broadcasting transaction: {e}") return None
# Monitor the address for new transactions known_transactions = set() current_fee = initial_fee
while True: print("Checking for new transactions...") transactions = check_new_transactions(address) if transactions: print("Address used in transactions. Retrieving public key...") # Skip public key retrieval if not supported
for tx in transactions: txid = tx['txid'] # Adjust if necessary based on the actual response structure if txid not in known_transactions: print(f"New transaction found: {txid}") raw_tx_hex = get_raw_transaction(txid) if raw_tx_hex: print("Creating and broadcasting replacement transactions with increasing fees...") start_time = time.time() while True: replacement_tx = create_replacement_transaction(raw_tx_hex, private_key_wif, current_fee, new_address) if replacement_tx: replacement_tx_hex = replacement_tx.as_hex() broadcast_response = broadcast_transaction(replacement_tx_hex) print(f"Broadcast response for fee {current_fee}: {broadcast_response}") # Increment the fee for the next transaction current_fee += fee_increment # Check if 60 seconds have passed since the start of broadcasting if time.time() - start_time >= broadcast_interval: break # Exit the loop after 60 seconds else: print("Failed to create replacement transaction.") known_transactions.add(txid) print("Waiting before repeating the process...") time.sleep(check_interval) # Check every 30 seconds
|
|
|
I just came back home after i have gotten shaved multiple times by my boss anyways
@WanderingPhilospher, i am now working to set up a bot. I know i have less chances against Alberto but a try is a try.
Am i already too late to participate or ?
|
|
|
You skeered? LOL. Let's just try it. It's already set up.
Wait at least until we finish work, it's 9:26 am and i am just came into office 20 mins too late and got straight motivated by you, but who cares. Will you move the coins today?
|
|
|
Hello, i tried puzzle factoring and took for testing purposes puzzle 64. 64 | 000000000000000000000000000000000000000000000000F7051F27B09112D4 | 16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN | 03100611c54dfef604163b8358f7b7fac13ce478e02cb224ae16d45526b25d9d4d
Since the private key for #64 is known, i used some websites to get its factor and did a test for puzzle 64. I used the following strides, and surprisingly i don't know the reason why it didn't catch the private key even though i subtract 1 because of the starting private key, still didn't hit.  Possible_Strides_For_Puzzle_64: 124 544615 496846 249 089230 993692 394 391282 406679 788 782564 813358 1183 173847 220037 1577 565129 626716 2366 347694 440074 4732 695388 880148 78068 716480 606301 156137 432961 212602 234206 149441 818903 312274 865922 425204 468412 298883 637806 936824 597767 275612 1 483305 613131 519719 2 966611 226263 039438 4 449916 839394 559157 5 933222 452526 078876 8 899833 678789 118314 None of those strides worked, so i must have did a mistake? Would be nice having your opinions.
|
|
|
My noob bot struggling to see at least balance <= 0 and stuck here..  the same fucking problem i had that it says that the funds are 0 thats why i wasn't be able to broadcast a fooking new transaction. but the real question is and moral of the story: Is puzzle 66 safe? From what i've seen yes. Because the attacker should be aware that he should broadcast a new transaction with higher fee multiple times for a chance for the actual transaction to be replaced.
|
|
|
Congrats if Alberto Won. Clearly he deserved it, along with Nomachine Wanderingidkphotopsia too
|
|
|
fucking hell, i couldn't replace the transaction by any higher fee i got the error saying insufficient fees. wtf
|
|
|
@nomachine
could you please give us a step by step tutorial to run a script to try to drain the bitcoin?
Since it's in 4 hours and since he's doing it live, I would probably try to manually extract the public key and manually try to re send the transaction. But since there are million of transaction how to catch the targeted address?
|
|
|
|