e-ago / bitcracker

BitCracker is the first open source password cracking tool for memory units encrypted with BitLocker

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Another run_tests.sh Password not found!

qbeukes opened this issue · comments

I am using

OS: Ubuntu 19.04
Card: 1080 Ti
Driver Version: 418.56
CUDA Versions: 9.2 and 10.1

bitcracker compiles, but tests are failing with "Password not found". Please assist.

$ cuda-memcheck ./build/bitcracker_cuda -f ./test_hash/imgWin8_user_password.txt -d ./Dictionary/user_passwords.txt -t 1 -b 1 -g 0 -u
========= CUDA-MEMCHECK

---------> BitCracker: BitLocker password cracking tool <---------


====================================
Selected device: GPU GeForce GTX 1080 Ti (ID: 0)
====================================

Compute capability: 6.1
Clock rate: 1632500
Clock rate: 1633 MHz (1.63 GHz)
Memory Clock Rate (KHz): 5505000
Memory Bus Width (bits): 352
Peak Memory Bandwidth (GB/s): 484.440000
Device copy overlap: Enabled
Async memory engine count: 2
Concurrent kernels: 1
Kernel execition timeout: Enabled
Total global mem:  11713052672 bytes
Free memory: 11332616192 bytes
Texture Alignment:  512
Multiprocessor count:  28
Shared mem per mp:  49152
Registers per mp:  65536
Threads in warp:  32
Max threads per block:  1024
Max thread dimensions:  (1024, 1024, 64)
Max grid dimensions:  (2147483647, 65535, 65535)

For this session, BitCracker requires at least 268566528 bytes of memory

====================================
Retrieving Info
====================================

Reading hash file "./test_hash/imgWin8_user_password.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663


====================================
Attack
====================================

Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: ./Dictionary/user_passwords.txt
Strict Check (-s): No
MAC Comparison (-m): No

CUDA Kernel execution:
        Effective passwords: 16
        Passwords Range:
                abcdefshhf
                .....
                blablablablabla
        Time: 6.312177 sec
        Passwords x second:     2.53 pw/sec


================================================
CUDA attack completed
Passwords evaluated: 16
Password not found!
================================================


========= ERROR SUMMARY: 0 errors

Here is my build output

====== Build BitCracker Hash Extractor ======
rm -rf *.o
rm -rf ../build/bitcracker_hash
gcc bitcracker_hash.c -o bitcracker_hash

====== Build BitCracker Recovery Password generator ======
rm -rf *.o
rm -rf ../build/bitcracker_rpgen
gcc bitcracker_rpgen.c -o bitcracker_rpgen

====== Build BitCracker CUDA version ======
rm -rf *.o
rm -rf ../build/bitcracker_cuda
nvcc -gencode arch=compute_61,code=sm_61 -Xptxas -v -o bitcracker_cuda main.cu cuda_attack.cu utils.cu w_blocks.cu -G
ptxas info    : 0 bytes gmem, 12584 bytes cmem[3]
ptxas info    : Function properties for cudaGetDevice
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaFuncGetAttributes
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaDeviceGetAttribute
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaMalloc
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessor
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : 0 bytes gmem, 12584 bytes cmem[3]
ptxas info    : Function properties for _Z7encryptjjjjjjjjjjjjPjS_S_S_
    152 bytes stack frame, 152 bytes spill stores, 176 bytes spill loads
ptxas info    : Function properties for _ZN4dim3C2Ejjj
    24 bytes stack frame, 20 bytes spill stores, 20 bytes spill loads
ptxas info    : Function properties for cudaDeviceGetAttribute
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessor
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Compiling entry function '_Z20decrypt_vmk_with_maciPiPhS0_S0_S0_S0_iiiijjjji' for 'sm_61'
ptxas info    : Function properties for _Z20decrypt_vmk_with_maciPiPhS0_S0_S0_S0_iiiijjjji
    15728 bytes stack frame, 3514 bytes spill stores, 6580 bytes spill loads
ptxas info    : Used 64 registers, 15880 bytes cumulative stack size, 420 bytes cmem[0], 8 bytes cmem[2], 2 textures
ptxas info    : Function properties for cudaMalloc
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Compiling entry function '_Z11decrypt_vmkiPiPhS0_iiiiijjjji' for 'sm_61'
ptxas info    : Function properties for _Z11decrypt_vmkiPiPhS0_iiiiijjjji
    18800 bytes stack frame, 9430 bytes spill stores, 15200 bytes spill loads
ptxas info    : Used 64 registers, 18800 bytes cumulative stack size, 420 bytes cmem[0], 8 bytes cmem[2], 2 textures
ptxas info    : Function properties for __byte_perm
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaGetDevice
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for _ZN4dim3C1Ejjj
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaFuncGetAttributes
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : 0 bytes gmem, 12584 bytes cmem[3]
ptxas info    : Function properties for cudaGetDevice
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaFuncGetAttributes
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaDeviceGetAttribute
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaMalloc
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessor
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : 0 bytes gmem, 12584 bytes cmem[3]
ptxas info    : Function properties for cudaGetDevice
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaFuncGetAttributes
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaDeviceGetAttribute
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Compiling entry function '_Z16w_block_evaluatePhiS_Pj' for 'sm_61'
ptxas info    : Function properties for _Z16w_block_evaluatePhiS_Pj
    64 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Used 21 registers, 64 bytes cumulative stack size, 352 bytes cmem[0]
