There's currently no support for arbitrary iteration in hashcat.
The iterations that hashcat does support are either only exactly as shown in the hash type:
2600 | md5(md5($pass))
4500 | sha1(sha1($pass))
.... or else - for the subset of hashes that natively support it - as embedded in the hashes themselves (rounds=10000
, etc.)
It sounds like your salt is only concatenated once, not on every iteration? If so, you can concatenate it manually - and then you only need to find a tool that has support for simple iterations.
If you know enough C, you could add your rounds to the appropriate hashcat module.
You can also do arbitrary iteration with MDXfind, using its -i
parameter.
$ cat test.hash
2f9b999e6ec7fe0964bc3827baf33eda331f154056c9c9686bcd77c5395ec597
$ cat test.list
PASSWORDPARTsaltpart
# MDXfind hash type (-h) is a rough regex filter, so you have to anchor the regex
# at both ends to only include exactly that hashtype (and not other hash types
# that happen to include the string 'SHA256')
$ mdxfind -h '^SHA256$' -f test.hash -i 10000 test.list
Iterations set to 10000
Working on hash types: SHA256
Took 0.00 seconds to read hashes
Searching through 1 unique hashes from test.hash
Maximum hash chain depth is 1
Minimum hash length is 64 characters
Using 4 cores
SHA256x10000 2f9b999e6ec7fe0964bc3827baf33eda331f154056c9c9686bcd77c5395ec597:PASSWORDPARTsaltpart
Done - 1 threads caught
1 lines processed in 0 seconds
1.00 lines per second
0.01 seconds hashing, 10,000 total hash calculations
0.85M hashes per second (approx)
1 total files
1 SHA256x10000 hashes found
1 Total hashes found