For the newbies: You may have heard that Bitcoin works by "solving math problems", but what are the math problems?
Disclaimer: This has probably been covered before, and in more approachable language, so if this explanation is pointless duplication, let me know and I'll delete it. So the math problems in Bitcoin aren't your traditional math: your computer isn't solving algebra problems or partial differentials. They involve cryptographic hashes: you might've come across these when you download a file, where the website says "here's the file, and here's a hash you can use to verify that the file downloaded properly". So your process of verification would be:
Download -> Hash(Downloaded File) -> Is Hash The Same?
Say you downloaded a copy of Audacity for OSX, and the site says "the MD5 hash for audacity-macosx-ub-2.1.2.dmg is 535e103d9bc4a4625d71260c3a427d09 if you want to check it downloaded properly". So you download the file, head to your command prompt, and:
Hey, it's the same. Now, hashes work by taking all the numbers in the file and Doing Something to them; the simplest would, of course, be the checksum: add all the numbers together. One big problem with checksumming though: if you add 1 to a number somewhere in the file, and subtract 1 elsewhere, you get a corrupted file with the same checksum. Not ideal. So algorithms like MD5, SHA-1 and the like arose, which do more complicated things. The number that falls out of these is quite large: MD5, for example, outputs a 128-bit number (the biggest value is something like 80 quintillion quintillion) but it's not the absolute value of the number that's important, just the fact that it's the same as what the website says it should be. Aside: "But if the hash is just a huge number, why does it have those weird letters in?" It's just written in hexadecimal (base 16) instead of base 10. In your average decimal base-10 number, the digits are 0-9 and the number values go units, tens, hundreds, thousands, etc. In base 16, the digits are 0-9 then a-f (ten to fifteen), and the number values go units, sixteens, two-hundred-and-fifty-sixes, four-thousand-and-ninety-sixes, etc. Now. Bitcoin uses this same technology (it uses the SHA-256 algorithm in particular) to hash the contents of each block of transactions that comes through. It looks a little like this:
Hash of the last block -----\ | Hash of the transactions --+ SHA256 -> This block's hash in this block | (twice) | Current time ----------/
And thus the block chain gets built: "this block's hash" falls out of the above algorithm, and gets fed into the algorithm for the next block. Except SHA-256 doesn't take long to compute; a cellphone can do literally millions of these hashes per second. Here's where the genius of Bitcoin comes in: there's an artificial limit placed by the algorithm on how fast blocks can be generated, and it doesn't matter how fast your computer (or the whole network of computers) is at generating these hashes. It works by adding one thing to the above diagram:
Hash of the last block -----\ | Hash of the transactions --+ SHA256 -> This block's hash in this block | (twice) | Current time ----------+ | A number to twiddle -------/
(The technical literature actually calls it a "nonce".) I said above that the numeric value of the hash isn't important when you download a file, just the fact that it matches what the website says it should be. In Bitcoin, the numeric value of the hash is important: it needs to be less than a certain value (the "target") for the block you make to be accepted by the network. For example, (as of the time of writing) the last block had a hash of 000000000000000001ef62f299ea93356f4d52c75ff3cc442b4a073e90f947e0; look at all those zeros at the front! SHA-256 is very good at making an even distribution of its numeric value: futz with the content of what you're hashing even a tiny bit, and the number that falls out is vastly different. So, you need to do a lot of twiddling of that nonce, to find a block where the hash comes out with all those zeros at the front. In fact, you need to do so much twiddling that, on average, the entire network of computers doing this will only find one solution to the problem every ten minutes. That solution gets broadcast to the network, the other computers will plug it in as "the hash of the last block", and keep going. One more question you might have: what happens when computers suddenly get a lot faster at doing these calculations, and they can rattle their way to a solution in a minute, or 30 seconds? Bitcoin has a solution: change the target, to make it even lower. This is referred to as a "change in difficulty", and happens around every two weeks if the blocks come out every ten minutes (every 2,016 blocks). If the blocks come out faster, the difficulty changes sooner, and changes by more, to get things back on the ten-minutes-per-block track. Conversely, if computers suddenly get very slow at doing this work and blocks only come out once an hour, the difficulty will change to make life easier. (Again, it'll only change every 2,016 blocks, so it might take a while to build the chain up to that point; until then, we'd have to suffer with slow blocks.) So, I hope this was useful, and that it was accurate. It helped to clarify things in my mind, at least; let me know if it helped (and if I missed anything).
Could I reasonably attempt to brute force the password to an old TrueCrypt volume of mine?
I had $20-30 worth of bitcoin back in 2013 when mining first exploded, where the price was about $1000 per Bitcoin. So, given the recent explosion in Bitcoin price it got me thinking about trying to find my old Bitcoin wallet and see if it has anything left in it. I found my old hard drive and plugged it into my computer to copy the files over. While I had labeled the drive "ALMOST DEAD" and it regularly made clicking sounds while plugged in, I managed to copy over my Documents folder from it. On there I found my Bitcoin folder, with a 16GB copy of the blockchain (oh, how times have changed...) and a "wallet.dat" file. Awesome! Trying to import it into BitPay brought me to a new issue; I don't remember the password! I tried all of the possibilities that came to my head, and none of them seemed to work. I poked around a little folder in my old files and found an encrypted TrueCrypt volume. At the time I did like to save my important passwords that I couldn't change in text files, and store those in a TC volume. So there's a reasonable chance that volume contains my wallet decryption password. So here's my question; would it be futile to set my computer loose on that volume and try to brute force the password? My knowledge of security at the time wasn't great so I think it's reasonably likely that the volume was encrypted with an 8 character password, maybe a 10 character password, that was just alphanumeric. I know that for cracking an MD5 hash that would be a hilariously easy crack, but for a proper hashing strategy, like bcrypt with a cost of 12, that becomes a serious issue very quickly, because calculating one hash takes a long time. I don't know whether there is a "hash" function to calculate for trying a password on a TC volume. The volume is 100MB; how long would it take to try one password on that? My computer has a GTX 1070 and i7-6700k with 16GB of RAM; does that help me here? If I can, what tool would I use to automatically try all of the combinations, or is there a simple script I should write? Also, would it be better to try to crack the password to the Bitcoin wallet directly? I'm assuming not. TL;DR: Cracking a 100MB TrueCrypt volume, with a GTX 1070, i7-6700k, and 16GB of RAM, most likely a 8-10 character alphanumeric password. Can I do this? If so, what tool/scripts should I use to implement it? Thanks!
MultiHasher is a free file hash calculator that supports hash algorithms such as CRC32, MD5, RIPEMD-160, SHA-1, SHA-256, SHA-384, SHA-512. HashCalc. Download. 3.5 on 13 votes . Free calculator to compute multiple hashes, checksums and HMACs for files, text and hex strings. Similar choice › Download hash animation master › Download brute force hash attacker › Brute force hash attacker ... While there are JS implementations of the MD5 algorithm, older browsers are generally unable to read files from the local filesystem.. I wrote that in 2009. So what about new browsers? With a browser that supports the FileAPI, you *can * read the contents of a file - the user has to have selected it, either with an <input> element or drag-and-drop. As of Jan 2013, here's how the major browsers ... Online Hash Calculator. Online Hash Calculator lets you calculate the cryptographic hash value of a string or file. Multiple hashing algorithms are supported including MD5, SHA1, SHA2, CRC32 and many other algorithms. This is html5 file hash online calculator, which supports an unlimited number of files and unlimited file size. Your files are not transferred to the server. hash unhash md5 decrypt sha1 decrypt sha256 decrypt hash decrypt hash decoder decrypt hash decode hash hash decode sha512 decrypt md5 decode md5 reverse hash decrypter decrypt md5 hash to text reverse hash md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128 tiger160 tiger192 tiger128,3 tiger160,3 tiger160,3_php tiger192,3 tiger128,4 tiger160 ...
Security Testing Hashes: MD5 SHA 256 and other Hashing and Lookup
It also has a simply lookup form, taking an MD5 hash and performing a SQL query in the db to look for a match and return the plain text word. This could be useful for testing your team's passwords ... MD5 Hash Tutorial - What the MD5 hash means and how to use it to verify file integrity. - Duration: 5:45. Sean Browne 157,202 views Bitcoin Hash Calculator use to calculate the profitability of Bitcoin and the tool to find good return bitcoin miners to buy. You can easily calculate how many Bitcoins mines with your hash rates ... https://download.cnet.com/MD5-SHA-Checksum-Utility/3000-2092_4-10911445.html MD5 & SHA Checksum Utility is a standalone freeware that can generate MD5, SHA-1... Source Code: http://goo.gl/XJG13 In this tutorial, I show you how to create a Windows Forms application that computes the MD5 hash sum of a file AND updates ...