Bitcoin Forum
May 25, 2024, 11:22:28 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 »
141  Bitcoin / Development & Technical Discussion / Re: Bruteforce partial electrum seed words on: February 09, 2021, 04:32:27 AM
I don't see an option to use them in FinderOuter, any idea?
The option is found under "Missing mnemonic" and you have to select the "Electrum" type from the second drop  down on the right, then select the wallet type that Electrum was using from the drop down that appears after that. Make sure to enter the correct BIP32 path. Example 6 and 7 are Electrum mnemonics missing 1 and 2 words respectively.


A couple of points:
* Electrum mnemonics are 12 words by default
* You have to know the position of the missing word. But if it is only 1 word you can manually change the position from start to end and click Find 12 times, it should all take 12 seconds.
* You have to know a derived child from that wallet (it can be a child private key, public key or an address)
* Setting the path correctly is very important. When setting the wallet type (Electrum mnemonic type) FinderOuter automatically sets the correct path for that type but you have to enter the index of the child key you entered (eg. if you entered the 10th address you have to add 9 to the end of the path)
142  Bitcoin / Development & Technical Discussion / Re: Using Kangaroo for WIF solving on: February 08, 2021, 03:57:14 PM
Not bad, no?  Wink 10 missing WIF characters - Less than 11 minutes on old CPU. GPU performance - to be seen.
That's fantastic. I'll have to go back to check Pollard's kangaroo algorithm again.
143  Bitcoin / Development & Technical Discussion / Re: Using Kangaroo for WIF solving on: February 08, 2021, 02:47:27 PM
Interesting approach but what's the speed of something like this?

And how does it perform compared to the simple approach of decoding and computing checksum that only computes SHA256?
For example it takes me 3.5 min to check the entire 656 million keys in your first example using checksum (answer is found after 1.1 min) and it is faster if the key was compressed (KwQ4QV73DpTafe_____MfTTgNH2z78JVPqEegga2ovWATXzDVu6U) only 25 seconds.
144  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.7.0 2021-02-02) on: February 07, 2021, 09:42:07 AM
thanks a lot for another greater release.
You're welcome.

i have a question, could you make it search in a specific bit range=x
If you mean something similar to the "puzzle solving" projects where they go from 2n to 2n+1 to find the private key to an address/pubkey then I don't think I'll ever add such an option to FinderOuter since the purpose of this tool is to help users recover their coins not to solve puzzles.
But in some ways FinderOuter is essentially doing the same thing (although it needs more optimization), each option with a missing base58, base16 or mnemonic is searching within a fixed range.

I also have a plan to let the user limit the search space if that's what you meant. For example in mnemonic recovery user would be able to set a smaller range of words (like 5) to set in place of a particular missing word instead of using the entire 2048 words. This requires some major refactor so I'm putting it off for now.
145  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.7.0 2021-02-02) on: February 02, 2021, 02:10:26 AM
Version 0.7.0 is released.
https://github.com/Coding-Enthusiast/FinderOuter/releases/tag/v0.7.0.0
See changelog for details.
  • General user interface improvements
  • AvaloniaUI is updated to version 0.10
  • Progressbar now shows the progress percentage
  • A warning is added to MainWindow to inform those who build from source and forget to use -release (ie. if they run FinderOuter in Debug mode by mistake)
  • Menu (help and about windows) is removed
  • Examples are improved, some new ones are added and the button is now showing the count and current example index
  • Recovery option descriptions are slightly improved
  • Fixed a bug in mnemonic recovery option when user entered a mnemonic with no missing words


FinderOuter is 1 year old
146  Bitcoin / Development & Technical Discussion / Re: Damaged paper wallet - Help!! on: January 22, 2021, 01:28:01 PM
I'm not exactly sure how Bitaddress used to generate them but I presume they are not salted.
Single SHA256 of the passphrase while enforcing a minimum 15 character length passphrase.
https://github.com/pointbiz/bitaddress.org/blob/72aefc03e0d150c52780294927d95262b711f602/src/ninja.detailwallet.js#L58-L62

