Decompiling the software is probably easiest.
Passwords are typically hashed with many iterations (like 100,000) of the hash function to slow down brute-force attacks that are trying to guess the password. Typically the server-side hashing code looks like this:
hashval = password
count = 0
while(count++ < NUM_HASH_ITERATIONS):
hashval = sha1(hashval + salt)
return hashval
Depending on the software you are trying to break, you may be able to find the constant NUM_HASH_ITERATIONS
in a config file somewhere, otherwise you'd either need to decompile the binary for it, or brute-force it. I don't know if off-the-shelf software exists to brute-force the number of iterations, but typical values, but it wouldn't be too difficult or CPU-intensive since you just try hashing it, and if it doesn't match, hash it again up to some limit like 1 million
hashval = "password"
count = 0
while(count++ < 1000000):
hashval = sha1(hashval + salt)
if (hashval == "3a58f2b..."):
// We win!
that should run in a few minutes, and try it a bunch of times with different permutations for how the hash and salt are combined. Note that there are lots of things whose output looks the same as SHA1, so unless you know for a fact that it's SHA1, you may need to try those variants with MD5, SHA2-256, SHA2-384, SHA2-512, PBKDF2, BCRYPT, SCRYPT, ...