FREEWARE (GPL)
(c) Copyright Robin Hill 2004
Email: filerepair@robinhill.me.uk
FileRepair is an application to compare files across a network and, if necessary, modify one so that it is identical with the second.
This was written after the experience of using (and helping others to use) WinCRC. While a very good program functionally, it lacked a lot in usability. Since development on this seemed to have stopped I decided to write my own version. Since there was no source code available for WinCRC I started from scratch, which means FileRepair is not compatible with WinCRC.
This is the end result. The program performs not only the same file repair functionality as WinCRC but also adds MD5 and eDonkey hashes for quick checking of files after repair. In addition the repair process is far faster than WinCRC and, with feedback on progress, far easier to use.
I consider this software to be stable - I've tested it fairly extensively and it has been checked for memory leaks during normal operation using valgrind.
There are both Windows and Linux versions available which use the same communications protocol so can be used in combination. I've tested the Windows version on 98, 2000 and XP.
All downloads can be obtained from the SourceForge project files section.
There are up to 6 archives available for each release:
filerepair-x.y.z-src.tar.gz | Cross-platform source code |
filerepair-x.y.z.zip | Windows GUI version |
filerepair-x.y.z.tar.gz | Linux CLI version (dynamically linked) |
filerepair-x.y.z-static.tar.gz | Linux CLI version (statically linked) |
xfilerepair-x.y.z.tar.gz | Linux GUI version (dynamically linked) |
xfilerepair-x.y.z-static.tar.gz | Linux GUI version (statically linked) |
Windows: |
|
Linux: |
|
It can perform the following tasks:
The eDonkey hash (MD4 based) can be used to verify files against hashes posted on eDonkey sites. MD5 is the more commonly used hash for file verification. CRC32 is the hash used in .sfv files and elsewehere online. TTH hashes are used in newer versions of DC++, Shareaza and other P2P applications.All of these can be used to check whether a downloaded file is identical to the source file.
The CRC file is a listing of CRC checksums for every block in the file. This can be used to check how badly corrupted a download is, and thus whether it is worth fixing.
This is done in a client-server configuration, where the server has a verified correct version of the file. The client connects to the server and uploads a CRC list. The server checks this against it's own and transfers correct versions of any corrupt blocks to the client. Each block is checked again by the client before the file is updated.
Now also works in reverse - once the initial client-server connection is made, the client & server swap roles so that the server's version of the file is repaired based on the client's file. This makes it possible for those behind firewalls or on NATed connections to help with repairs.
The communications protocol is very simple and will be released at a later date, once I've documented it. Otherwise you can figure it out from the source.
The application should be able to deal with any size files the operating system is capable of using.
There's also a problem with wxWindows 2.4.0 on Windows (compiled with Borland C++ 5.5) where the network functions aren't working properly (not receiving socket connections, failing to send data, etc). I've now included a replacement for the problem file which works around the issue.
The code can probably be improved, I'm no expert in C++.
Please let me know of any problems or suggestions at the above email address.