I agree ophcrack is the most elegant, specially used with the proper rainbow table. I have a rainbow table that can crack a 20 character password. It requires an 8gig flash drive though. It can use the following characters
{space} 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~