You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hashcat/tools/test_modules
Jens Steube 8867da9122
Add missing unit test and docs entry for -m 21420
3 years ago
..
README.md
m00000.pm
m00010.pm
m00011.pm
m00012.pm
m00020.pm
m00021.pm
m00022.pm
m00023.pm
m00024.pm
m00030.pm
m00040.pm
m00050.pm Fixed maximum password length limit which was announced as 256 but actually was 255 5 years ago
m00060.pm
m00070.pm
m00100.pm
m00101.pm
m00110.pm
m00111.pm
m00112.pm
m00120.pm
m00121.pm
m00122.pm
m00124.pm
m00125.pm
m00130.pm
m00131.pm
m00132.pm
m00133.pm
m00140.pm
m00141.pm
m00150.pm
m00160.pm
m00170.pm
m00200.pm
m00300.pm
m00400.pm
m00500.pm
m00600.pm
m00900.pm
m01000.pm
m01100.pm
m01300.pm
m01400.pm
m01410.pm
m01411.pm
m01420.pm
m01421.pm
m01430.pm
m01440.pm
m01441.pm
m01450.pm
m01460.pm
m01470.pm
m01500.pm
m01600.pm
m01700.pm
m01710.pm
m01711.pm
m01720.pm
m01722.pm
m01730.pm
m01731.pm
m01740.pm
m01750.pm
m01760.pm
m01770.pm
m01800.pm
m02100.pm
m02400.pm
m02410.pm
m02500.pm
m02600.pm
m02611.pm
m02612.pm
m02711.pm
m02811.pm
m03000.pm
m03100.pm
m03200.pm
m03500.pm
m03710.pm
m03711.pm
m03800.pm
m03910.pm
m04010.pm
m04110.pm
m04300.pm
m04400.pm
m04500.pm
m04510.pm
m04520.pm
m04521.pm
m04522.pm
m04700.pm
m04710.pm
m04711.pm
m04800.pm
m04900.pm
m05000.pm
m05100.pm
m05300.pm
m05400.pm
m05500.pm
m05600.pm
m05700.pm
m05800.pm
m06000.pm
m06100.pm
m06300.pm
m06400.pm
m06500.pm
m06600.pm
m06700.pm
m06800.pm
m06900.pm
m07000.pm cosmetic: minor code style fixes 4 years ago
m07100.pm
m07200.pm
m07300.pm
m07400.pm
m07401.pm
m07500.pm
m07700.pm
m07701.pm
m07800.pm
m07801.pm
m07900.pm
m08000.pm
m08100.pm
m08200.pm
m08300.pm
m08400.pm
m08500.pm
m08600.pm
m08700.pm
m08900.pm
m09100.pm
m09200.pm
m09300.pm
m09400.pm
m09500.pm
m09600.pm
m09700.pm
m09800.pm
m09900.pm
m10000.pm
m10100.pm
m10200.pm
m10300.pm
m10400.pm
m10500.pm
m10600.pm
m10700.pm
m10800.pm
m10810.pm
m10820.pm
m10830.pm
m10840.pm
m10870.pm
m10900.pm
m10901.pm
m11000.pm
m11100.pm
m11200.pm
m11300.pm
m11400.pm
m11500.pm Fixed unit test initialization value for -m 11500 3 years ago
m11600.pm
m11700.pm
m11750.pm
m11760.pm
m11800.pm
m11850.pm
m11860.pm
m11900.pm
m12000.pm
m12001.pm
m12100.pm
m12200.pm
m12300.pm
m12400.pm
m12500.pm
m12600.pm
m12700.pm
m12800.pm
m12900.pm
m13000.pm
m13100.pm
m13200.pm
m13300.pm
m13400.pm
m13500.pm
m13600.pm
m13800.pm
m13900.pm
m14000.pm
m14100.pm
m14400.pm
m14700.pm
m14800.pm
m14900.pm
m15000.pm
m15100.pm
m15200.pm
m15300.pm
m15400.pm
m15500.pm
m15600.pm
m15700.pm
m15900.pm
m16000.pm
m16100.pm
m16200.pm
m16300.pm
m16400.pm
m16500.pm
m16600.pm
m16700.pm
m16800.pm
m16900.pm
m17300.pm
m17400.pm
m17500.pm
m17600.pm
m17700.pm
m17800.pm
m17900.pm
m18000.pm
m18100.pm
m18200.pm
m18300.pm
m18400.pm
m18500.pm
m18600.pm
m18700.pm
m18800.pm
m18900.pm
m19000.pm
m19100.pm
m19200.pm
m19300.pm
m19500.pm
m19600.pm
m19700.pm
m19800.pm
m19900.pm
m20011.pm
m20012.pm
m20013.pm
m20200.pm
m20300.pm
m20400.pm
m20500.pm
m20510.pm
m20600.pm
m20710.pm
m20711.pm
m20720.pm
m20800.pm
m20900.pm
m21000.pm
m21100.pm
m21200.pm
m21300.pm
m21400.pm
m21420.pm Add missing unit test and docs entry for -m 21420 3 years ago
m21500.pm
m21501.pm
m21600.pm
m21700.pm
m21800.pm
m22000.pm
m22100.pm
m22200.pm
m22300.pm
m22301.pm
m22400.pm
m22500.pm
m22600.pm
m22700.pm
m22911.pm
m22921.pm
m22931.pm
m22941.pm
m22951.pm
m23001.pm
m23002.pm
m23003.pm
m23100.pm
m23200.pm
m23300.pm
m23400.pm
m23500.pm
m23600.pm
m23700.pm
m23900.pm
m24100.pm
m24200.pm
m24300.pm
m24410.pm
m24420.pm
m24500.pm
m24600.pm
m24700.pm
m24800.pm
m24900.pm
m25000.pm
m25100.pm
m25200.pm
m25300.pm
m25400.pm make sure $u_pass is initialized 3 years ago
m25500.pm
m25600.pm
m25700.pm Fix self-test functionality if FIXED_LOCAL_SIZE_COMP is used 3 years ago
m25800.pm
m25900.pm
m26000.pm
m26100.pm
m26200.pm
m26300.pm
m26401.pm
m26402.pm
m26403.pm
m26500.pm
m26600.pm metamask: double the CT len again 3 years ago
m26700.pm move to 27400, fix unit test 3 years ago
m26800.pm
m26900.pm tests: fixes -m 26900 verify 3 years ago
m27000.pm tests: fixes -m 27000 verify 3 years ago
m27100.pm whitespace and code style fixes 3 years ago
m27200.pm Fix errors and make recommended changes, set pw_max to 9 for opti kernel 3 years ago
m27300.pm rename to 27300, reduced the amount of memory allocated in gpu for SNMPv3 HMAC-SHA512-384 3 years ago
m27400.pm move to 27400, fix unit test 3 years ago
m27500.pm add more checks in 27500/27600 module_verify_hash 3 years ago
m27600.pm add more checks in 27500/27600 module_verify_hash 3 years ago
m27700.pm fixes #2674: added -m 27700 = MultiBit Classic .wallet (scrypt) 3 years ago
m27900.pm Added missing unit-test for -m 27900 3 years ago
m28000.pm Added hash-mode: CRC64Jones 3 years ago
m28100.pm tests: get rid of wrong modules from -m 28100 3 years ago
m28200.pm Added hash-mode: Exodus Desktop Wallet (scrypt) 3 years ago
m28300.pm Prepare TS3 plugin: test module 3 years ago

