This document explains how to get nsec3breaker running. The hardest part is to install the necessary software frameworks for OpenCL computation with Python. We have successfully tested nsec3breaker on Linux and Windows with CPU and GPU computation. 1. OpenCL 1.1 GPU 1.2 CPU 2. Python and Packages 2.1 Linux 2.2 Windows 3. nsec3breaker 4. Distributed Computing 5. Contact 1. OpenCL --------- 1.1 GPU Install the newest graphics card driver software. All newer GPUs from AMD/ATI and NVIDIA support OpenCL. If unsure whether your GPU supports OpenCL, check if the Bitcoin community got it running for Bitcoin mining: https://en.bitcoin.it/wiki/Mining_hardware_comparison 1.2 CPU For CPU-based OpenCL computation install the AMD Accelerated Parallel Processing (APP) SDK (works on Intel, too): http://developer.amd.com/tools/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/ Make sure the environment variable AMDAPPSDKROOT points to the APP SDK installation directory (e.g. on Windows 'C:\Program Files (x86)\AMD APP\'). AMD seems to have removed the CPU runtime from the APP SDK v2.8.1 and higher. If the newest APP SDK version does not work for you, install v2.8. Intel releases its own OpenCL SDK which we haven't tested yet: http://software.intel.com/en-us/vcsource/tools/opencl 2. Python and Packages ---------------------- We are using Python 2.7 with the following extra packages: - dnspython - numpy - pyopencl - pytools 2.1 Linux Debian (-ish): apt-get install python-dnspython python-numpy python-pyopencl python-pytools 2.2 Windows Do not mix 32 and 64 Bit packages. In case of of mix-up the installers of Numpy and pyopencl will be unable to locate the Python installation path. - Download and install Python 2.7.6 (or a newer 2.x.y version) from python.org - 32 Bit: http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi - 64 Bit: http://www.python.org/ftp/python/2.7.3/python-2.7.3.amd64.msi - Do not change default installation path c:\python27. Spaces in the path ("Program Files") can lead to errors with some Python packages. - If not done already by the installer, add c:\python27 to environment variable PATH in Control Panel -> System -> Advanced System Settings -> Environment Variables - Download and install Numpy 1.8.1 (or newer) - 32 Bit: http://sourceforge.net/projects/numpy - Download link: http://sourceforge.net/projects/numpy/files/latest/download - 64 Bit: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy - Download and install pyopencl 2013.2 (or newer) - 32 and 64 Bit: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl - Download setuptools 3.6 (or newer) - 32 and 64 Bit: https://pypi.python.org/pypi/setuptools - Unpack and install with "python setup.py install" - Download pytools 2014.1.2 (or newer) - 32 and 64 Bit: http://pypi.python.org/pypi/pytools - Unpack and install with "python setup.py install" If you have an NVIDIA GPU and you get the following error "ImportError: DLL load failed: The specified procedure could not be found.", then you need to install the Intel CPU-only OpenCL runtime (yes, to make your NVIDIA *GPU* work): https://software.intel.com/en-us/vcsource/tools/opencl-sdk 3. Set up nsec3breaker ---------------------- Determine OpenCL configuration: python nsec3breaker.py optimal 1 0 If OpenCL crashes or your desktop computer becomes unresponsive, try these more conservative values: python nsec3breaker.py optimal 0.15 0 python nsec3breaker.py optimal 0.15 0.01 The first numerical value is the CHUNKTIME, i.e. time to spend in OpenCL device on one work chunk. On a desktop computer, 1 second will make your GUI unresponsive. Depending on your GPU, you might also run into an OpenCL execution timeout, indicated by "out of ressources" error. In any of these cases reduce the CHUNKTIME to e.g.: python nsec3breaker.py optimal 0.15 0 The second numerical value is the SLEEPTIME, i.e. time to do nothing between two chunks. If GUI is unresponsive despite low CHUNKTIME, try setting SLEEPTIME to 0.01 or 0.1. If you have more than one OpenCL-capable device, see list of devices: python nsec3breaker.py list Use -p 0 and/or -d 0 to choose platform and/or device (not necessary if only one is available). If this has worked, check config file whether you're satisfied with the hash operations per second. The values should be nearly optimal, but you can try to fine-tune the config. Self-test: python nsec3breaker.py tests 4. Distributed Computing ------------------------ Register your host on our server: python client.py -r AnyMachineName The password token will be automatically generated and saved in config file. Start crunching hashes: python client.py -j 5. Contact ---------- Lorenz Schwittmann Matthäus Wander E-Mail: dnssec@vs.uni-due.de Web: http://dnssec.vs.uni-due.de/nsec3