Hashcat can also produce lists for brute forcing using the -a 3 flag. If no hash is provided, then a simple list will be produced.

# Produce a list of 4-digit PINs
#
hashcat -a 3 ?d?d?d?d —stdout
 
# Crack an MD5 hash of a 4-digit PIN using brute-forcing
#
hashcat -a 3 -m 0 $MD5_HASH ?d?d?d?d

The hashcat --help command will display all available character sets (the d in the above example).