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 4d31e4d6ce
Merge pull request #3846 from philsmd/31900_verify_fix
10 months ago
..
README.md Fix some typos 11 months ago
m00000.pm
m00010.pm
m00011.pm
m00012.pm
m00020.pm
m00021.pm
m00022.pm
m00023.pm
m00024.pm
m00030.pm
m00040.pm
m00050.pm
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
m00610.pm
m00620.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
m02630.pm Added hash-mode: md5(md5($pass.$salt)) 12 months ago
m02711.pm
m02811.pm
m03000.pm
m03100.pm
m03200.pm
m03500.pm
m03610.pm
m03710.pm
m03711.pm
m03730.pm verify test fix for -m 3730 = md5($s1.uc(md5($s2.$p))) 10 months ago
m03800.pm
m03910.pm
m04010.pm
m04110.pm
m04300.pm
m04400.pm
m04410.pm
m04420.pm Added hash-mode: md5(sha1($pass.$salt)) 12 months ago
m04430.pm Added hash-mode: md5(sha1($salt.$pass)) 12 months ago
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
m06050.pm
m06060.pm
m06100.pm
m06300.pm
m06400.pm
m06500.pm
m06600.pm
m06700.pm
m06800.pm verify test fix for -m 6800 = LastPass sniffed 10 months ago
m06900.pm
m07000.pm
m07100.pm
m07200.pm
m07300.pm
m07350.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 Fix some typos 11 months ago
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
m11600.pm
m11700.pm
m11750.pm
m11760.pm
m11800.pm
m11850.pm
m11860.pm
m11900.pm Fix some typos 11 months ago
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 verify test fix for -m 13400/-m 29700 10 months ago
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
m15310.pm
m15400.pm
m15500.pm
m15600.pm
m15700.pm
m15900.pm
m15910.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
m20712.pm Added hash-mode: RSA Security Analytics / NetWitness (sha256) 1 year ago
m20720.pm
m20800.pm
m20900.pm
m21000.pm
m21100.pm
m21200.pm
m21300.pm
m21310.pm Added hash-mode: md5($salt1.sha1($salt2.$pass)) 1 year ago
m21400.pm Fix missing interpreter in m21400.pm 1 year ago
m21420.pm
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 Fix some typos 11 months ago
m22921.pm Fix some typos 11 months ago
m22931.pm Fix some typos 11 months ago
m22941.pm Fix some typos 11 months ago
m22951.pm Fix some typos 11 months ago
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 Fix some typos 11 months ago
m24420.pm Fix some typos 11 months ago
m24500.pm
m24600.pm
m24700.pm
m24800.pm
m24900.pm
m25000.pm
m25100.pm
m25200.pm
m25300.pm
m25400.pm Fix some typos 11 months ago
m25500.pm
m25600.pm
m25700.pm Fix some typos 11 months ago
m25800.pm
m25900.pm
m26000.pm
m26100.pm
m26200.pm
m26300.pm
m26401.pm
m26402.pm
m26403.pm
m26500.pm
m26600.pm
m26610.pm
m26700.pm
m26800.pm
m26900.pm
m27000.pm
m27100.pm
m27200.pm
m27300.pm
m27400.pm
m27500.pm
m27600.pm
m27700.pm
m27800.pm
m27900.pm
m28000.pm
m28100.pm Fix some typos 11 months ago
m28200.pm
m28300.pm
m28400.pm
m28501.pm Fix some typos 11 months ago
m28502.pm Fix some typos 11 months ago
m28503.pm Fix some typos 11 months ago
m28504.pm Fix some typos 11 months ago
m28505.pm Fix some typos 11 months ago
m28506.pm Fix some typos 11 months ago
m28600.pm
m28700.pm
m28800.pm
m28900.pm
m29000.pm
m29100.pm
m29200.pm
m29600.pm
m29700.pm verify test fix for -m 13400/-m 29700 10 months ago
m29800.pm
m29910.pm
m29920.pm
m29930.pm
m29940.pm
m30420.pm
m30500.pm
m30600.pm
m30700.pm verify test fix for -m 30700 = Anope IRC Services 10 months ago
m30901.pm
m30902.pm
m30903.pm
m30904.pm
m30905.pm
m30906.pm
m31000.pm
m31200.pm
m31300.pm
m31400.pm
m31500.pm
m31600.pm
m31700.pm
m31800.pm
m31900.pm Merge pull request #3846 from philsmd/31900_verify_fix 10 months ago
m32000.pm
m32010.pm
m32020.pm
m32030.pm
m32031.pm
m32040.pm
m32041.pm
m32050.pm
m32060.pm
m32070.pm
m32100.pm verify fix for -m 32100=Kerberos 5,etype 17,AS-REP 10 months ago
m32200.pm verify fix for -m 32200=Kerberos 5,etype 18,AS-REP 10 months ago
m32300.pm Added hash-mode: Empire CMS (Admin password) 1 year ago
m32410.pm Added hash-mode: sha512(sha512($pass).$salt) 1 year ago
m32420.pm Added hash-mode: sha512(sha512_bin($pass).$salt) 12 months ago
m32600.pm Renamed hash-mode 6150 to 32600 11 months 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-insensitivity), the test module can provide an optional function module_preprocess_hashlist. It receives 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 slightly 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