我收到了一封附有附件的电子邮件,这是一个zip文件。由于某种原因,电子邮件客户端没有将其作为单独的文件附加,只是将其作为电子邮件中的文本呈现。 zip文件没有其他副本。我试图恢复它,但不知道是否可能。电子邮件在文本中显示如下文件;
>Content-Type: application/x-zip-compressed; name="me.zip";
>
>Content-Disposition: attachment; filename="me.zip"
>
>Content-Transfer-Encoding: base64
>
>
>
>UEsDBBQAAQAIANeV9y5y6d5oG..... etc.
它只是随机字母延续了很久。有谁知道是否有可能恢复这样的文件?
感谢您的任何指示。
答案 0 :(得分:2)
它是一个base64编码文件,你可以简单地解码base64编码的字符并将结果输出到一个文件(因为它是加密的,所以它将是二进制数据,所以看起来会更奇怪)。
线索位于Content-Transfer-Encoding
标题中。
答案 1 :(得分:0)
我使用此处的代码来解决此问题。在线base64解码器无法正常工作,但它通过此代码段工作。只需复制和粘贴即可,无需修改;
http://msdn.microsoft.com/en-us/library/system.convert.frombase64string%28v=vs.110%29.aspx
public void DecodeWithString() {
System.IO.StreamReader inFile;
string base64String;
try {
char[] base64CharArray;
inFile = new System.IO.StreamReader(inputFileName,
System.Text.Encoding.ASCII);
base64CharArray = new char[inFile.BaseStream.Length];
inFile.Read(base64CharArray, 0, (int)inFile.BaseStream.Length);
base64String = new string(base64CharArray);
}
catch (System.Exception exp) {
// Error creating stream or reading from it.
System.Console.WriteLine("{0}", exp.Message);
return;
}
// Convert the Base64 UUEncoded input into binary output.
byte[] binaryData;
try {
binaryData =
System.Convert.FromBase64String(base64String);
}
catch (System.ArgumentNullException) {
System.Console.WriteLine("Base 64 string is null.");
return;
}
catch (System.FormatException) {
System.Console.WriteLine("Base 64 string length is not " +
"4 or is not an even multiple of 4." );
return;
}
// Write out the decoded data.
System.IO.FileStream outFile;
try {
outFile = new System.IO.FileStream(outputFileName,
System.IO.FileMode.Create,
System.IO.FileAccess.Write);
outFile.Write(binaryData, 0, binaryData.Length);
outFile.Close();
}
catch (System.Exception exp) {
// Error creating stream or writing to it.
System.Console.WriteLine("{0}", exp.Message);
}
}