2012-06-21 3 views
0

У меня отправлено электронное письмо с прикрепленным файлом, который был zip-файлом. По какой-то причине клиент электронной почты не прикреплял его как отдельный файл и просто отображал его как текст в письме. Нет другой копии zip-файла. Я пытаюсь восстановить его, но не знаю, возможно ли это. Адрес электронной почты показывает такой файл в тексте;Проблема с форматом файлов (открытый текст)

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

Это просто продолжается со случайными буквами на века. Кто-нибудь знает, возможно ли вообще восстановить такой файл?

Спасибо за любые указатели.

+0

я бы просто спросить человека, чтобы отправить почтовый индекс снова ... правильно. –

+0

сделать пустой .txt файл, вставить в него текст UEsD .... Переименуйте файл в .zip и посмотрите, работает ли он? Я понятия не имею, но я бы дал ему это сделать. – blitzen

ответ

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); 
    } 
} 
2

Это кодированный файл base64, вы можете просто декодировать символы с кодировкой base64 и выводить результат в файл (который будет бинарным, поскольку он зашифрован, так что будет выглядеть еще более странным).

Подсказка находится в заголовке Content-Transfer-Encoding.

+0

Ну, zip-файл зашифрован, поэтому вы говорите, что я могу просто декодировать это, а затем вывести его в файл и переименовать в .zip? – creatiive

+0

@creative В теории, да, это то, что вы бы сделали. –

+0

Я скопировал текст на сайт http://www.base64decode.org/. Затем я скопировал перевод и сохранил его в виде текстового файла, а затем переименовал его в .zip. Вы можете видеть, что декодирование base64, похоже, сработало, потому что, глядя на текст, имена файлов в zip есть, чтобы их увидеть! Но когда я пытаюсь открыть zip, он говорит «неожиданный конец архива». Чувствуете себя так близко, потому что я могу видеть имена файлов ... но, возможно, им не хватает каких-либо концевых символов в файле? – creatiive

 Смежные вопросы

  • Нет связанных вопросов^_^