Linux with unzip is worth a try in such cases. It seems to be very error-tolerant.
I learned that from a corrupted zipfile (a few bits got lost while copying it to a usb-stick) winzip failed with an error because the checksum didn't match. unzip didn't care at all all files were decompressed and to my surprise each was correct. (Maybe only the checksum got corrupted?!)
The other case was on the pythonchallenge - there was a corrupted zipfile which you were supposed to heal. I didn't even recognized it was corrupted - and wondered where the obstacle in the challenge was *g*.
So if you design a challenge with a corrupted zipfile - test if unzip also fails, or some users have an unfair advantage .
There are 10 types of people in the world: Those who understand binary and those who don't