0

zipファイルが添付されたメールを送信しました。何らかの理由で、電子メールクライアントはそれを個別のファイルとして添付せず、単に電子メールのテキストとしてレンダリングしました。zipファイルの他のコピーはありません。私はそれを回復しようとしていますが、それが可能かどうかわかりません。電子メールには、このようなファイルがテキストで表示されます。

>Content-Type: application/x-zip-compressed; name="me.zip";
>
>Content-Disposition: attachment; filename="me.zip"
>
>Content-Transfer-Encoding: base64
>
>
>
>UEsDBBQAAQAIANeV9y5y6d5oG..... etc.

それは何年にもわたってランダムな文字で続きます。そのようなファイルを回復することが可能かどうか誰かが知っていますか?

ポインタをありがとう。

4

2 に答える 2

2

これは base64 でエンコードされたファイルです。base64 でエンコードされた文字を単純にデコードし、結果をファイルに出力できます (暗号化されているため、バイナリ データになるため、さらに奇妙に見えます)。

ヒントはContent-Transfer-Encodingヘッダーにあります。

于 2012-06-21T23:11:23.307 に答える
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);
   }
}
于 2014-07-22T12:54:45.623 に答える