I had the idea to guess every salt and the number of iterations, but using your original known passphrase, so to recover/rebuild the .encfs6.xml
file but without the missing <encodedKeyData>
... I tried a test, using the useful-sounding option --anykey
, it should:
--anykey
Turn off key validation checking. This allows EncFS to be used with secondary passwords. This could be used to store a separate set of files in
an encrypted filesystem. EncFS ignores files which do not decode properly, so files created with separate passwords will only be visible when
the filesystem is mounted with their associated password.
.encfs6.xml contains info like this:
<encodedKeySize>44</encodedKeySize>
<encodedKeyData>
t+mDmS6qiUwJcUY2rX2oj6jMlfQ3QIiGPG2BRZspTUZiUOcKBxIq70uVILk=
</encodedKeyData>
<saltLen>20</saltLen>
<saltData>
9pmECBnKHDXpW+3E+Z7WO9xWwls=
</saltData>
<kdfIterations>147015</kdfIterations>
<desiredKDFDuration>500</desiredKDFDuration>
I thought it might be possible to use --anykey
even if it did not match the encodedKeyData (changing it to different data) but still read the original files using the original passphrase. As in, you remember/guess all the other data except the encodedKeyData. So I created a new EncFS folder & test files, and tried editing the .encfs6.xml
file, changing or deleting the <encodedKeyData>...</encodedKeyData>
entry.
It didn't work, with the wrong data it would quietly mount, but no files were decrypted. Deleting the entry failed with this error:
terminate called after throwing an instance of 'boost::archive::iterators::dataflow_exception'
what(): attempt to decode a value not in base64 char set
Aborted
The only use for --anykey
appears to "hide" some files using a different password, I'm guessing using the filename encryption, but still needs the original encodedKeyData.
And, changing the <saltData>
by one character lets encfs --anykey
mount successfully with any passphrase too, but even using the original passphrase NO files are decrypted, and no error is given.
So, you 100% NEED the .encfs6.xml
file, it's like a keyfile with an encrypted key (similar to a LUKS header I think).