Is there a open source or free program that can repair an external hard disk drive?

I have connected in my desktop (vista machine) an external drive, but i think some sectors are bad on this drive, i need to access if possible some important files from it. Is there a free or open source tool that can try to repair or that would allow me to access the files on that drive? Thanks