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
philsmd 2bc126ac96
fixes #2067: 40-bit oldoffice false positive problem
4 years ago
..
README.md minor: fix type in README.md of test modules 4 years ago
m00000.pm
m00010.pm
m00011.pm
m00012.pm
m00020.pm
m00021.pm
m00022.pm
m00023.pm
m00030.pm
m00040.pm
m00050.pm
m00060.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
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
m01500.pm
m01600.pm
m01700.pm
m01710.pm
m01711.pm
m01720.pm
m01722.pm
m01730.pm
m01731.pm
m01740.pm
m01750.pm
m01760.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
m03710.pm
m03711.pm
m03800.pm
m03910.pm
m04010.pm
m04110.pm
m04300.pm
m04400.pm
m04500.pm
m04520.pm
m04521.pm
m04522.pm
m04700.pm
m04710.pm fix hash-mode 4710 module_constraints 5 years ago
m04711.pm Added hash-mode 4711, Huawei sha1(md5(pass).salt) 5 years ago
m04800.pm
m04900.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
m07100.pm
m07200.pm
m07300.pm
m07400.pm Added -m 7401 = MySQL $A$ (sha256crypt), closes #2305 4 years ago
m07401.pm Added -m 7401 = MySQL $A$ (sha256crypt), closes #2305 4 years ago
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 fixes #2067: 40-bit oldoffice false positive problem 4 years ago
m09900.pm
m10000.pm
m10100.pm
m10200.pm
m10300.pm
m10400.pm
m10500.pm
m10600.pm
m10700.pm
m10800.pm
m10900.pm
m10901.pm Rename 23911 to 10901 and populate salt->salt_buf[] 4 years ago
m11000.pm
m11100.pm
m11200.pm
m11300.pm
m11400.pm
m11500.pm
m11600.pm Add -m 11600 optimized kernel 4 years ago
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
m12600.pm
m12700.pm
m12800.pm
m12900.pm
m13000.pm
m13100.pm
m13200.pm
m13300.pm
m13400.pm fixes #2009: padding problem in -m 13400 tests 4 years ago
m13500.pm
m13600.pm fixes #2200: new WinZip tokenizer hex data length problem 5 years ago
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 Fix -m 15400 selftest-pair, benchmark-mask and unit-test 5 years ago
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 update constraints for m20600 test module 5 years ago
m20710.pm update AuthMe patch (3) 5 years ago
m20711.pm update AuthMe patch (3) 5 years ago
m20800.pm switch hash-mode from 4710 to 20800 5 years ago
m20900.pm switch hash-mode from 4410 to 20900 5 years ago
m21000.pm switch hash-mode from 1770 to 21000 5 years ago
m21100.pm switch hash-mode from 4720 to 21100 5 years ago
m21200.pm switch hash-mode from 4420 to 21200 5 years ago
m21300.pm switch hash-mode from 4430 to 21300 5 years ago
m21400.pm switch hash-mode from 1470 to 21400, cleanup credits/readme/changes txt 5 years ago
m21500.pm Fix some code in -m 21500 5 years ago
m21600.pm Fix -m 21600 default hash length 5 years ago
m21700.pm Added -m 21700 = Electrum 4 and -m 21800 = Electrum 5 5 years ago
m21800.pm tests: allow tests with 05 AND 04 in zlib header for electrum 5 5 years ago
m22000.pm Initial -m 22001 support 5 years ago
m22100.pm Update Bitlocker minimum password length 4 4 years ago
m22200.pm Added hash-mode: Citrix NetScaler (SHA512) 4 years ago
m22300.pm Added -m 22300 = sha256($salt.$pass.$salt) 4 years ago
m22301.pm tests: solve telegram format conflict with jtr 4 years ago
m22400.pm Fixes #2267: added support for -m 22400 = AES Crypt (SHA256) 4 years ago
m22500.pm Fixes #1538: Added -m 22500 = MultiBit Classic .key (MD5) 4 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