README.md

Hashcat test modules

Each module provides the functions module_constraints, module_generate_hash and module_verify_hash.

  • The module_constraints function should return the minimum and maximum length of the password, salt and the combination of password and salt in following order: password (pure), salt (pure), password (optimized), salt (optimized) and combination (optimized). Each pair should be set to -1 if the hash mode is not supporting the appropriate field. For example, if a hash-mode does not support a salt, it should be set to -1. The last field (combination) is important if the password and the salt is stored in the same buffer in the kernel (typically raw hashes only).
  • The first parameter to module_generate_hash is the password, which can be either in ASCII or binary (packed) form. The second parameter is the salt *which can be undefined for unsalted hash modes).
  • The module_verify_hash function accepts a line from the cracks file, without the newline characters.

During single and passthrough tests the module_generate_hash function must provide random values (e.g. salt) for hash generation if necessary. The test.pl script offers a few handy functions like random_hex_string, random_numeric_string and random_bytes. You can implement your own salt generation functions, if your mode has specific requirements.

During verify tests the module_verify_hash function must parse the hash:password line and calculate a hash by passing all necessary data to module_generate_hash. How you pass it is up to you, as long as the first parameter is the password.

Important: You have to call pack_if_HEX_notation as soon as you have parsed the password, or your tests will fail on passwords in the $HEX[...] format.

If the algorithm has ambiguous hashes (e.g. partial case-insensetivity), the test module can provide an optional function module_preprocess_hashlist. It recieves a reference to the hashlist array and can unify the hashes in a way that guarantees the match with the output of module_verify_hash.

Examples

  • For the most basic test modules, see m00000.pm and m00100.pm
  • For the basic salted hash tests, see m00110.pm and m00120.pm
  • For some sligthly more complex modules with PBKDF2 and encryption, see m18400.pm and m18600.pm
  • For a test module with hashlist preprocessing and a custom salt generation algorithm, see m05600.pm