Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: kpurens on August 18, 2022, 06:27:57 PM



Title: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: kpurens on August 18, 2022, 06:27:57 PM
Development on this tool has been paused.


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: casinotester0001 on August 18, 2022, 07:19:03 PM
...
Fantastic work.


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: kpurens on August 18, 2022, 07:28:57 PM
Thanks!


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: casinotester0001 on August 18, 2022, 09:16:39 PM
On Github https://github.com/kpurens/CudaBrainSecp (https://github.com/kpurens/CudaBrainSecp), you say:

In the example diagram an extra calculation Sha256 Transform is done before Secp256k1.
This calculation makes it (nearly) impossible to guess the previous or the next private key.

Why (nearly)?  :)


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: kpurens on August 19, 2022, 04:23:17 AM
On Github https://github.com/kpurens/CudaBrainSecp (https://github.com/kpurens/CudaBrainSecp), you say:

In the example diagram an extra calculation Sha256 Transform is done before Secp256k1.
This calculation makes it (nearly) impossible to guess the previous or the next private key.

Why (nearly)?  :)
If the private key is hashed then the GPU kernel can't simply re-use an existing public key.
Re-using a public key would be ideal, since that would allow doing one point-addition + modular inverse to obtain the next public key.
However since the private key is hashed then there is no way of knowing which is the correct point-addition (which point-addition would result in the next private key that you wish to check).
It is nearly impossible because it would be the same as guessing a 256-bit number (which is technically not impossible).

I should probably make that paragraph more clear and understandable.


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: casinotester0001 on August 19, 2022, 10:20:40 AM
It is nearly impossible because it would be the same as guessing a 256-bit number (which is technically not impossible).
Year 2022:
Satoshi's early mined coins are (nearly) impossible to guess  :)

Year 2122:
?  ::)


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: Cricktor on August 19, 2022, 04:13:57 PM
Yes, better instructions to setup a working build environment are highly appreciated and welcome.


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: kpurens on August 19, 2022, 05:50:45 PM
As for compilation issues - i agree the compilation is not very simple and can result in various unexpected errors, mostly due to the complexity of Cuda / gcc / nvcc.

I have very limited knowledge of Cuda compilation / makefiles, however i did the best i could to describe the compilation process in Quick Setup section, and fully tested the project on two different Nvidia GPUs (Ubuntu 22.04)

I can suggest compiling the Nvidia Cuda sample project (https://github.com/NVIDIA/cuda-samples)

It is an excellent source of information about building cuda projects - and explains many different edge cases.


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on August 19, 2022, 10:27:06 PM
@ETFbitcoin what did you change in the makefile i'm getting lots of commands not found?


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on August 19, 2022, 10:40:10 PM
anyone know which is the correct path to use?

/.
/etc
/etc/nvcc.profile
/usr
/usr/bin
/usr/bin/bin2c
/usr/bin/cuda-memcheck
/usr/bin/cudafe++
/usr/bin/cuobjdump
/usr/bin/fatbinary
/usr/bin/gpu-library-advisor
/usr/bin/nvcc
/usr/bin/nvdisasm
/usr/bin/nvlink
/usr/bin/nvprune
/usr/bin/ptxas
/usr/include
/usr/include/nvvm.h
/usr/lib
/usr/lib/cuda
/usr/lib/cuda/bin
/usr/lib/cuda/include
/usr/lib/cuda/lib64
/usr/lib/cuda/nvvm
/usr/lib/cuda/version.txt
/usr/lib/nvidia-cuda-toolkit
/usr/lib/nvidia-cuda-toolkit/Sanitizer
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer_callbacks.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer_driver_cbid.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer_memory.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer_patching.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer_result.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/include/sanitizer_runtime_cbid.h
/usr/lib/nvidia-cuda-toolkit/Sanitizer/libsanitizer-public.so
/usr/lib/nvidia-cuda-toolkit/bin
/usr/lib/nvidia-cuda-toolkit/bin/cicc
/usr/lib/nvidia-cuda-toolkit/bin/crt
/usr/lib/nvidia-cuda-toolkit/bin/crt/link.stub
/usr/lib/nvidia-cuda-toolkit/bin/crt/prelink.stub
/usr/lib/nvidia-cuda-toolkit/bin/g++
/usr/lib/nvidia-cuda-toolkit/bin/gcc
/usr/lib/nvidia-cuda-toolkit/bin/nvcc
/usr/lib/nvidia-cuda-toolkit/libdevice
/usr/lib/nvidia-cuda-toolkit/libdevice/libdevice.10.bc
/usr/share
/usr/share/doc
/usr/share/doc/nvidia-cuda-toolkit
/usr/share/doc/nvidia-cuda-toolkit/README.Debian.gz
/usr/share/doc/nvidia-cuda-toolkit/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/nvidia-cuda-toolkit
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/cuda-binaries.1.gz
/usr/lib/cuda/nvvm/libdevice
/usr/lib/nvidia-cuda-toolkit/bin/nvcc.profile
/usr/share/doc/nvidia-cuda-toolkit/changelog.Debian.gz
/usr/share/man/man1/cuda-memcheck.1.gz
/usr/share/man/man1/cuobjdump.1.gz
/usr/share/man/man1/nvcc.1.gz
/usr/share/man/man1/nvdisasm.1.gz
/usr/share/man/man1/nvprune.1.gz


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: fxsniper on August 20, 2022, 03:01:10 AM
anyone know which is the correct path to use?


up to your system
mostly

/usr/lib/cuda
/usr/bin/nvcc

you need to config Makefile to correct

know by the search command
whereis cuda
whereis nvcc

the result will tell you the right location of your program


however how to use CudaBrainSecp


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on August 20, 2022, 08:43:20 AM
Thanks fxsniper, in the makefile compute was 86 which is right, I’ve tried changing the cuda path but is there anything else I should change aswell? Cheers


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: kpurens on August 20, 2022, 10:04:50 AM
Quote
however how to use CudaBrainSecp

You use CudaBrainSecp by simply running ./CudaBrainSecp

There are no other commands, so it's very simple - only the configuration file GPUSecp.h

If the test cases are running succesfully then you can replace the test books / hashes with your books / hashes and try recovering your desired keys.

Please look in Real Launch section about how to do it.


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on August 21, 2022, 12:02:23 PM
Has anyone got this up and running I’m having a hard time setting the right cuda paths?


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on August 22, 2022, 08:58:28 AM
Please bare with me as I’m not the most tech savvy.

My setup is windows 11, using windows subsystem Linux and Ubuntu 22

I’ve installed latest nvidia drivers and latest toolkit in Ubuntu

I think when I go to make it it’s not finding the path which is right in the makefile

I’ve read you have to change 2 path environment variables but I’m struggling with it

Can someone help us open, edit and save the editor please

Thanks


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: GR Sasa on August 22, 2022, 11:30:05 AM
can someone who's nice enough to compile Secp256k1 to windows.exe file?

GR,


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on September 12, 2022, 08:45:59 AM
Hello just noticed you paused development on this project how come?


Title: Re: CudaBrainSecp - Secp256k1 Seed Recovery Tool
Post by: lostrelic on September 21, 2022, 01:57:31 PM
Has anyone been using this program?

Im currently using the option modebooks which combines affix(1word)+suffix(1word)

Is there a way to use it by say affix or suffix using 6+words

Does anyone know what this command does in the script?

//Maximum length of each Prime word (+1 because first byte contains word length)
#define MAX_LEN_WORD_PRIME 20

//Maximum length of each Affix word (+1 because first byte contains word length)
#define MAX_LEN_WORD_AFFIX 4

Thanks for any support and advice