SpinRite

SpinRite is a computer software program for scanning magnetic data storage devices such as hard disks, recovering data from them and refreshing their surfaces.
When the program encounters a sector with errors that cannot be corrected by the disk drive’s error-correcting code, it tries to read the sector up to 2000 times, in order to determine, by comparing the successive results, the most probable value of each bit.

http://www.grc.com/sr/spinrite.htm