World Fastest MD5 cracker BarsWF

UPDATE: I've decided to cease development of BarsWF, sources are available under MIT license.

Ok, we have a nice name for the program, so I will have to spend some time to make it work as it is named. Right now on nVidia 9600GT/C2D 3Ghz CUDA version does 350 M keys/sec, SSE2 version does 108 M keys/sec. You may check benchmarks of all known good MD5 bruteforcers here. You may discuss it at forum

System Requirements:

  • CUDA version only:nVidia GeForce 8xxx and up, at least 256mb of video memory.
  • LATEST nVidia-driver with CUDA support.Standard drivers might be a bit older (as CUDA 2.0 is still beta)

  • AMD/Brook version only: ATi/AMD card 2xxx, 3xxx, 4xxx
  • 8.12 video driver

  • CPU with SSE2 support (P4, Core2Duo, Athlon64, Sempron64, Phenom).
  • Recommended 64-bit OS (WinXP 64 or Vista64). 32-bit version is also available.

Download 0.8 version

AMD BROOK Beta 0.9:
BarsWF Brook x64
BarsWF Brook x32

BarsWF CUDA x64
BarsWF CUDA x32

BarsWF SSE x64
BarsWF SSE x32


3 August 2009 Just few days since name poll Now it's time to start submitting hashes
13 October 2008 Distributed project name pool have been just started. You may need to register at our forum :-)
12 October 2008 Supercomputer development is in progress, unfortunately my AMD card is still on the road to by computer
6 October 2008 I invite everyone to take part in discussion about distributed supercomputer based in BarsWF
1 October 2008 Future of BarsWF 1.0
0.8 was last minor update of BarsWF. Next major update will (if I would be lucky) feature new computing platform, with long awaited salts/multihash support, more hashing algorithms. Also, it will be oriented for distributed computing. Client/Server side is being developed & tested right now So get Ready Also AMD Radeon 4870 card is on the way to my computer(1.5 weeks left I hope), which means that probably everything will support AMD cards too

1 October 2008: 0.8 version was released:
  • Added checks for errors when calling CUDA kernel.
  • Now you can specify custom characters for charset using -X switch.
  • You may specify minimal password length using -min_len.
  • Save/restore feature added. State is being stored to every 5 minutes or on exit. You may continue computation using -r switch. You may manually edit .save file to distribute job on several computers (but this is up to you - it is quite simple and non-documented ). BarsWF will also write found password into at the end.
  • Improved speed for cards GTX260, GTX280, 8800GT, 9600GSO, 8800GS, 8800GTS - by approximately 10%, all other cards will get just 1-2%.

Example:[code]BarsWF_SSE2_x64.exe -h 21685d282d79098b89bdf5a916b66c90 -X "030405313233" -min_len 12[/code]
New commands:[code] -r Continue previous work from BarsWF updates it every 5 minutes or on exit
-X "0D0A00" Add custom characters in hex to charset.
-min_len 3 Minimal password length. Default 0. MAX 15!!! :-][/code]
25 September 2008: Not exactly 20th, but at least it is still September
  • UI bugs fixed caused by screen update from several threads
  • Terrible UI colors are fixed
  • More "average" average speed calculation
  • cudart.dll is bundled, but not sure if they are correct (32 and 64 bit ones have the same name). So let me know if CUDA version will work, or will not work
  • Dialog mode exterminated. Everything now is being set via command line options.

Example:[code]BarsWF_SSE2_x32.exe -h 21685d282d79098b89bdf5a916b66c90 -c 0aA~[/code]
Supported command-line options:[code] -? Prints this help
-h 21685d282d79098b89bdf5a916b66c90 Set hash to attack
-c 0aA~ Set charset. 0 - digits, a - small chars, A - capitals, ~ - special symbols
(special symbols are ~`'!@#$%^&*()_+=- /?.,\|").
-C "abc23#" Add custom characters to charset.

-thread_n 128 | Might increase speed on GTX260 and later.
-grid_n 128 | Try 192, 256 for both

-gpu_time 1500 How long GPU kernel allowed to work, in milliseconds. 1500 - a bit faster, 50 - a bit slower,
but windows is more responsive. Default 500.[/code]
2 September 2008: Release of version 0.7 is expected 20-th of September, after my return from Army :-)
24 July 2008: Finally I have released SSE2 version. It works even better than my expectations :-)
21 July 2008: While upgrading to CUDA SDK 2b2 I was lucky enough to loose sources of 0.2 version. God bless I had 0.2 in archive (That was quite random luck).
19 July 2008: I was thinking that optimization is over...I was wrong, +28% speed for CUDA core, +34% for CPU core. I really didn't expected that :-)

History of optimization of CPU core

I was tracking my progress while writing & optimizing CPU core, so here is what I've got:

Frankly speaking I was hoping to archive speed 5% faster than MDCrack. I did knew it is optimized for SSE, so I was very surprised that I was able to win with such a margin.

January 1, 2000