It is insecure so if OP has some idea about the passphrase they used there could be a chance to brute force it rather easily.
147  Bitcoin / Development & Technical Discussion / Re: Some question about OP_RETURN on: January 21, 2021, 04:35:44 PM
How it's possible if it's 0 bytes (which means we don't specify the size of the data)? Are there any example?
Each data (byte array) that is to be pushed to the stack (in the scripts) is preceded by its length. For example if you want to push bytes {1,2,3} the script you use the length that is 3 followed by those bytes: 0x03010203.
If the the data can be converted to one of the predefined constants then that constant should (in context of standard rules not consensus rules) be used instead.
For example if you want to push {5} then we have a constant for it called OP_5 which should be used instead. Meaning instead of using 0x0105 we use 0x55 (which is equal to OP_5). That way there is no push length anymore since another OP code was used.
148  Bitcoin / Development & Technical Discussion / Re: Some question about OP_RETURN on: January 20, 2021, 07:58:20 PM
How did the protocol end up defining more opcodes that have successively larger bytes limits?
AFAIK these OP codes existed from the beginning and weren't added later. In fact there are a couple of ways that bitcoin encodes numbers (CompactInts for instance) and they all support huge values.

Quote
it would have been less work to simply define OP_PUSHDATA4 and it's 64K+ bytes support when the desire for larger amounts of arbitrary data in scripts became known.
It is "cleaner" to have all data push OPs in one place without any space between them. If we wanted to add that in the future it would have been >= 0xba instead of right after 0x4d (OP_PushData2). Besides we already have 70 free unassigned OPs (from 256 possible ones in one byte) with a bunch of NOPs and some removed/disabled OPs so assigning a never used OP code such as OP_PushData4 is not really a big deal.
149  Bitcoin / Development & Technical Discussion / Re: Some question about OP_RETURN on: January 20, 2021, 05:41:36 PM
So 2 bytes indicate the size of the data?
It is "up to" 2 bytes. It can be 0, 1 or 2.
For example it could be OP_Return OP_2 (which passes IsPushOnly()).

Quote
Do i need to specify OP_PUSHDATA on these 2 bytes?
All data has to be pushed with its appropriate size byte(s).
* Any bytes that can translate to a number should use OP_number ({0} should use OP_0 instead of 0x0100, {16} should use OP_16 instead of 0x0110)
* Any bytes with lengths smaller than 0x4c (76) is pushed with 1 byte equal to the size (byte[10] -> 10 + byte[10]; byte[70] -> 70 + byte[70])
* Any bytes bigger than or equal to 0x4c is pushed by using 0x4c (ie. OP_PUSHDATA) followed by the length followed by the data (byte[80] -> OP_PUSHDATA + 80 + byte[80])
* Any bytes with length bigger than 255 uses 0x4d (OP_PUSHDATA2)
* Any bytes with length bigger than 65535 (0xffff) uses 0x4e (OP_PUSHDATA4)

Quote
Code:
6A          # OP_RETURN code
04          # Size of the data in byte?
32 30 32 31 # the data
This is the correct one.
Data length is 4 bytes and 4 is smaller than 76 so 0x04 is used as length followed by the data itself.

As for converting "2021" string to bytes, bitcoin doesn't care what is used, UTF8, ASCII, Unicode,... it is up to the extra protocol (like the side chain) or the user's preference to decide. For instance you could use Unicode and convert emojis to a byte stream that you push after OP_Return.

Basically as impossible as sending bitcoin through 0-conf transaction, that means anyone who make transaction with multiple OP_RETURN or OP_RETURN where the data is more than 80 bytes must contact pool/miner and hope they agree to include your transaction.
Yes.

Quote
I just remember there are variation of UTF-8 from 1 to 4 bytes, do you mean 1 byte UTF-8?
I don't know much about UTF-8 but I don't think there is such thing as "1 byte UTF-8".
AFAIK the way this encoding works is that you read one byte at a time and decide based on that byte how many more bytes you need to create the first character.
For example if the first byte is 0xxxxxxx (in binary where 0 is zero and x can be 1 or 0) then that byte is the character itself.
If the first byte is 110xxxxx (in binary) then you have to read another byte and the two bytes represent the character (the second byte also has to use 10xxxxxx format).
Similarly 1110xxxx for 3 bytes and 11110xxx for 4.
That means you can end up reading 4 bytes from the stream to be able to represent 1 character (0xF0, 0x90, 0x8D, 0x88 -> 𐍈 Hwair since the binary is 11110000 10010000 10001101 10001000)
You can check the Wikipedia link https://en.wikipedia.org/wiki/UTF-8#Encoding

Or here is the .net source code in C# where it converts the bytes to string when it can't be mapped 1 byte to ASCII chars: https://source.dot.net/#System.Private.CoreLib/Utf8Utility.Validation.cs,250
150  Bitcoin / Development & Technical Discussion / Re: Some question about OP_RETURN on: January 19, 2021, 02:09:57 PM
2&3. Size limit is a standard rule and it is 83 bytes. 80 bytes of data, 1 byte the OP_Return itself and 2 bytes for push data byte(s).
https://github.com/bitcoin/bitcoin/blob/bd6af53e1f8ec9d25cedf0bf36c98b99a8d88774/src/script/standard.h#L96-L99
There is no limit in the protocol for output script size or even validity including OP_Return outputs. Here is a transaction on testnet with 93 byte OP_Return e598de457ebda1638730062efddd9a45d2bc14efb20a5acc83771eed0799f3f59
Here is another one with 542 byte size 7d2922f0b0ee315e7fd0a5f2ba702ee7bfc613cca3dd23cebe52c5aa45609d6c
And another one with 10004 byte size 9b333e6043490472f8e4351008acdd3d16ffce7a90043dc9ebcf1b1739a7cc20
(I have more test vectors with invalid scripts if you're interested)

4. As far as the protocol is concerned you can include as many OP_Returns as you like since they are just output scripts and there is no limit on txout count (except the block size).
As far as standard rules are concerned any transaction (obviously except coinbase) is limited to only one NULL_DATA aka OP_Return output.
https://github.com/bitcoin/bitcoin/blob/4a540683ec40393d6369da1a9e02e45614db936d/src/policy/policy.cpp#L132-L136

6. It depends on the block explorer, but I usually see them use UTF8.
151  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 19, 2021, 11:41:05 AM
Does it work with Wallet.dat ?
No.

Quote
i have a wallet.dat and btc never arrived to it...
That is not a problem that a "recovery tool" can solve.
152  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 18, 2021, 07:37:47 PM
Does it skip non-valid checksum mnemonics?
Of course it does. Example for 24 words

On electrum it takes much less time than on BIP39. Why does that happen?
It is because the slowest part of the code is SetBip32(...) method and it is only called when the checksum of the created mnemonic is valid. When we call it less times, the speed is going to be a lot higher.
The number of times checksum is valid depends on the size of the checksum, the bigger it is the less collision occurs and SetBip32() is called less times.
A 12-words BIP39 mnemonic only has a 4-bit checksum while a 12-word Electrum mnemonic has at least 8 bits of checksum (8 bits for standard type, 12 bits for other types).

Back to our 5th example
Code:
duck firm october practice soccer * result regret unveil * uncle ginger
child private key: L5fdNeFhX5Kgqnmbn6urPVt77eUocpbCF9f2ScEMu2HZwiFL3Viw
path m/0'/ (has to be the same for all for time comparison)
index: 1' (in order to make it fail and search the whole space in all cases)
(no passphrase)
                   SetBip32() call count         time
BIP39                    261,774                00:02:44
Electrum-Standard         16,464                00:00:12
Electrum-SegWit            1,064                00:00:02
Electrum-Legacy2FA         1,057                00:00:02
Electrum-SegWit2FA         1,015                00:00:02

The reason why the last 3 numbers are slightly different despite having the same checksum size is based on luck.

Another question, are there wallets that generate non-valid checksum mnemonics?
Not that I know of.
153  Bitcoin / Bitcoin Technical Support / Re: 11/12 words seed, Any1 can please hepl me on: January 14, 2021, 03:31:19 PM
There are too many unknowns here. You have to try and narrow it down.
For example when you say "years ago" how long are we talking about? Was it before 2017 or after? Coming up with a year could eliminate certain BIPs (derivation paths, address types,...).
Could you remember anything about the wallet you used to create these words? Best thing would be the name of it but the type could also be helpful, a phone/desktop wallet or though some website, a web wallet like blockchain.info or some custodial web wallet? Because the words you have may not even be a mnemonic.
154  Bitcoin / Project Development / Re: [C#][Github] SharpPusher, broadcast BTC, BCC(BCH) transactions to the network on: January 13, 2021, 09:23:53 AM
ShartPusher
LOL!

can be really helpful if you combine it with the transaction tool. The user will sign the transaction within the program and then he'll broadcast it to the network without any wallet.
I've been trying to absorb all my old projects into two new projects which I started in 2020 but it's been a lot slower than I anticipated, mostly because I keep working on other parts and keep postponing it.
There is an open issue about it on both projects: https://github.com/Coding-Enthusiast/SharpPusher/issues/3

How can this be done? Will you have a list of nodes saved on a drop down? Also, what are the steps of broadcasting a transaction to the bitcoin network? I never found out, but I now want to. Do you firstly create a handshake with a node, send information and then it repeats with the rest of the nodes?
I believe I told you about the "MinimalClient" in Bitcoin.Net. It will be used for doing stuff like this. It will connect to a random full node the same way any other full node finds and connects to other nodes (DNS seeds or the local database it creates for subsequent connections) then it will perform the handshake and sends the tx message. There is no need to do it with more than one node but it is possible.
155  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 08, 2021, 10:04:57 AM
I believe your CPU is slower than mine but the main reason is that you are adding bottlenecks that are significantly slowing down the application.
First and biggest one is that you are running it in Debug mode which doesn't have a lot of the optimization. Switch to Released mode and you will experience a much faster run.

Additionally when you run any application through V.S. it automatically attaches a debugger that will consume some CPU power and can slightly slow down the application.
If you want to run it without V.S. then you either have to install .net or publish the application. Here is a walk-through: https://docs.microsoft.com/en-us/dotnet/core/tutorials/publishing-with-visual-studio
156  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 08, 2021, 09:33:22 AM
It most likely going to take more than 2 hours. I don't get why it only takes you 3 minutes to do that on BIP39. (On electrum it takes a minute to me)
Is your CPU older than mine? Or are you running FinderOuter in some sandbox/virtual machine that could limiting the CPU usage?

If in example 5 I switch BIP39 to Electrum and change the path from m/0 back to m/0' then it only takes 11 seconds to check all combinations.
157  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 08, 2021, 05:55:48 AM
I've noticed that this works only if you've chosen "Electrum". This is what happens on BIP39:
Whenever there is an "additional info" textbox in any of the recovery options, the result is always checked against that and the loop will break as soon as the comparison was successful.

Quote
What? Why should this be true? Am I missing anything? Besides, I tried it and it goes terribly slow, just like before.
Each depth adds another round of HMACSHA512 and some small math for all index types, but also adds another EC point multiplication if the index wasn't hardened.
For example m/0 only performs one additional EC mult and one HMACSHA512 compared to m/0/0/0/0 which has to perform 4 which makes it 4 times slower.

Have you tried the 5th example? Just click on Example button 5 times, and it should only take a minute to solve.
158  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 07, 2021, 05:43:33 PM
I must have a really slow PC.
Sorry I should have asked about your path first, BIP39 recovery speed depends a lot on the path, doubly so in my code that has a known issue with ECC.
Generally speaking the shorter your path is (eg. m/0 vs m/0/0/0/0) the faster the recovery.
The more hardened indexes the path has (eg. m/0'/0'/0'/0' vs m/0/0/0/0) the faster the recovery.
Additionally when the path is using hardened indexes it avoids the issue in FinderOuter so the speed goes up by a lot and it can also use the all CPU cores.

To compare your PC speed with mine in the most optimal case check out the fifth example. On my corei3 CPU it barely takes 3 min (0:02:40) to check the 4.1 million cases.
https://imgur.com/a/uRHbDef
159  Bitcoin / Project Development / Re: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24) on: January 07, 2021, 03:22:46 PM
Is FinderOuter available for console only? I believe that it would go faster.
No. UI isn't consuming that much CPU power, it is just a thread that will be updated every now and then.

Quote
Also question, can I run it with my gpu?
Not yet.

Quote
I'm brute forcing an mnemonic with 10 words and it has to search among 4.1 million mnemonics. I left it all night, it seems to be in the middle.
10 words out of how many? 2 missing out of 12 takes only an hour on my old PC, having 10 out of more like 24 is impossible to brute force.

Quote
Edit: Another question, does it searches until it finds the correct mnemonic or does it try all the possible combinations first? As I said I've reached the middle and I want to know if my chances are getting smaller.
It will stop as soon as it finds the correct combination of words and prints the result.
160  Bitcoin / Development & Technical Discussion / How many blocks can/should I request from a node at one time? on: January 07, 2021, 07:37:59 AM
As far as I can tell the only way to download blocks from another peer is through using getdata messages (is there any other messages?) which have a limit of 50000 items; but there is also MAX_BLOCKS_IN_TRANSIT_PER_PEER (=16) which I'm not sure what it's used for.

My getdata requests with 17 inventories are ignored sometimes which has left me confused. I'm not sure if it is the limit on number of blocks I can request or if it is fPauseSend which will then erase the m_getdata_requests completely here which means the request is ignored entirely.
Pages: « 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!