I have a corrupted wallet.dat that is unreadable by pywallet and db5.3-util.
Having a look in the corrupted wallet in a hex editor, its easy to find the plaintext pubkeys.
Is the structure of the dat file such that it is possible to copy/paste sections of the corrupted wallet so that the key is now part of a new wallet file?
edit - it also seems useful to ask if there is any other manual process for key recovery?