Fix m 60 a 0 by making modified variable non-const
[hashcat.git] / docs / changes.txt
1 * changes v3.00 -> v3.xx:
2
3 ##
4 ## Improvements
5 ##
6
7 - Make Linux build POSIX compatible; Also allow it to actually compile on musl-libc systems
8 - Add support to compile on FreeBSD
9 - Make use of cl_context_properties[] to clCreateContext(), even if OpenCL specification allow the use of NULL, some runtimes fail without
10 - The Time.Estimated attribute in status display should also show --runtime limit if user set it
11 - Fix some strict aliasing rule violation on older compilers
12 - Fix some variable initializers on older compilers
13 - Replace DARWIN macro with compiler predefined macro __APPLE__
14 - Replace LINUX macro with compiler predefined macro __linux__
15 - Allow the use of enc_id == 0 in hash-mode 10600 and 10700 as it takes no part in the actual computation
16 - Get rid of exit() calls in OpenCL wrapper library with the goal to have a better control which error can be ignored under special circumstances
17 - Do not error and exit if an OpenCL platform has no devices, just print a warning and continue with the next platform
18 - Workaround for OpenCL runtimes which do not accept -I parameter in the OpenCL kernel build options even if this is an OpenCL standard option
19 - Workaround for OpenCL runtimes which do accept -I parameter in the OpenCL kernel build options, but do not allow quotes
20 - Output cracked hashes on Windows using \r\n and not \n
21 - Replace RegGetValue() with RegQueryValueEx() to enable Windows XP 32 bit compatibility
22 - Slightly increased NVidias rule-processing performance by using generic instructions instead of byte_perm()
23 - Add support for @ rule (RULE_OP_MANGLE_PURGECHAR) to use on GPU
24
25 ##
26 ## Bugs
27 ##
28
29 - Fixed a bug where hashcat is suppressing --machine-readable output in the final status update
30 - Fixed a bug where hashcat did not check the return of realpath() and crashes uncontrolled if the path does not exist
31 - Fixed a bug where hashcat crashes for accessing deallocated buffer if user spams "s" shortly before hashcat shuts down
32 - Fixed a bug where hashcat crashes in case of a scrypt P setting > 1
33 - Fixed a bug where hashcat did not correctly use the newly cracked plains whenever --loopback or the induction folder was used
34 - Fixed a bug where hashcat did not correctly remove hashes of type WPA/WPA2 even if present in potfile
35 - Fixed a bug where hashcat reported an invalid password for a zero-length password in LM
36 - Fixed a bug where hashcat did not take into account how long it takes to prepare a session when auto-aborting with --runtime is in use
37
38 * changes v2.01 -> v3.00:
39
40 This release markes the fusion of "hashcat" and "oclHashcat" into "hashcat".
41 It combines all features of all hashcat projects in one project.
42
43 ##
44 ## Features
45 ##
46
47 - Support for Apple OpenCL runtime
48 - Support for NVidia OpenCL runtime (replaces CUDA)
49 - Support for Mesa (Gallium) OpenCL runtime
50 - Support for pocl OpenCL runtime
51 - Support for Khronos' OSS OpenCL reference implementation for building
52 - Support to utilize OpenCL devices-types other than GPU, ex: CPU and FPGA
53 - Support to utilize multiple different OpenCL platforms in parallel, ex: AMD + NV
54 - Support to utilize multiple different OpenCL device-types in parallel, ex: GPU + CPU
55 - Added option --opencl-platform to select a specific OpenCL platform
56 - Added option --opencl-device-types select specific OpenCL device types
57 - Added option --opencl-vector-width to override automatically selected vector-width size
58 - Added makefile native compilation target
59 - Added makefile install and uninstall targets
60 - Added autotuning engine and user-configurable tuning database
61 - Added current engine clock, current memory clock and pci-e lanes to the status display
62 - Added support for --gpu-temp-retain for NVidia GPU, both Linux and Windows
63 - Added execution timer of the running kernel to the status display
64 - Added command prompt to quit at next restore checkpoint
65 - Added human-readable error message for the OpenCL error codes
66 - Added option --potfile-path to override potfile path
67 - Added option --veracrypt-keyfile to set Keyfiles used, can be multiple
68 - Added option --veracrypt-pim to set the VeraCrypt personal iterations multiplier
69 - Added option --machine-readable for easier parsing of output
70 - Added option --powertune-enable to work with NVidia devices as well, not just AMD
71 - Added option --stdout to print candidates instead of trying to crack a hash
72
73 ##
74 ## Algorithms
75 ##
76
77 - Added new hash-mode   125 = ArubaOS
78 - Added new hash-mode 12900 = Android FDE (Samsung DEK)
79 - Added new hash-mode 13000 = RAR5
80 - Added new hash-mode 13100 = Kerberos 5 TGS-REP etype 23
81 - Added new hash-mode 13200 = AxCrypt
82 - Added new hash-mode 13300 = AxCrypt in memory SHA1
83 - Added new hash-mode 13400 = Keepass 1 (AES/Twofish) and Keepass 2 (AES)
84 - Added new hash-mode 13500 = PeopleSoft PS_TOKEN
85 - Added new hash-mode 13600 = WinZip
86 - Added new hash-mode 137** = VeraCrypt
87 - Added new hash-mode 13800 = Windows 8+ phone PIN/Password
88
89 ##
90 ## Performance
91 ##
92
93 - Full Table: https://docs.google.com/spreadsheets/d/1B1S_t1Z0KsqByH3pNkYUM-RCFMu860nlfSsYEqOoqco/edit#gid=0
94
95 ##
96 ## Improvements
97 ##
98
99 - Reordering of files to help integration into linux distributions ~/.hashcat etc
100 - Use a profile directory to write temporary files (session, potfile etc.)
101 - Workaround depencies on AMD APP-SDK AMD ADL, NV CUDA-SDK, NV ForceWare, NVML and NVAPI; they are no longer required
102 - Load external libraries dynamic at runtime instead of link them static at compile-time
103 - Benchmark accuracy improved; Is now on par to: singlehash -a 3 -w 3 ?b?b?b?b?b?b?b
104 - Benchmark no longer depends on a fixed time
105 - Removed option --benchmark-mode, therefore support --workload-profile in benchmark-mode
106 - Enabled support of --machine-readable in combination with --benchmark for automated benchmark processing
107 - Replaced --status-automat entirely with --machine-readable to make it more consistent among benchmark and non-benchmark mode
108 - Extended support from 14 to 255 functions calls per rule
109 - Extended password length up to 32 for 7zip
110 - Extended salt length up to 55 for raw hash types, eg: md5($pass.$salt)
111 - Extended version information
112 - Removed some duplicate rules in T0XlCv1, d3ad0ne and dive
113 - Redesigned changes.txt layout
114 - Redesigned --help menu layout
115
116 ##
117 ## Bugs
118 ##
119
120 - Fixed a bug in speed display: In some situation, especially with slow hashes or lots of salts, it showed a speed of 0H/s
121 - Fixed a bug in restore handling: user immediately aborting after restart broke the restore file
122 - Fixed a bug in line counter: conditional jump or move depends on an uninitialised value
123 - Fixed a bug in rule-engine for NVidia devices: code for left- and right-shift were switched
124 - Fixed a bug in dive.rule: rules were not updated after the function 'x' was renamed to 'O'
125 - Fixed a bug in memory allocation "OpenCL -4 error": used unitialized value in a special situation
126 - Fixed a bug in memory handling: heap buffer overflow
127 - Fixed a bug in memory handling: out of bounds access
128 - Fixed a bug in implementation of DCC2: forced default iteration count for hashes to 10240
129 - Fixed a bug in implementation of WPA/WPA2: MAC and nonce stay one their original position as in the hccap file
130 - Fixed a bug in implementation of GOST R 34.11-94: zero length passwords were not cracked
131
132 ##
133 ## Technical
134 ##
135
136 - Removed deprecated GCC version check requirement
137 - Removed NPROCS from Makefile, let make automatically detect the optimal number of parallel threads
138 - Dropped all C++ overloading functions to normal function which helps support more OpenCL platforms
139 - Renamed functions in common.h to emphasize their purpose
140 - Refactorized fast-hash kernels to enable SIMD on all OpenCL platforms
141 - Refactorized SIMD handling: SIMD the inner-loop not the outer-loop to save registers
142 - Workaround missing clEnqueueFillBuffer() support in certain OpenCL runtimes
143 - Added amd_bytealign() support in non-AMD OpenCL runtimes
144 - Added amd_bfe() support in non-AMD OpenCL runtimes
145 - Added several macros to allow writing optimized code for the different OpenCL platforms
146 - Replaced typedef for bool with stdbool.h
147 - Added special DEBUG environment variables to the makefile
148 - Hashcat now acquires an exclusive lock before writing to any file
149 - Changed buffers to not use same buffer for both input and output at the same time with snprintf()
150 - Check for allocatable device-memory depending on kernel_accel amplifier before trying to allocate
151 - Added additional check for max. ESSID length to prevent possible crashes
152 - Use a GCC equivalent for __stdcall where applicable
153 - Synchronize maximum output line size with input line size
154 - Increased maximum hash line size to 0x50000
155 - Run weak-hash checks only in straight-attack mode, this greatly reduces code complexity
156 - Restrict loopback option to straight attack-mode
157 - Moved rules_optimize to hashcat-utils
158 - Stick to older libOpenCL in binary package to avoid errors like this: version `OPENCL_2.0' not found
159 - Tightened hash parser for several algorithms
160 - Updated old RC4 code in Kerberos 5
161 - Limited the salt length of Juniper Netscreen/SSG (ScreenOS) hashes to 10
162 - Updated algorithm used to automatically select an ideal --scrypt-tmto value
163 - Renamed option --gpu-accel to --kernel-accel
164 - Renamed option --gpu-loops to --kernel-loops
165 - Renamed option --gpu-devices to --opencl-devices
166 - Added inline declaration to functions from simd.c, common.c, rp.c and types_ocl.c to increase performance
167 - Dropped static declaration from functions in all kernel to achieve OpenCL 1.1 compatibility
168 - Added -cl-std=CL1.1 to all kernel build options
169 - Created environment variable to inform NVidia OpenCL runtime to not create its own kernel cache
170 - Created environment variable to inform pocl OpenCL runtime to not create its own kernel cache
171 - Dropped special 64-bit rotate() handling for NV, it seems that they've added it to their OpenCL runtime
172 - Completely get rid of HAVE_ADL, HAVE_NVML and HAVE_NVAPI in sources
173 - Replaced NVAPI with NVML on windows