ptxas info    : Function properties for cudaMalloc
    8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Function properties for cudaOccupancyMaxActiveBlocksPerMultiprocessor
    0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads

====== Build BitCracker OpenCL version ======
rm -rf *.o
rm -rf bitcracker_opencl
gcc -I/usr/include -L/usr/lib64 -L/usr/lib -I/usr/local/cuda/include -L/usr/local/cuda/lib64  -O3  -Wextra -o bitcracker_opencl main.c opencl_attack.c utils.c w_blocks.c -lOpenCL
main.c: In function ‘checkDeviceStatistics’:
main.c:102:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (i = 0; i < platformCount; i++)
                ^
main.c:111:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (j = 0; j < deviceCount; j++)
                ^
main.c:151:37: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘cl_ulong {aka long unsigned int}’ [-Wformat=]
  printf("Max Global Memory Size: %lld\n", maxAllocSize);
                                     ^
main.c:155:43: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘cl_ulong {aka long unsigned int}’ [-Wformat=]
  printf("Max Global Memory Alloc Size: %lld\n", maxAllocSize);
                                           ^
main.c:159:43: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘cl_ulong {aka long unsigned int}’ [-Wformat=]
  printf("Max Const Memory Buffer Size: %lld\n", maxConstBufSize);
                                           ^
opencl_attack.c: In function ‘opencl_attack’:
opencl_attack.c:281:18: warning: ‘d_computeMacIV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ciErr1 = clEnqueueWriteBuffer(cqCommandQueue, d_computeMacIV, CL_TRUE, 0, IV_SIZE*sizeof(char), computeMacIV, 0, NULL, NULL);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
opencl_attack.c:278:18: warning: ‘d_macIV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ciErr1 = clEnqueueWriteBuffer(cqCommandQueue, d_macIV, CL_TRUE, 0, IV_SIZE*sizeof(char), macIV, 0, NULL, NULL);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
utils.c: In function ‘parse_data’:
utils.c:105:2: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
  fgets(hash, INPUT_HASH_SIZE, fphash);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
utils.c:214:3: warning: ‘fphash’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   fclose(fphash);
   ^~~~~~~~~~~~~~
w_blocks.c: In function ‘w_block_precomputed’:
w_blocks.c:160:21: warning: ‘ckKernelWBlocks’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  if(ckKernelWBlocks)clReleaseKernel(ckKernelWBlocks);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
w_blocks.c:161:18: warning: ‘cpProgram’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     if(cpProgram)clReleaseProgram(cpProgram);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~

====== Executables in build directory ======

I recompiled with -G and reran it with the same result

========= CUDA-MEMCHECK

---------> BitCracker: BitLocker password cracking tool <---------


====================================
Selected device: GPU GeForce GTX 1080 Ti (ID: 0)
====================================

Compute capability: 6.1
Clock rate: 1632500
Clock rate: 1633 MHz (1.63 GHz)
Memory Clock Rate (KHz): 5505000
Memory Bus Width (bits): 352
Peak Memory Bandwidth (GB/s): 484.440000
Device copy overlap: Enabled
Async memory engine count: 2
Concurrent kernels: 1
Kernel execition timeout: Enabled
Total global mem:  11713052672 bytes
Free memory: 11296309248 bytes
Texture Alignment:  512
Multiprocessor count:  28
Shared mem per mp:  49152
Registers per mp:  65536
Threads in warp:  32
Max threads per block:  1024
Max thread dimensions:  (1024, 1024, 64)
Max grid dimensions:  (2147483647, 65535, 65535)

For this session, BitCracker requires at least 268566528 bytes of memory

====================================
Retrieving Info
====================================

Reading hash file "./test_hash/imgWin8_user_password.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663


====================================
Attack
====================================

Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: ./Dictionary/user_passwords.txt
Strict Check (-s): No
MAC Comparison (-m): No

CUDA Kernel execution:
        Effective passwords: 16
        Passwords Range:
                abcdefshhf
                .....
                blablablablabla
        Time: 4580.876000 sec
        Passwords x second:     0.00 pw/sec


================================================
CUDA attack completed
Passwords evaluated: 16
Password not found!
================================================


========= ERROR SUMMARY: 0 errors

tests are failing with "Password not found".

So everything seems OK:

  • You're providing a user dictionary,

-d ./Dictionary/user_passwords.txt

  • The dictionary is quite small

Passwords evaluated: 16

  • The dictionary didn't hold the match and no brute-force was attempted

Password not found!
========= ERROR SUMMARY: 0 errors

If one's absolutely sure that the password is within the dictionary and properly typed (e.g., passwords are case-sensitive) and still it refuses do find a match then IMO it would be eligible for an issue. But, again, concrete proof would need to be provided (possibly a link to small image which reproduces the problem) in order to allow any sort of investigation.